⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 非常完善的小型操作系统代码!是学习操作系统的最好的一个
💻 C
📖 第 1 页 / 共 3 页
字号:
			cls();
			closefile(f_ret); 
			display_cen(5,"请安装好打印纸");
			display_cen(6,"按任意键,重新操作");
			inkey(0);
			return;
		}
			trans.ticket_no = kpph + 1;
			if ( trans.ticket_no > 9999999 || trans.ticket_no < 0){
				trans.ticket_no = 1;
                         }
		        kpph = trans.ticket_no;
                	trans.void_flag = 0;
			trans.half_flag = 1;
			len=writefile(f_ret, LEN_Sale_Ticket, (char*)&trans);
			if ( len != LEN_Sale_Ticket ){
				cls();
                                closefile(f_ret);
				display_cen ( 4 , "流水文件系统出错" ) ;
				display_cen ( 5 , "不能正常工作");
				display_cen ( 6 , "按任意键将自动关机" ) ;
				systemsound ( 400 ) ;
				inkey(0);
				enable_poweroff();
				power_off();
			}
                        feed_printer(8);
			Void_Print(0);
		}
	}
	closefile(f_ret); 
}
void
Void_Print( int flag )
{
char	buffer[100];
char	buffer1[100];

	cls();
	display( 5, "    正在打印%07ld号车票",kpph);
	display_cen( 7, "请等待");
	init_printer( 640 );
	clear_printer();
	sprintf( buffer, "%16.16s%8.8s-%07ld", " ", drive.car_no ,trans.ticket_no);
	fill_ticket_dot(8, 0, buffer, DOT32);
	sprintf( buffer, "%-8.8s----%-8.8s  %5.5s次", Busman1.busman_name, trans.end_station,trans.bus_bc);
	fill_ticket_dot(12, 0, buffer, DOT40);
	print_amount(trans.bus_fare, buffer1);
	if ( trans.half_flag == 0 )
		sprintf( buffer, " 全  价:%12.12s",buffer1);
	else
		sprintf( buffer, " 半  价:%12.12s",buffer1);
	fill_ticket_dot(22, 10, buffer, DOT32);
	sprintf( buffer, "日期: %4.4s年%2.2s月%2.2s日 %2.2s时%2.2s分", trans.date_time,\
		trans.date_time+4, trans.date_time+6, trans.date_time+9, trans.date_time+11);
	fill_ticket_dot(33,1, buffer, DOT32);
	sprintf( buffer, "当日当次有效  售票员: %4.4s",  trans.busman);
        fill_ticket_dot(38,1,buffer ,DOT32);
	set_printer();
	init_printer( 0 );
        feed_printer(30);
	return;
}
void
Void_Up_Sale_Ticket_Data()
{
char	f_ret, buffer[20], jcjsd[8], in_st[6],rq[10];
int	i, len,jcbj,str_len, failtime,input;
int	readlen;
long    spy,bc;
/////////////////////////////////////////////////////////////////////检查
	f_ret=openfile("F_STLS");
	if (check_openfile( f_ret ) == US_FAIL ){
		cls();
                closefile(f_ret);
		display_cen ( 4 , "流水文件系统出错" ) ;
		display_cen ( 5 , "不能正常工作");
		display_cen ( 6 , "按任意键将自动关机" ) ;
		systemsound ( 400 ) ;
		inkey(0);
		enable_poweroff();
		power_off();
	}
                                memset( jcjsd, 0, sizeof( jcjsd ));
                                jcbj=0;
				seekfile(f_ret,0,SEEK_SET);
				do{
					memset( (char *)&trans_rec, 0, LEN_Sale_Ticket);
					readfile (f_ret, LEN_Sale_Ticket, (char *)&trans_rec);
					if( trans_rec.settle_flag == 0 && trans_rec.void_flag == 0){
                                               jcbj=99;
                                               strcpy( jcjsd, trans_rec.bus_no );
						break;
                                        }
				}while( eoffile( f_ret ) != 1);
         			closefile(f_ret);        
/////////////////////////////////////////////////////////////////////////////////检查
          str_len=0;
        if ( jcbj == 99 ){
           cls();
           memset( in_st, 0, sizeof( in_st ));
                        display(8,"按99强制上传数据其它键返回:");
			display(6,"没结算的车号: %s", jcjsd);
				input = getstrn( 8, 28, 0, 0, 2, in_st);
				if( in_st[0] == (char )0xff && input == 1)
					return;
	}
        str_len = atoi( in_st );
        if (str_len != 99 && jcbj==99 )
            return;
	config.goup_flag = 0;
        config.goup_count = 0;
	display_inv(1,"交款上传售票数据");
	init_rs232(3);
	f_ret=openfile("F_STLS");
	seekfile(f_ret,(long)(config.goup_count*LEN_Sale_Ticket), SEEK_SET);
	clearall();
	display_cen ( 5 , "数据上传中" ) ;
	while( eoffile( f_ret ) != 1){
		display ( 7 , "    正在上传第1笔交易  " ) ;
 		memset( pub_buff1, 0,sizeof(pub_buff1));
		for(i=0;i<3;i++){
			memset( (char *)&trans_rec, 0, LEN_Sale_Ticket);
			len=readfile(f_ret, LEN_Sale_Ticket ,(char*)&trans_rec);
			if ( len != LEN_Sale_Ticket ){
				cls();
                                closefile(f_ret);
				display_cen ( 4 , "流水文件系统出错" ) ;
				display_cen ( 5 , "不能正常上传数据");
				display_cen ( 6 , "按任意键返回重新上传" ) ;
				systemsound ( 400 ) ;
              	        	enable_poweroff ();
        	         	power_off();
				inkey(0);
			}
			memset( pub_buff2, 0,sizeof(pub_buff2));
                        memset( rq, 0,sizeof(rq));
                        get_date(rq);
                        spy=atol(trans_rec.busman);
                        bc=atol(trans_rec.bus_bc);
			sprintf ( pub_buff2, "%04ld%05ld%9.9s%1.1s%05ld",spy,bc,rq,sbh,trans_rec.jsdh);
			strcat( pub_buff1, pub_buff2);
			memset( pub_buff2, 0,sizeof(pub_buff2));
			sprintf ( pub_buff2, "%7.7s%8.8s", trans_rec.bus_no, trans_rec.end_station);
			strcat( pub_buff1, pub_buff2);
			memset( pub_buff2, 0,sizeof(pub_buff2));
			sprintf ( pub_buff2, "%1d%1d%1d%1d",trans_rec.void_flag,trans_rec.half_flag, trans_rec.settle_flag, trans_rec.jk_flag);
			strcat( pub_buff1, pub_buff2);
			memset( pub_buff2, 0,sizeof(pub_buff2));
			sprintf ( pub_buff2, "%1.1s%07ld%05ld%03d", sbh,trans_rec.ticket_no, trans_rec.bus_fare, trans_rec.stat_fare);
			strcat( pub_buff1, pub_buff2);
			if( eoffile(f_ret) == 1)
				break;
		}
		len = strlen( pub_buff1);
		memset( pub_buff2, 0,sizeof(pub_buff2));
		pub_buff2 [ 0 ] = 0x02 ;
		pub_buff2 [ 1 ] = ( len / 100 ) + ( len / 100 ) / 10 * 6 ;
		pub_buff2 [ 2 ] = ( len % 100 ) + ( len % 100 ) / 10 * 6 ;
		memcpy ( pub_buff2+3, pub_buff1, len);
		pub_buff2 [ 1 + 2 + len ] = 3 ;
		sendrs232 ( 1 + 2 + len + 1 , pub_buff2 ) ;
		failtime = 0 ;
		do {
			if ( ++ failtime  > 30 ) {
				cls();
				config.goup_flag = 1;
				display_cen ( 5 , "数据上传超时" ) ;
				display_cen ( 7 , "按任意键返回" ) ;
				inkey ( 0 ) ;
				break;
			}
			readrs232 ( buffer, 2 ,1 ) ;
		} while  ( buffer [ 0 ] != 0x02 ) ;
		readlen = readrs232 ( buffer, 6 ,13 ) ;
		if ( readlen != 13 || buffer [ readlen-1 ] != 0x03 ){
			config.goup_flag = 1;
			cls();
			display_cen ( 5 , "数据校验失败" ) ;
			display_cen ( 7 , "按任意键返回" ) ;
			inkey ( 0 ) ;
			break;
		}
		if( memcmp(buffer,"OKOKOKOKOKOK",12)!=0){
			config.goup_flag = 1;
			cls();
			display_cen ( 5 , "主机数据接收失败" ) ;
			display_cen ( 7 , "按任意键返回" ) ;
			inkey ( 0 ) ;
			break;
		}
		config.goup_count = config.goup_count + len /59;
	};
	closefile(f_ret); //关闭文件
	if( config.goup_flag != 1 ){
		config.goup_count = 0;
		config.goup_flag = 0;
		deletefile("F_STLS");
		cls();
		display_cen ( 5 , "数据上传结束" ) ;
		display_cen ( 7 , "按任意键返回" ) ;
		inkey ( 0 ) ;
	}
}
void
Void_Download( char *filename )
{
int	download_num, readlen, len, failtime, f_ret, i;
char	down_flag;
char	buffer[30], buffer1[30],ls[8];
long    ls1;
	deletefile(  filename );
	f_ret=openfile(  filename );
	if ( check_openfile( f_ret ) == US_FAIL)
		return;
	down_flag = 0;
	download_num = 1;
	seekfile(f_ret,0,SEEK_SET);
	while(1){
		memset( buffer1, 0,sizeof(buffer1));
		memset( buffer, 0,sizeof(buffer));
		buffer [ 0 ] = 0x02 ;
		sprintf(buffer+1,"%04d%6.6sqingqiuxiazaidi", download_num, filename);
		buffer [ 26 ] = 3 ;
		sendrs232 ( 27 , buffer ) ;
		failtime = 0 ;
		display_cen ( 5 , "等待接收数据" ) ;
		do {
			if ( ++ failtime  > 10 ) {
				closefile(f_ret); //关闭文件
				cls();
				display_cen ( 5 , "数据下传超时" ) ;
				display_cen ( 7 , "按任意键返回" ) ;
				inkey ( 0 ) ;
				return;
			}
			readrs232 ( buffer, 2 ,1 ) ;
		} while  ( buffer [ 0 ] != 0x02 ) ;
		readrs232 ( buffer, 6 ,4 ) ;
		buffer[4] = 0;
		readlen  = atoi(buffer);
		memset( pub_buff1, 0,sizeof(pub_buff1));
		len = readrs232 ( pub_buff1 , 12 , readlen + 1 ) ;
		if ( len != readlen+1){
			closefile(f_ret); //关闭文件
			cls();
			display_cen ( 5 , "数据校验失败1" ) ;
			display_cen ( 7 , "按任意键返回" ) ;
			inkey ( 0 ) ;
			return;
		}
		pub_buff1[readlen]=0;
		if( memcmp(pub_buff1,"ENDENDENDEND",12) == 0){
			closefile(f_ret); //关闭文件
			cls();
			display_cen ( 5 , "数据下传结束1" ) ;
			display_cen ( 7 , "按任意键返回" ) ;
			inkey ( 0 ) ;
			return;
		}
		if ( memcmp( filename, "F_DRIV", 6) == 0){
			if ( readlen != 26 ){
				down_flag = 1;
			}else{
                                memset( ls, 0,sizeof(ls));
				memset( (char *)&drive, 0,  LEN_Drive);
				memcpy( ls, pub_buff1, 7 );
                                ls1=atol(ls);
                                sprintf( drive.bus_no, "%07ld", ls1);
			 	memcpy( drive.driver_name, pub_buff1+7, 8 );
				memcpy( drive.car_no, pub_buff1+15, 8 );
				memcpy( drive.car_home, pub_buff1+23, 3 );
				len=writefile(f_ret, LEN_Drive, (char*)&drive);
				if ( len != LEN_Drive ){
					cls();
					display_cen ( 5 , "下传文件出错3" ) ;
					display_cen ( 7 , "按任意键将自动关机" ) ;
					systemsound ( 400 ) ;
					inkey(0);
					enable_poweroff();
					power_off();
				}
				download_num ++;
			}
		}
		if ( memcmp( filename, "F_MANS", 6) == 0){
			if ( readlen != 18 ){
				down_flag = 1;
			}else{
				memset( (char *)&Busman, 0,  LEN_Busman );
				memcpy( Busman.busman, pub_buff1, 4 );
				memcpy( Busman.busman_name, pub_buff1+4, 8 );
				memcpy( Busman.password, pub_buff1+12, 6 );
				len=writefile(f_ret, LEN_Busman, (char*)&Busman);
				if ( len != LEN_Busman ){
					cls();
					display_cen ( 5 , "下传文件出错1" ) ;
					display_cen ( 7 , "按任意键将自动关机" ) ;
					systemsound ( 400 ) ;
					inkey(0);
					enable_poweroff();
					power_off();
				}
				download_num ++;
			}
		}
		if ( memcmp( filename, "F_STAT", 6) == 0){
			if ( (readlen -13 )% 16 != 0){
				down_flag = 1;
			}else{
				memset( (char *)&stat_line, 0,  LEN_Station);
				memset( (char *)&bus_fare, 0,  LEN_Station*LINE_ST_MAX);
				memcpy( buffer, pub_buff1, 3 );
				buffer[3]=0;
				stat_line.line_no = atoi( buffer );
				memcpy( buffer, pub_buff1+11, 2 );
				buffer[2]=0;
				stat_line.station_num = atoi( buffer );
				memcpy( stat_line.line_name, pub_buff1+3, 8 );
				
				for( i = 0; i< stat_line.station_num; i++){
					memcpy( bus_fare[i].station_name, pub_buff1+13+i* 16, 8 );
					memcpy( buffer, pub_buff1+13+i* 16+8, 5 );
					buffer[5]=0;
					bus_fare[i].bus_fare = atol( buffer );
					memcpy( buffer, pub_buff1+13+i* 16+13, 3 );
					buffer[3]=0;
					bus_fare[i].stat_fare = atol( buffer );
				}
				len=writefile(f_ret, LEN_Station, (char*)&stat_line);
				if ( len != LEN_Station ){
					cls();
					display_cen ( 5 , "下传文件出错2" ) ;
					display_cen ( 7 , "按任意键将自动关机" ) ;
					systemsound ( 400 ) ;
					inkey(0);
					enable_poweroff();
					power_off();
				}

				len=writefile(f_ret, LEN_Bus_Fare * stat_line.station_num, (char*)&bus_fare);
				if ( len != LEN_Bus_Fare * stat_line.station_num ){
					cls();
					display_cen ( 5 , "下传文件出错3" ) ;
					display_cen ( 7 , "按任意键将自动关机" ) ;
					systemsound ( 400 ) ;
					inkey(0);
					enable_poweroff();
					power_off();
				}
			}
			download_num ++;
		}
		if ( down_flag == 1){
			closefile(f_ret); //关闭文件
			cls();
			display_cen ( 5 , "数据校验失败2" ) ;
			display_cen ( 7 , "按任意键返回" ) ;
			inkey ( 0 ) ;
			return;
		}
	};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -