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

📄 apsmp.c

📁 CASIO DT900 常上电脑C语言源程序和编译后的程序实例
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "itron.h"
#include "cmndef.h"
#include "bios1mac.h"

void Wait2(UW);
void MenuOpening( void );
void MainMenu(void);
void FNC_Init( void );   
void Work(void);
void Submenu(short attr);
void Scan(short attr);
void Calcu(short attr);
void Check(int begin,int stop,int attr);
void WriteFile(char *content);
void WriteEnd(char *end);
int getkey(void);

unsigned char oper[5];
extern UB oper[5];

/******************************************************************************
**     Routine name: apstart                                             	   	**
**     Detail      : Start routine                                         	  **
**     Parameter   : None                                                   	**
**     Return value: None                                                    	**
**     Author      : 赵巍巍							                                      **
******************************************************************************/

void ap_start( void )
	{
	    Wait2( 5L );								// 等待
	    s_sound( 2250, 5 );         //发出指定的时间和频率的声音    
	    Wait2( 5L );
	    s_sound( 2250, 5 ); 
	    FNC_Init();									//初始化键值
	    lcd_cls();               		//清除LCD显示屏
	    obr_change( 0 );            //obr_change( OBR_ALL )   
	    while(1)
	    {
		    MenuOpening();            //显示开机画面
		    getkey();									//显示
		    Work(); 
	    }
	    exit( 0 );                  //退出程序
	}

/******************************************************************************
**     Routine name: FNC_Initialize                                          	**
**     Detail      : 键值初始化设置函数(return default)            						**
**     Parameter   : None                                                    	**
**     Return value: None                                                    	**
**     Author      : 赵巍巍                                                  	**
******************************************************************************/
void FNC_Init( void )
	{
	  KEYFORM		kcode;
	
		kcode.attr = 0x0;
		kcode.code = 0x2d;
			key_fnc( FNC_SET, FNC_1, &kcode);
		kcode.attr = 0x0;
		kcode.code = 0x1d;
			key_fnc( FNC_SET, FNC_2, &kcode);
		kcode.attr = 0x0;
		kcode.code = 0x1c;
			key_fnc( FNC_SET, FNC_3, &kcode);
		kcode.attr = 0x0;
		kcode.code = 0x10;
			key_fnc( FNC_SET, FNC_4, &kcode);
		kcode.attr = 0x0;
		kcode.code = 0x20;
			key_fnc( FNC_SET, FNC_5, &kcode);
		kcode.attr = 0xff;
		kcode.code = 0x0;
			key_fnc( FNC_SET, FNC_6, &kcode);
		kcode.attr = 0xff;
		kcode.code = 0x02;
			key_fnc( FNC_SET, FNC_7, &kcode); 
		kcode.attr = 0xff;
		kcode.code = 0x02;
			key_fnc( FNC_SET, FNC_8, &kcode);
	
	}

/******************************************************************************
**     Routine name: MenuOpening                                            	**
**     Detail      : 查找并显示画面											                     	**
**     Parameter   : none                                                    	**
**     Return value: none                                                    	**
**     Author      : 赵巍巍							                                    	**				
******************************************************************************/
void MenuOpening( void )
	{
		unsigned char    msg[][25]={
		                    "	     欢迎使用 ",
				    						"		   CASIO-DT900",
		                    "		   条码管理系统",
		                    "                    ",
		                    "浙江达峰科技有限公司"};
		           
		short   cnt, x, y;
		ER 	ercd;
		DAT_DSP_STR	disp_set;
		
		dat_system( SYSD_FNC_READ, SYSD_DSP2, &disp_set );									//读取LCD显示的相关设置
		disp_set.font_md = FONT6_SET;																				//设置字体大小(点阵)
		dat_system( SYSD_FNC_WRITE, SYSD_DSP2, &disp_set );									//保存LCD显示的相关设置
		lcd_cls();
		ercd=lcd_usrfont( LCD_K6_FILE,"a:\\font6sk.fon" );    							//调用中文字库       
		if (ercd == E_PRM)
			{
				 lcd_csr_put( 3, 0 );																						
				 cputstr(LCD_ATTR_NORMAL,"font6sk not find!(ln114)");
			}
		else
			{
		    for( x=0,y=1,cnt=0; cnt<5; y+=2,cnt++ )													//在LCD上显示开机画面
		    {  
		
		            lcd_csr_put( y, x );
		            cputstr(LCD_ATTR_NORMAL,msg[cnt]);
		   	}         
		  }
	}

