📄 apsmp.c
字号:
#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 + -