S
sail_world
Unregistered / Unconfirmed
GUEST, unregistred user!
/* 引用头文件 */
#include "stdio.h "
#include "string.h "
#include "stdlib.h "
#include "itron.h "
#include "casio.h "
#include "cmndef.h "
#include "bios1mac.h"
#include "math.h"
#include "function.h"
/* 定义上下传文件*/
#define filename "JIADONG.CSV"
#define turn_file "turn.txt"
#define stockfile "mechine.txt"
/* 定义所使用的函数 */
void main_menu(void);
/* 主菜单 */
void jiadong_menu(void);
/* 稼動採集 */
void sub_main_menu1(char *turn);
/* */
void main_menu3(void);
/* 數據上傳 */
void main_menu4(void);
/* 數據?除 */
void stock_menu(void);
/* 固資盤點 */
void stock_check(void);
/* 開始盤點 */
void stock_load(void);
/* 盤點傳? */
void stock_setting(void);
/* 盤點設定 */
void stock_find(void);
/* 盤點查找 */
struct checkmc
{
char mno[13];
/* 机台号 */
char cno[13];
/* 连络单号 */
char status[2];
/* 机台状态4=T,5=E,6=M,8=R,9=S */
char model_no[20];
/* 模件号 */
char repare_no[20];
/* 模修单号 */
char linxin_no[20];
/* 零星加工单号*/
char person_no[6];
/* 加工者工? */
char snow[20];
char turn[20];
/* 溢出?题没有解决 */
char hui;
};
/* 警告声函数 */
void warning_sound(void);
/************************************/
/* TASK MAIN PART 主函数 */
/* 相当于 C 语言的 MAIN 函数 */
/************************************/
void ap_start ( void )
{
main_menu();
}
/************************************/
/* 主菜单函数 */
/************************************/
void main_menu()
{
ER ret;
while(1)
{
cls();
Dsp_str("==华南资源采集系统==",1,0);
Dsp_str(" 1.稼动采集V1.0",3,0);
Dsp_str(" 2.固资盘点V1.0",5,0);
Dsp_str("==SHZBG华南模具NO1==",7,0);
Dsp_str("==华南系统资讯开发==",9,0);
do
{
ret=get_chr(NONE);
}
while(ret!=49&&ret!=50);
switch(ret)
{
case 49:jiadong_menu();break;
case 50:stock_menu();break;
}
}/*end while*/
}
/* 稼动系统菜单*/
void jiadong_menu(void)
{
char buff[20],key[6],answer[]="158106",code[2];
char start[]="1A";
ER er,ret;
char kind;
W i;
while(1)
{
cls();
Dsp_str("==华南稼动盘点系统==",1,0);
Dsp_str(" 1.按轮盘点",3,0);
Dsp_str(" 2.数据上传",5,0);
Dsp_str(" 3.数据删除",7,0);
Dsp_str(" 4.楼层盘点",9,0);
do
{ret=get_chr(NONE);}
while(ret!=49&&ret!=50&&ret!=51&&ret!=52&&ret!=255);
switch(ret)
{
case 49:
a1: if(Is_file(turn_file)==1)
{
creat_file(turn_file);
dat_F_Write(turn_file,0,0,&start,sizeof(start));
}
er=dat_F_Read(turn_file,0,buff,sizeof(buff));
cls();
Dsp_str("==确认扫描的轮次==",1,0);
Dsp_str("当前轮编号:",3,0);
Dsp_str(buff,5,0);
Dsp_str("1.继续 2.新建轮次",7,0);
Dsp_str("==请谨慎选择轮次!==",9,0);
do
{ret=get_chr(NONE);}
while(ret!=49&&ret!=50&&ret!=255&&ret!=45);
switch(ret)
{
case 49:
cls();
Dsp_str("你确定要继续本轮?",2,1);
Dsp_str("ENT 继续",5,3);
Dsp_str("任意键 返回",8,3);
kind=getkey();
if(kind==13)
sub_main_menu1(buff);
;break;
case 50:
cls();
Dsp_str("你确定要新建轮?",2,1);
Dsp_str("ENT 新建",5,3);
Dsp_str("任意键 返回",8,3);
kind=getkey();
if(kind==13)
{
memset(code,0,sizeof(code));
memcpy(code,buff+strlen(buff)-1,1);
i=atol(buff);
i++;
cls();
memset(buff,0,sizeof(buff));
sprintf(buff,"%d",i);
/* cls();
Dsp_str(buff,1,0);
Dsp_str(code,3,0);
getkey();*/
strcat(buff,code);
cls();
Dsp_str("新建轮成功,编号:",2,1);
Dsp_str(buff,5,1);
Dsp_str("任意键继续",7,3);
dat_F_Write(turn_file,0,0,&buff,sizeof(buff));
getkey();
sub_main_menu1(buff);
}
break;
case 45:
cls();
memset(key,0,sizeof(key));
Dsp_str("Pls Enter the PWD:",2,0);
lcd_csr_put(5,0);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(5,0,0,key,6);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==E_KEY_CLR) /*按 CLR 键处理方式*/
{
break;
}
if(strcmp(key,answer)==0)
{
cls();
memset(buff,0,sizeof(buff));
Dsp_str("Enter Manual Code:",2,0);
lcd_csr_put(5,0);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(5,0,0,buff,20);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==E_KEY_CLR) /*按 CLR 键处理方式*/
{
break;
}
Dsp_str(buff,5,0);
dat_F_Write(turn_file,0,0,&buff,sizeof(buff));
Dsp_str("set is successful,Now Is",7,0);
memset(buff,0,sizeof(buff));
er=dat_F_Read(turn_file,0,buff,sizeof(buff));
Dsp_str(buff,9,0);
getkey();
}
case 255:;break;
}/* end switch*/
/* }end while*/
break;
case 50 :main_menu3();break;
case 51 :main_menu4();break;
case 52 :
memset(buff,0,sizeof(buff));
sub_main_menu1(buff);
break;
case 255:return;break;
}/*end switch*/
}/*end while*/
}/*end main_menu*/
void sub_main_menu1(char *turn)
{
struct checkmc checkmc1;
char sdate[8],stime[6],hui='/n';
char dsp[20];
char buff1[25],buff2[25],titile[]="self_no,conn_no,status_id,tu_no,moxiu_no,linxin_no,person_no,scan_time,turn";
ER ret;
if(Is_file(filename)==1)
{
creat_file(filename);
dat_F_Write(filename,1,0,&titile,sizeof(titile));
dat_F_Write(filename,1,0,&hui,sizeof(hui));
}
/* 进入循环扫描条码状态 */
while(1)
{
/************************************************/
r1: cls();
memset(&checkmc1.mno,0,sizeof(checkmc1));
memset(dsp,0,sizeof(dsp));
format_w(&checkmc1.mno);
memcpy(&checkmc1.turn,turn,20);
checkmc1.hui=10;
s_now(&checkmc1.snow,sdate,stime);
memcpy(dsp,&checkmc1.snow,19);
do
{
memset(buff1,0,25);
Dsp_str(dsp,1,0);
Dsp_str("机台号: ",3,0);
Dsp_str("CLR返回,轮:",9,0);
Dsp_str(&checkmc1.turn,9,11);
lcd_csr_put(3,7);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(3,7,0,buff1,14);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==E_KEY_CLR) /*按 CLR 键处理方式*/
{
return;
}
dealinput(buff1,buff2);
if(checkmno(buff2)==1)
warning_sound();
}
while(checkmno(buff2));
memcpy(&checkmc1.mno,buff2+1,12);
Dsp_str(checkmc1.mno,3,7);
/****************************************************/
do
{
memset(buff1,0,25);
Dsp_str("单号: ",5,0);
lcd_csr_put(5,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(5,5,0,buff1,15);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
dealinput(buff1,buff2);
if(checkcno(buff2)&&checkent(buff1)!=0)
warning_sound();
}while(checkcno(buff2)&&checkent(buff1));
memcpy(&checkmc1.cno,buff2+1,12);
if(checkmc1.cno[0]==42)/*处理dealinput两端加*,留下的第一位*号,如果单号1位=*,置为0*/
checkmc1.cno[0]=0;
if(checkmc1.cno[11]==42)/*如果单号12位=*,置为0*/
checkmc1.cno[11]=0;
Dsp_str(checkmc1.cno,5,5);
if(checkent(buff1)!=0) /*不是按了回车*/
{
checkmc1.status[0]=55;
/* status='7' */
checkmc1.status[1]=44;
dat_F_Write(filename,1,0,&checkmc1,sizeof(checkmc1));
}
else
/*1*/
{
/***************************************************/
do
{
memset(buff1,0,25);
Dsp_str("状态:",7,0);
Dsp_str("4=T,5=E,6=M,8=R,9=S ",9,0);
lcd_csr_put(7,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(7,5,2,buff1,1);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
if(checkstatus(buff1)!=0)
warning_sound();
}while(checkstatus(buff1));
memcpy(&checkmc1.status,buff1,1);
/* 获得status的置 */
Dsp_str(checkmc1.status,7,5);
if(checkmc1.status[0]!=53&&checkmc1.status[0]!=52) /*if 1*/
{
dat_F_Write(filename,1,0,&checkmc1,sizeof(checkmc1));
}
else
/* else
2*/
{
if(checkmc1.status[0]==53)
{
do
{
memset(buff1,0,25);
cls();
Dsp_str("机台稼动异常",1,0);
Dsp_str("工号:",3,0);
lcd_csr_put(3,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(3,5,2,buff1,5);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
if(checkcno_digi(buff1,0,4)!=0)
warning_sound();
}while(checkcno_digi(buff1,0,4)!=0);
memcpy(&checkmc1.person_no,buff1,5);
Dsp_str(checkmc1.person_no,3,5);
dat_F_Write(filename,1,0,&checkmc1,sizeof(checkmc1));
}
else
{
memset(buff1,0,25);
cls();
Dsp_str("图号:",1,0);
lcd_csr_put(1,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(1,5,2,buff1,19);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
memcpy(&checkmc1.model_no,buff1,19);
Dsp_str(checkmc1.model_no,1,5);
checkmc1.model_no[20]=44;
/*------------------------*/
memset(buff1,0,25);
Dsp_str("模修:",3,0);
lcd_csr_put(3,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(3,5,2,buff1,20);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
memcpy(&checkmc1.repare_no,buff1,19);
Dsp_str(checkmc1.repare_no,3,5);
/*------------------------*/
memset(buff1,0,25);
Dsp_str("零星:",5,0);
lcd_csr_put(5,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(5,5,2,buff1,20);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
memcpy(&checkmc1.linxin_no,buff1,19);
Dsp_str(checkmc1.linxin_no,5,5);
/*-----------------------------*/
do
{
memset(buff1,0,25);
Dsp_str("工号:",7,0);
lcd_csr_put(7,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(7,5,2,buff1,5);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
if(checkcno_digi(buff1,0,4)!=0)
warning_sound();
}while(checkcno_digi(buff1,0,4)!=0);
memcpy(&checkmc1.person_no,buff1,5);
Dsp_str(checkmc1.person_no,7,5);
dat_F_Write(filename,1,0,&checkmc1,sizeof(checkmc1));
}
}/* else
2*/
/* }end if 1*/
}/*end else
1 */
}/* end while(1) */
}/* end main_menu1 */
void main_menu3(void)
{
if(Is_file(filename)==1)
{
cls();
Dsp_str(" 数据文件没有下传",2,0);
Dsp_str(" 请执行数据传输功能",5,0);
Dsp_str("将数据文件传至盘点机",8,0);
warning_sound();
WAIT;
return;
}
if(sendfile(filename)==E_OK)
{
cls();
del_file(filename);
Dsp_str("数据上传成功, 并删除了!",5,2);
WAIT;
}
}/*end main_menu3*/
void main_menu4(void)
{
char kind;
cls();
Dsp_str("你确定要删除数据吗?",2,1);
Dsp_str("ENT 删除",5,3);
Dsp_str("任意键 不删除",8,3);
kind=getkey();
if(kind==13) del_file(filename);
}/* end main_menu4 */
void stock_menu(void)
{
ER ret;
while(1)
{
cls();
Dsp_str("==固定资产盘点系统==",1,0);
Dsp_str(" 1.开始盘点",3,0);
Dsp_str(" 2.数据传输",5,0);
Dsp_str(" 3.系统设定",7,0);
Dsp_str(" 4.查找",9,0);
do
{ret=get_chr(NONE);}
while(ret!=49&&ret!=50&&ret!=51&&ret!=52&&ret!=255);
switch(ret)
{
case 49: stock_check();break;
case 50: stock_load();break;
case 51: stock_setting();break;
case 52: stock_find();break;
case 255: return;break;
}
}
}
void stock_setting()
{
}
void stock_load()
{
}
void stock_find()
{
}
void stock_check()
{
char buff1[20],buff2[25],rbuff[104],mno[13],conf[2]="1";
ER ret;
W fpos=0;
if (Is_file(filename)==1)
{
Dsp_str("没有盘点文件,请下载!",3,0);
return;
}
while(1)
{
r1: do
{
cls();
memset(mno,0,13);
memset(rbuff,0,104);
memset(buff1,0,20);
Dsp_str("机台号: ",1,0);
Dsp_str(" CLR返回主菜单",9,0);
lcd_csr_put(1,7);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(1,7,0,buff1,14);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==E_KEY_CLR) /*按 CLR 键处理方式*/
{
return;
}
dealinput(buff1,buff2);
if(checkmno(buff2)==1)
warning_sound();
}
while(checkmno(buff2));
memcpy(mno,buff2+1,12);
ret=search(stockfile,0,104,0,12,mno,rbuff,&fpos);
switch(ret)
{
case E_PRM:
{
Dsp_str(" 参数错误! ",9,0);
getkey();
goto r1;
}
case E_NG:
{
Dsp_str(" 无文件! ",9,0);
getkey();
goto r1;
}
case E_OK: break;
default:
{
Dsp_str(" 未找到记录 ",9,0);
getkey();
goto r1;
}
}
dsp(rbuff);
ret=dat_F_Write(stockfile,0,fpos+100,&conf,2);
if(ret==E_PRM)
{
cls();
Dsp_str("写入资料失败,重来!",3,1);
WAIT;
}
WAIT;
}
}
--------------------------------------------
/*处理函数声明部分*/
void s_now(B *snow,B *sdate,B *stime);
void s_now_dsp(B *snow,B *sdate,B *stime);
void dealinput(char *buff_in,char *buff_out);
void format_w(char *buff);
/*数据检验声明部分*/
H checkmno(char *buff);
H checkcno(char *buff);
H checkcno_digi(char *buff,H a,H b);
H checkent(char *buff);
H checkstatus(char *buff);
void dsp(char *rbuff);
/*文件处理函数*/
/* 数据不正常发出的响声 */
void warning_sound(void)
{
s_sound( 3000, 9 );
Wait2( 5L );
s_sound( 3000, 9 );
Wait2( 5L );
s_sound( 3000, 9 );
}
/* 格式化日期为2004-08-18 17:18:18 */
void s_now_dsp(B *snow,B *sdate,B *stime)
{
H i;
get_date_str(sdate,stime);
for(i=0;i<8;i++)
{
if(sdate==32)
sdate=48;
}
for(i=0;i<6;i++)
{
if(stime==32)
stime=48;
}
memcpy(&snow[0],&sdate[4],2);
memset(&snow[2],45,1);
memcpy(&snow[3],&sdate[6],2);
memset(&snow[5],32,1);
memcpy(&snow[6],stime,2);
memset(&snow[8],58,1);
memcpy(&snow[9],&stime[2],2);
memset(&snow[11],0,1);
/*memset(&snow[19],44,1);*/
}
void s_now(B *snow,B *sdate,B *stime)
{
H i;
get_date_str(sdate,stime);
for(i=0;i<8;i++)
{
if(sdate==32)
sdate=48;
}
for(i=0;i<6;i++)
{
if(stime==32)
stime=48;
}
memcpy(&snow[0],&sdate[0],4);
memset(&snow[4],45,1);
memcpy(&snow[5],&sdate[4],2);
memset(&snow[7],45,1);
memcpy(&snow[8],&sdate[6],2);
memset(&snow[10],32,1);
memcpy(&snow[11],stime,2);
memset(&snow[13],58,1);
memcpy(&snow[14],&stime[2],2);
memset(&snow[16],58,1);
memcpy(&snow[17],&stime[4],2);
/*memset(&snow[19],44,1);*/
}
/*检查机台号码是否满足条件 */
H checkmno(char *buff)
{
if(strlen(buff)!=14) /*长度不等于14,抛出1*/
return 1;
if(buff[0]!=42)
return 1;
if(buff[1]<65||buff[2]!=45||buff[3]!=84||buff[9]!=45)
return 1;
return 0;
}
/*检查连络单号*/
/* 较V1.33,效率差,V1.33当第一个满足时直接跳出,而这个却要计算整个值,
特别是要进行循环 ,所以越是苛刻且简单计算的条件,应该放在前面,不满足就跳出 */
/*H checkcno(char *buff)
{
if(strlen(buff)==14||strlen(buff)==13&&buff[0]==42&&(buff[1]<65||checkcno_digi(buff,3,11)))
return 0;
return 1;
}
*/
H checkcno(char *buff)
{
if(strlen(buff)!=14&&strlen(buff)!=13)
return 1;
if(buff[0]!=42)
return 1;
if(buff[1]<65||checkcno_digi(buff,3,11))
return 1;
return 0;
}
/* 检查buff 中从a开始到b为止(含b)的值是否为数字*/
H checkcno_digi(char *buff,H a,H b)
{
H i;
for(i=a;i<=b;i++)
{
if(isdigit(buff)==0)
return 1;
}
return 0;
}
/*检查是否只按了回车,如果相等0[25]则返回0*/
H checkent(char *buff)
{
char *buff1[25];
memset(buff1,0,25);
return(strcmp(buff,buff1));
}
/* 检查输入是否是5,6、8、9*/
H checkstatus(char *buff)
{
if(buff[0]!=57&&buff[0]!=56&&buff[0]!=54&&buff[0]!=53&&buff[0]!=52)
return 1;
return 0;
}
/* 不是条码直接输入处理函数 */
void dealinput(char *buff_in,char *buff_out)
{
H i;
memset(buff_out,0,25);
if(buff_in[0]!=42)
{
memset(&buff_out[0],42,1);
memcpy(&buff_out[1],buff_in,24);
for(i=1;i<25;i++)
{
if(buff_out==0)
{
memset(&buff_out,42,1);
return;
}
}
}
else
{
memcpy(buff_out,buff_in,25);
}
}
/* 处理csv格式*/
void format_w(char *buff)
{
H cp[9]={13,13,2,20,20,20,6,20,20};
H i,i3;
i=0;
i3=i+cp;
for(;i<8;i++)
{
memset(&buff[i3-1],44,1);
i3+=cp[i+1];
}
}
void dsp(char *rbuff)
{
char dspbuff[20];
H cp[5]={10,9,16,9,15};
H i,i2=1,i3=13;
for(i=0;i<5;i++)
{
memset(dspbuff,0,20);
memcpy(dspbuff,rbuff+i3,cp);
Dsp_str(dspbuff,i2,0);
i2+=2;
i3+=cp;
}
}
#include "stdio.h "
#include "string.h "
#include "stdlib.h "
#include "itron.h "
#include "casio.h "
#include "cmndef.h "
#include "bios1mac.h"
#include "math.h"
#include "function.h"
/* 定义上下传文件*/
#define filename "JIADONG.CSV"
#define turn_file "turn.txt"
#define stockfile "mechine.txt"
/* 定义所使用的函数 */
void main_menu(void);
/* 主菜单 */
void jiadong_menu(void);
/* 稼動採集 */
void sub_main_menu1(char *turn);
/* */
void main_menu3(void);
/* 數據上傳 */
void main_menu4(void);
/* 數據?除 */
void stock_menu(void);
/* 固資盤點 */
void stock_check(void);
/* 開始盤點 */
void stock_load(void);
/* 盤點傳? */
void stock_setting(void);
/* 盤點設定 */
void stock_find(void);
/* 盤點查找 */
struct checkmc
{
char mno[13];
/* 机台号 */
char cno[13];
/* 连络单号 */
char status[2];
/* 机台状态4=T,5=E,6=M,8=R,9=S */
char model_no[20];
/* 模件号 */
char repare_no[20];
/* 模修单号 */
char linxin_no[20];
/* 零星加工单号*/
char person_no[6];
/* 加工者工? */
char snow[20];
char turn[20];
/* 溢出?题没有解决 */
char hui;
};
/* 警告声函数 */
void warning_sound(void);
/************************************/
/* TASK MAIN PART 主函数 */
/* 相当于 C 语言的 MAIN 函数 */
/************************************/
void ap_start ( void )
{
main_menu();
}
/************************************/
/* 主菜单函数 */
/************************************/
void main_menu()
{
ER ret;
while(1)
{
cls();
Dsp_str("==华南资源采集系统==",1,0);
Dsp_str(" 1.稼动采集V1.0",3,0);
Dsp_str(" 2.固资盘点V1.0",5,0);
Dsp_str("==SHZBG华南模具NO1==",7,0);
Dsp_str("==华南系统资讯开发==",9,0);
do
{
ret=get_chr(NONE);
}
while(ret!=49&&ret!=50);
switch(ret)
{
case 49:jiadong_menu();break;
case 50:stock_menu();break;
}
}/*end while*/
}
/* 稼动系统菜单*/
void jiadong_menu(void)
{
char buff[20],key[6],answer[]="158106",code[2];
char start[]="1A";
ER er,ret;
char kind;
W i;
while(1)
{
cls();
Dsp_str("==华南稼动盘点系统==",1,0);
Dsp_str(" 1.按轮盘点",3,0);
Dsp_str(" 2.数据上传",5,0);
Dsp_str(" 3.数据删除",7,0);
Dsp_str(" 4.楼层盘点",9,0);
do
{ret=get_chr(NONE);}
while(ret!=49&&ret!=50&&ret!=51&&ret!=52&&ret!=255);
switch(ret)
{
case 49:
a1: if(Is_file(turn_file)==1)
{
creat_file(turn_file);
dat_F_Write(turn_file,0,0,&start,sizeof(start));
}
er=dat_F_Read(turn_file,0,buff,sizeof(buff));
cls();
Dsp_str("==确认扫描的轮次==",1,0);
Dsp_str("当前轮编号:",3,0);
Dsp_str(buff,5,0);
Dsp_str("1.继续 2.新建轮次",7,0);
Dsp_str("==请谨慎选择轮次!==",9,0);
do
{ret=get_chr(NONE);}
while(ret!=49&&ret!=50&&ret!=255&&ret!=45);
switch(ret)
{
case 49:
cls();
Dsp_str("你确定要继续本轮?",2,1);
Dsp_str("ENT 继续",5,3);
Dsp_str("任意键 返回",8,3);
kind=getkey();
if(kind==13)
sub_main_menu1(buff);
;break;
case 50:
cls();
Dsp_str("你确定要新建轮?",2,1);
Dsp_str("ENT 新建",5,3);
Dsp_str("任意键 返回",8,3);
kind=getkey();
if(kind==13)
{
memset(code,0,sizeof(code));
memcpy(code,buff+strlen(buff)-1,1);
i=atol(buff);
i++;
cls();
memset(buff,0,sizeof(buff));
sprintf(buff,"%d",i);
/* cls();
Dsp_str(buff,1,0);
Dsp_str(code,3,0);
getkey();*/
strcat(buff,code);
cls();
Dsp_str("新建轮成功,编号:",2,1);
Dsp_str(buff,5,1);
Dsp_str("任意键继续",7,3);
dat_F_Write(turn_file,0,0,&buff,sizeof(buff));
getkey();
sub_main_menu1(buff);
}
break;
case 45:
cls();
memset(key,0,sizeof(key));
Dsp_str("Pls Enter the PWD:",2,0);
lcd_csr_put(5,0);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(5,0,0,key,6);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==E_KEY_CLR) /*按 CLR 键处理方式*/
{
break;
}
if(strcmp(key,answer)==0)
{
cls();
memset(buff,0,sizeof(buff));
Dsp_str("Enter Manual Code:",2,0);
lcd_csr_put(5,0);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(5,0,0,buff,20);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==E_KEY_CLR) /*按 CLR 键处理方式*/
{
break;
}
Dsp_str(buff,5,0);
dat_F_Write(turn_file,0,0,&buff,sizeof(buff));
Dsp_str("set is successful,Now Is",7,0);
memset(buff,0,sizeof(buff));
er=dat_F_Read(turn_file,0,buff,sizeof(buff));
Dsp_str(buff,9,0);
getkey();
}
case 255:;break;
}/* end switch*/
/* }end while*/
break;
case 50 :main_menu3();break;
case 51 :main_menu4();break;
case 52 :
memset(buff,0,sizeof(buff));
sub_main_menu1(buff);
break;
case 255:return;break;
}/*end switch*/
}/*end while*/
}/*end main_menu*/
void sub_main_menu1(char *turn)
{
struct checkmc checkmc1;
char sdate[8],stime[6],hui='/n';
char dsp[20];
char buff1[25],buff2[25],titile[]="self_no,conn_no,status_id,tu_no,moxiu_no,linxin_no,person_no,scan_time,turn";
ER ret;
if(Is_file(filename)==1)
{
creat_file(filename);
dat_F_Write(filename,1,0,&titile,sizeof(titile));
dat_F_Write(filename,1,0,&hui,sizeof(hui));
}
/* 进入循环扫描条码状态 */
while(1)
{
/************************************************/
r1: cls();
memset(&checkmc1.mno,0,sizeof(checkmc1));
memset(dsp,0,sizeof(dsp));
format_w(&checkmc1.mno);
memcpy(&checkmc1.turn,turn,20);
checkmc1.hui=10;
s_now(&checkmc1.snow,sdate,stime);
memcpy(dsp,&checkmc1.snow,19);
do
{
memset(buff1,0,25);
Dsp_str(dsp,1,0);
Dsp_str("机台号: ",3,0);
Dsp_str("CLR返回,轮:",9,0);
Dsp_str(&checkmc1.turn,9,11);
lcd_csr_put(3,7);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(3,7,0,buff1,14);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==E_KEY_CLR) /*按 CLR 键处理方式*/
{
return;
}
dealinput(buff1,buff2);
if(checkmno(buff2)==1)
warning_sound();
}
while(checkmno(buff2));
memcpy(&checkmc1.mno,buff2+1,12);
Dsp_str(checkmc1.mno,3,7);
/****************************************************/
do
{
memset(buff1,0,25);
Dsp_str("单号: ",5,0);
lcd_csr_put(5,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(5,5,0,buff1,15);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
dealinput(buff1,buff2);
if(checkcno(buff2)&&checkent(buff1)!=0)
warning_sound();
}while(checkcno(buff2)&&checkent(buff1));
memcpy(&checkmc1.cno,buff2+1,12);
if(checkmc1.cno[0]==42)/*处理dealinput两端加*,留下的第一位*号,如果单号1位=*,置为0*/
checkmc1.cno[0]=0;
if(checkmc1.cno[11]==42)/*如果单号12位=*,置为0*/
checkmc1.cno[11]=0;
Dsp_str(checkmc1.cno,5,5);
if(checkent(buff1)!=0) /*不是按了回车*/
{
checkmc1.status[0]=55;
/* status='7' */
checkmc1.status[1]=44;
dat_F_Write(filename,1,0,&checkmc1,sizeof(checkmc1));
}
else
/*1*/
{
/***************************************************/
do
{
memset(buff1,0,25);
Dsp_str("状态:",7,0);
Dsp_str("4=T,5=E,6=M,8=R,9=S ",9,0);
lcd_csr_put(7,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(7,5,2,buff1,1);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
if(checkstatus(buff1)!=0)
warning_sound();
}while(checkstatus(buff1));
memcpy(&checkmc1.status,buff1,1);
/* 获得status的置 */
Dsp_str(checkmc1.status,7,5);
if(checkmc1.status[0]!=53&&checkmc1.status[0]!=52) /*if 1*/
{
dat_F_Write(filename,1,0,&checkmc1,sizeof(checkmc1));
}
else
/* else
2*/
{
if(checkmc1.status[0]==53)
{
do
{
memset(buff1,0,25);
cls();
Dsp_str("机台稼动异常",1,0);
Dsp_str("工号:",3,0);
lcd_csr_put(3,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(3,5,2,buff1,5);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
if(checkcno_digi(buff1,0,4)!=0)
warning_sound();
}while(checkcno_digi(buff1,0,4)!=0);
memcpy(&checkmc1.person_no,buff1,5);
Dsp_str(checkmc1.person_no,3,5);
dat_F_Write(filename,1,0,&checkmc1,sizeof(checkmc1));
}
else
{
memset(buff1,0,25);
cls();
Dsp_str("图号:",1,0);
lcd_csr_put(1,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(1,5,2,buff1,19);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
memcpy(&checkmc1.model_no,buff1,19);
Dsp_str(checkmc1.model_no,1,5);
checkmc1.model_no[20]=44;
/*------------------------*/
memset(buff1,0,25);
Dsp_str("模修:",3,0);
lcd_csr_put(3,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(3,5,2,buff1,20);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
memcpy(&checkmc1.repare_no,buff1,19);
Dsp_str(checkmc1.repare_no,3,5);
/*------------------------*/
memset(buff1,0,25);
Dsp_str("零星:",5,0);
lcd_csr_put(5,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(5,5,2,buff1,20);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
memcpy(&checkmc1.linxin_no,buff1,19);
Dsp_str(checkmc1.linxin_no,5,5);
/*-----------------------------*/
do
{
memset(buff1,0,25);
Dsp_str("工号:",7,0);
lcd_csr_put(7,5);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(7,5,2,buff1,5);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==255)
{
goto r1;
}
if(checkcno_digi(buff1,0,4)!=0)
warning_sound();
}while(checkcno_digi(buff1,0,4)!=0);
memcpy(&checkmc1.person_no,buff1,5);
Dsp_str(checkmc1.person_no,7,5);
dat_F_Write(filename,1,0,&checkmc1,sizeof(checkmc1));
}
}/* else
2*/
/* }end if 1*/
}/*end else
1 */
}/* end while(1) */
}/* end main_menu1 */
void main_menu3(void)
{
if(Is_file(filename)==1)
{
cls();
Dsp_str(" 数据文件没有下传",2,0);
Dsp_str(" 请执行数据传输功能",5,0);
Dsp_str("将数据文件传至盘点机",8,0);
warning_sound();
WAIT;
return;
}
if(sendfile(filename)==E_OK)
{
cls();
del_file(filename);
Dsp_str("数据上传成功, 并删除了!",5,2);
WAIT;
}
}/*end main_menu3*/
void main_menu4(void)
{
char kind;
cls();
Dsp_str("你确定要删除数据吗?",2,1);
Dsp_str("ENT 删除",5,3);
Dsp_str("任意键 不删除",8,3);
kind=getkey();
if(kind==13) del_file(filename);
}/* end main_menu4 */
void stock_menu(void)
{
ER ret;
while(1)
{
cls();
Dsp_str("==固定资产盘点系统==",1,0);
Dsp_str(" 1.开始盘点",3,0);
Dsp_str(" 2.数据传输",5,0);
Dsp_str(" 3.系统设定",7,0);
Dsp_str(" 4.查找",9,0);
do
{ret=get_chr(NONE);}
while(ret!=49&&ret!=50&&ret!=51&&ret!=52&&ret!=255);
switch(ret)
{
case 49: stock_check();break;
case 50: stock_load();break;
case 51: stock_setting();break;
case 52: stock_find();break;
case 255: return;break;
}
}
}
void stock_setting()
{
}
void stock_load()
{
}
void stock_find()
{
}
void stock_check()
{
char buff1[20],buff2[25],rbuff[104],mno[13],conf[2]="1";
ER ret;
W fpos=0;
if (Is_file(filename)==1)
{
Dsp_str("没有盘点文件,请下载!",3,0);
return;
}
while(1)
{
r1: do
{
cls();
memset(mno,0,13);
memset(rbuff,0,104);
memset(buff1,0,20);
Dsp_str("机台号: ",1,0);
Dsp_str(" CLR返回主菜单",9,0);
lcd_csr_put(1,7);
lcd_csr_set((H)LCD_CSR_UNDER);
key_clear();
ret=read_str(1,7,0,buff1,14);
lcd_csr_set((H)LCD_CSR_OFF);
if(ret==E_KEY_CLR) /*按 CLR 键处理方式*/
{
return;
}
dealinput(buff1,buff2);
if(checkmno(buff2)==1)
warning_sound();
}
while(checkmno(buff2));
memcpy(mno,buff2+1,12);
ret=search(stockfile,0,104,0,12,mno,rbuff,&fpos);
switch(ret)
{
case E_PRM:
{
Dsp_str(" 参数错误! ",9,0);
getkey();
goto r1;
}
case E_NG:
{
Dsp_str(" 无文件! ",9,0);
getkey();
goto r1;
}
case E_OK: break;
default:
{
Dsp_str(" 未找到记录 ",9,0);
getkey();
goto r1;
}
}
dsp(rbuff);
ret=dat_F_Write(stockfile,0,fpos+100,&conf,2);
if(ret==E_PRM)
{
cls();
Dsp_str("写入资料失败,重来!",3,1);
WAIT;
}
WAIT;
}
}
--------------------------------------------
/*处理函数声明部分*/
void s_now(B *snow,B *sdate,B *stime);
void s_now_dsp(B *snow,B *sdate,B *stime);
void dealinput(char *buff_in,char *buff_out);
void format_w(char *buff);
/*数据检验声明部分*/
H checkmno(char *buff);
H checkcno(char *buff);
H checkcno_digi(char *buff,H a,H b);
H checkent(char *buff);
H checkstatus(char *buff);
void dsp(char *rbuff);
/*文件处理函数*/
/* 数据不正常发出的响声 */
void warning_sound(void)
{
s_sound( 3000, 9 );
Wait2( 5L );
s_sound( 3000, 9 );
Wait2( 5L );
s_sound( 3000, 9 );
}
/* 格式化日期为2004-08-18 17:18:18 */
void s_now_dsp(B *snow,B *sdate,B *stime)
{
H i;
get_date_str(sdate,stime);
for(i=0;i<8;i++)
{
if(sdate==32)
sdate=48;
}
for(i=0;i<6;i++)
{
if(stime==32)
stime=48;
}
memcpy(&snow[0],&sdate[4],2);
memset(&snow[2],45,1);
memcpy(&snow[3],&sdate[6],2);
memset(&snow[5],32,1);
memcpy(&snow[6],stime,2);
memset(&snow[8],58,1);
memcpy(&snow[9],&stime[2],2);
memset(&snow[11],0,1);
/*memset(&snow[19],44,1);*/
}
void s_now(B *snow,B *sdate,B *stime)
{
H i;
get_date_str(sdate,stime);
for(i=0;i<8;i++)
{
if(sdate==32)
sdate=48;
}
for(i=0;i<6;i++)
{
if(stime==32)
stime=48;
}
memcpy(&snow[0],&sdate[0],4);
memset(&snow[4],45,1);
memcpy(&snow[5],&sdate[4],2);
memset(&snow[7],45,1);
memcpy(&snow[8],&sdate[6],2);
memset(&snow[10],32,1);
memcpy(&snow[11],stime,2);
memset(&snow[13],58,1);
memcpy(&snow[14],&stime[2],2);
memset(&snow[16],58,1);
memcpy(&snow[17],&stime[4],2);
/*memset(&snow[19],44,1);*/
}
/*检查机台号码是否满足条件 */
H checkmno(char *buff)
{
if(strlen(buff)!=14) /*长度不等于14,抛出1*/
return 1;
if(buff[0]!=42)
return 1;
if(buff[1]<65||buff[2]!=45||buff[3]!=84||buff[9]!=45)
return 1;
return 0;
}
/*检查连络单号*/
/* 较V1.33,效率差,V1.33当第一个满足时直接跳出,而这个却要计算整个值,
特别是要进行循环 ,所以越是苛刻且简单计算的条件,应该放在前面,不满足就跳出 */
/*H checkcno(char *buff)
{
if(strlen(buff)==14||strlen(buff)==13&&buff[0]==42&&(buff[1]<65||checkcno_digi(buff,3,11)))
return 0;
return 1;
}
*/
H checkcno(char *buff)
{
if(strlen(buff)!=14&&strlen(buff)!=13)
return 1;
if(buff[0]!=42)
return 1;
if(buff[1]<65||checkcno_digi(buff,3,11))
return 1;
return 0;
}
/* 检查buff 中从a开始到b为止(含b)的值是否为数字*/
H checkcno_digi(char *buff,H a,H b)
{
H i;
for(i=a;i<=b;i++)
{
if(isdigit(buff)==0)
return 1;
}
return 0;
}
/*检查是否只按了回车,如果相等0[25]则返回0*/
H checkent(char *buff)
{
char *buff1[25];
memset(buff1,0,25);
return(strcmp(buff,buff1));
}
/* 检查输入是否是5,6、8、9*/
H checkstatus(char *buff)
{
if(buff[0]!=57&&buff[0]!=56&&buff[0]!=54&&buff[0]!=53&&buff[0]!=52)
return 1;
return 0;
}
/* 不是条码直接输入处理函数 */
void dealinput(char *buff_in,char *buff_out)
{
H i;
memset(buff_out,0,25);
if(buff_in[0]!=42)
{
memset(&buff_out[0],42,1);
memcpy(&buff_out[1],buff_in,24);
for(i=1;i<25;i++)
{
if(buff_out==0)
{
memset(&buff_out,42,1);
return;
}
}
}
else
{
memcpy(buff_out,buff_in,25);
}
}
/* 处理csv格式*/
void format_w(char *buff)
{
H cp[9]={13,13,2,20,20,20,6,20,20};
H i,i3;
i=0;
i3=i+cp;
for(;i<8;i++)
{
memset(&buff[i3-1],44,1);
i3+=cp[i+1];
}
}
void dsp(char *rbuff)
{
char dspbuff[20];
H cp[5]={10,9,16,9,15};
H i,i2=1,i3=13;
for(i=0;i<5;i++)
{
memset(dspbuff,0,20);
memcpy(dspbuff,rbuff+i3,cp);
Dsp_str(dspbuff,i2,0);
i2+=2;
i3+=cp;
}
}