/******************************************************************************
**     Routine name: Wait2                                                   	**
**     Detail      : 指定第二个等待任务(31.25ms)               								**
**     Parameter   : tmcnt   : 计时器                                  				**
**     Return value: none                                                    	**
**     Author      : 赵巍巍							                                      **
******************************************************************************/
void Wait2( UW   tmcnt )
	{
	ER      ercd;
	UW      p_flg;
	
	    ercd = s_settimer2( FL_TM2_INT_ID, FL_TM2_INT_ITU0, tmcnt );
	    wai_flg( &p_flg, FL_TM2_INT_ID, FL_TM2_INT_ITU0, TWF_ANDW | TWF_CLR );
	    s_timerend2( ercd );
	}

/******************************************************************************
**     Routine name: getkey                                                  	**
**     Detail      : 指定第二个等待任务(31.25ms)               								**
**     Parameter   : none																											**
**     Return value: int :返回的键值                                         **
**     Author      : 赵巍巍			 							                                **
******************************************************************************/
int getkey(void)
 {
	  KEY_INP	kinp;
	  int code;
	
		kinp.ext = KEY_OBR_EXT;																						//阅读条码												
		kinp.echo = ECHO_OFF;																							//提示音无效												
		kinp.font_size = LCD_ANK_LIGHT;																		//字体设置												
		kinp.type = LCD_ATTR_NORMAL;																			//无特殊设置												
		kinp.column_pos =0;																								//相应的输入列数												
		kinp.line_pos = 2;																								//相应的输入行数												
	  code=key_read(&kinp);																							//输入条码的值												
	  return (code);															 											//返回相应的键值																					
  }                                            
                                               
                                               
/******************************************************************************
**     Routine name: Work                                                   	**
**     Detail      : 员工登录控制								                							**
**     Parameter   : none							                                 				**
**     Return value: none                                                    	**
**     Author      : 赵巍巍							                                      **
******************************************************************************/
void Work(void)
	{
	    int i;
	    	    
	    while(1)
	    {
	      lcd_cls();
	      lcd_csr_put( 3, 0 );
	      cputstr(LCD_ATTR_NORMAL,"请输入员工号(4位):");
	      memset(oper,0x0,5);
	      i=read_str(0,5,2,oper,4); 
	      if(i==E_KEY_CLR)
	      return;
	      if((strlen(oper)==0)||(strlen(oper)>4))
	      continue;
	      if(strlen(oper)<4)
	      for(i=strlen(oper);i<4;i++)
	      oper[i]=0x20;
	      MainMenu();
	    }
	}

/******************************************************************************
**     Routine name: MainMenu                                               	**
**     Detail      : 设置主菜单																								**
**     Parameter   : none                                  										**
**     Return value: none                                                    	**
**     Author      : 赵巍巍                                      							**
******************************************************************************/
void MainMenu()
	{
	   unsigned char msg[][20]={" 仓库管理系统v1.0",
	                            " 1:入库 2:移库 ",
	                            " 3:提货 4:领用 ",
													    " 5:盘点 6:借机 ",
													    " 7:通讯 8:查询 "};
	   short x,y,cnt,code;
	   int i;
	   H fhnd;
	
	   while (1)
	   {
	   key_clear();
	   lcd_cls();
	   for( x=0,y=1,cnt=0; cnt<5; y+=2,cnt++ )
	    {
	         {
	            lcd_csr_put( y, x );
	            cputstr(LCD_ATTR_NORMAL,msg[cnt]);
	         }
	    }
	     code=getkey();
	     if(code==0x0c)
	     break;
	     if(code >= '1' && code <= '8')     
	     code -= 0x30;                  
	     switch (code)
	      {
	       case 1:
	        Submenu(1);
	        break;
	       case 2:
	        Submenu(2);
	        break;
	       case 3:
	        Submenu(3);
	        break;
	       case 4:
	        Submenu(4);
	        break;
	       case 5:
	        Submenu(5);
	        break;
	       case 6:
	        Submenu(6);
	        break;
	       case 7:
						if(( fhnd = open("data.txt", O_RDWR  ))== E_LOWERR )
						{
					            lcd_cls();
					            lcd_csr_put( 1, 0 );
					            cputstr(LCD_ATTR_NORMAL,"无采集数据!(ln247) ");
					            getkey();
						    break;
						}
						close(fhnd);
					  lcd_cls();
						lcd_csr_put( 1, 0 );
					  cputstr(LCD_ATTR_NORMAL,"将采集器放在通讯座上");
						lcd_csr_put( 3, 4 );
					  cputstr(LCD_ATTR_NORMAL,"按任意键...");
					  getkey();
					  sendfile();
					  getkey();
					  break;
	 			case 8:
					  Submenu(8);
					  break;
	 			default:
						break;
	      }
	    }
	}

/******************************************************************************
**     Routine name: Submenu                                                 	**
**     Detail      : 设置子菜单													             					**
**     Parameter   : attr: 返回子菜单的标识																	**
**     Return value: none                                                    	**
**     Author      : 赵巍巍                                      							**
******************************************************************************/
void Submenu(short attr)
{
	short code;
	while(1)
	{
	 	lcd_cls();
		lcd_csr_put( 7, 16 );
    switch (attr)
    {
		   case 1:
		   	cputstr(LCD_ATTR_WIDTH,"入库 ");
		    break;
		   case 2:
		    cputstr(LCD_ATTR_WIDTH,"移库 ");
		    break;
		   case 3:
		    cputstr(LCD_ATTR_WIDTH,"提货 ");
		    break;
		   case 4:
		    cputstr(LCD_ATTR_WIDTH,"领用 ");
		    break;
		   case 5:
		    cputstr(LCD_ATTR_WIDTH,"盘点 ");
		    break;
		   case 6:
		    cputstr(LCD_ATTR_WIDTH,"借机 ");
		    break;
		   default:
				break;
    }
		lcd_csr_put( 1, 0 );
	        cputstr(LCD_ATTR_NORMAL,"1:扫描条码 ");
		lcd_csr_put( 3, 0 );
	        cputstr(LCD_ATTR_NORMAL,"2:排序统计 ");
		lcd_csr_put( 9, 3 );
	        cputstr(LCD_ATTR_NORMAL,"请按键选择... ");
	        
		key_clear();
		code=getkey();		
		if(code==0x0c)
		return;
		else if(code==0x31)
		Scan(attr);
		else if(code==0x32)
		Calcu(attr);
		else
		continue;
	}
}

void Scan(short attr)
{
	H   fmode,fhnd;
	ER ret;
	char lib_no[4],sum[6],bar[23],att[2],cr[3],time[30],now_s[6],dsp[7],filename[10],buffer[23],temp[23];											/*93码,22位*/
	int num,i,j;
	struct          day_tabl        day_dat;
  struct 		tim_tabl	tim_dat;
	W start,fp,s,n,x,y;

	memset(att,0x0,2);
	sprintf(att,"%1d",attr);
	cr[0]=0x0d;
	cr[1]=0x0a;
	cr[2]=0x0;
	memset(dsp,0x0,7);
	memset(filename,0x0,10);

      switch (attr)
      {
       case 1:
        memcpy(dsp,"1:入库 ",6);
	memcpy(filename,"dulp1.txt",9);
        break;
       case 2:
        memcpy(dsp,"2:移库 ",6);
	memcpy(filename,"dulp2.txt",9);
        break;
       case 3:
        memcpy(dsp,"3:提货 ",6);
	memcpy(filename,"dulp3.txt",9);
        break;
       case 4:
        memcpy(dsp,"4:领用 ",6);
	memcpy(filename,"dulp4.txt",9);
        break;
       case 5:
        memcpy(dsp,"5:盘点 ",6);
	memcpy(filename,"dulp5.txt",9);
        break;
       case 6:
        memcpy(dsp,"6:借机 ",6);
	memcpy(filename,"dulp6.txt",9);
        break;
       default:
	break;
      }

	while(1)
	{
 	lcd_cls();
	lcd_csr_put( 9, 0 );
        cputstr(LCD_ATTR_WIDTH,dsp);
	lcd_csr_put( 1, 0 );
        cputstr(LCD_ATTR_NORMAL,"请输入仓库代码...   ");
	memset(lib_no,0x0,4);
        i=read_str(0,5,2,lib_no,3); 
        if(i==E_KEY_CLR)
	return;
	if((strlen(lib_no)==0)||(strlen(lib_no)>3))
	continue;
        if(strlen(lib_no)<3)
        {
	    for(i=strlen(lib_no);i<3;i++)
        lib_no[i]=0x20;
	    break;
		}
	    else
	    break;
	}
	while(1)
	{
 	lcd_cls();
	lcd_csr_put( 9, 0 );
        cputstr(LCD_ATTR_WIDTH,dsp);
	lcd_csr_put( 1, 0 );
        cputstr(LCD_ATTR_NORMAL,"请输入扫描数量... ");
	memset(sum,0x0,6);
        i=read_str(0,5,2,sum,5); 
	if(i==E_KEY_CLR)
	return;
	if(strlen(sum)>5)
	continue;
        if(strlen(sum)<5)
        {
	for(i=strlen(lib_no);i<5;i++)
        sum[i]=0x20;
	break;
	}
	else
	break;
	}
	if(atol(sum)==0)
	memset(sum,0x0,6);
	n=0;
	memset(now_s,0x0,6);
	sprintf(now_s,"%5d",n);

    Wait2( 5L );
    s_sound( 2250, 5 );             
    Wait2( 5L );
    s_sound( 2250, 5 );            

	while(1)
	{
	lcd_cls();
	lcd_csr_put( 9, 0 );
        cputstr(LCD_ATTR_WIDTH,dsp);
	lcd_csr_put( 1, 0 );
        cputstr(LCD_ATTR_NORMAL,"请扫描条码... ");
	if(strlen(sum)!=0)
	{
	lcd_csr_put( 9, 9 );
        cputstr(LCD_ATTR_NORMAL,now_s);
	lcd_csr_put( 9, 14 );
        cputstr(LCD_ATTR_NORMAL,"/");
	lcd_csr_put( 9, 15 );
        cputstr(LCD_ATTR_NORMAL,sum);
	}
	else
	{
	lcd_csr_put( 9, 8 );
        cputstr(LCD_ATTR_NORMAL,"已采集:");
	lcd_csr_put( 9, 15 );
        cputstr(LCD_ATTR_NORMAL,now_s);
	}
	memset(temp,0x0,23);	
	memset(bar,0x0,23);
        i=read_str(20,1,0,bar,22); 
	if(i==E_KEY_CLR)
	{
	lcd_csr_put( 5, 0 );
        cputstr(LCD_ATTR_NORMAL,"真的要退出吗?        ");
	lcd_csr_put( 7, 0 );
        cputstr(LCD_ATTR_NORMAL,"[ENT是 CLR否]        ");
        while(((i=getkey())!=0x0c)&&(i!=0x0d));
	if(i==0x0d)
	return;
	else
	continue;
	}
	if(strlen(bar)==0)
	continue;
	if(strlen(bar)>22)
        return;
	if(strlen(bar)<22)
	for(i=strlen(bar);i<22;i++)
	bar[i]=0x20;
 	s_dateget(&day_dat);
       	s_timeget(&tim_dat); 
	memset(time,0x0,30);
    	sprintf(time,"%4d",day_dat.year);
    	memcpy(time+4,"-",1);
    	sprintf(time+5,"%2d",day_dat.month);
      	if (time[5]==0x20)
	time[5]=0x30;
	memcpy(time+7,"-",1);
    	sprintf(time+8,"%2d",day_dat.day);
     	if (time[8]==0x20)
	time[8]=0x30;
	time[10]=0x20;
   	sprintf(time+11,"%2d",tim_dat.hour);
     	if (time[11]==0x20)
	time[11]=0x30;
	memcpy(time+13,":",1);
   	sprintf(time+14,"%2d",tim_dat.mint);
  	if (time[14]==0x20)
	time[14]=0x30;
	memcpy(time+16,":",1);
    	sprintf(time+17,"%2d",tim_dat.sec);
    	if (time[17]==0x20)
	time[17]=0x30;
   	memcpy(time+19," ",1);
    	memcpy(time+20,oper,4);
/*	time[24]=0x0d;
	time[25]=0x0a;*/

	if(( fhnd = open(filename, O_RDWR  ))== E_LOWERR )
	{  
         fmode=O_CREAT|O_RDWR;
         if(( fhnd = open(filename, fmode ))== E_LOWERR )
	   {
            lcd_cls();
            lcd_csr_put( 1, 0 );
            cputstr(LCD_ATTR_NORMAL,"文件打开错误!(ln504)");
            getkey();
            return;                     
	   }
        }
	start=0;
	ret=dat_F_Search(filename,start,22,0,22,bar,buffer,&fp);
	if(ret==E_OK)
	{

    Wait2( 5L );

⌨️ 快捷键说明

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