📄 dongyi.c.bak
字号:
//界面函数库
#include "fPublic.h"
#include "fDongYi.h"
#include "fWorkFnc.h"
#include "Messagebox.h"
#define FIELD_LEN_FIELD 16 //默认的表单长度(英文)
#define FIELD_LEN_START 4 //默认的表单长度(中文)
int sfxFormRecCnt(char *sBillName,DB_HANDLE hRec,DB_HANDLE hInfo,char *sMsg,char *sBillNo,char *sCount,char *sTmpBuff);
void Sfx_MenuMain(void);
int sfxMenuMain(void);
void Sfx_FormRecCnt(char *sBillName);
void Sfx_FormDelete(void);
int sfxFormDelete(void);
void Sfx_FormCodeId(void);
int sfxFormCodeId(void);
int main(void)
{
int Item_no,Item_sub,Is_Run=1;
char msg[20]={0};
initscr(); // 对ncurses包进行初始化
cbreak(); // 控制程序--读取除了DELETE或者CTRL等特殊字符以外的所有字符
noecho(); // 使键盘输入的字符不需要直接在屏幕上显示出来
keypad(stdscr, TRUE);
DB_Initial() ; // 初始化数据库系统
Sfx_MenuMain();
//stAddNewRec();
exit:
DB_Uninitial() ; // 释放数据库系统所占用的资源
endwin() ;
return 0 ;
}
void Sfx_MenuMain(void)
{
int iRunState=SFX_CYC_START;
int iResult=SFX_RUN_START;
DB_HANDLE hdb;
int iItem_No;
char sBillName[50];
while(iRunState)
{
switch(iResult)
{
case SFX_RUN_START:
{
//调用主功能函数
iItem_No=sfxMenuMain();
iResult=SFX_RUN_START;
iRunState=SFX_CYC_START;
switch(iItem_No)
{
case 0:case -1:
{
iResult=SFX_RUN_CANCEL;//停止执行
break;
}
case 1://出库
{
if(sfxPreRecCnt(sBillName)>0)
{
sfxTrim(sBillName);
if(!sfxIsNull(sBillName)) Sfx_FormRecCnt(sBillName);
}
else
{
MessageBox("请设置操作员代码!",ONLY_OK);
}
break;
}
case 2://通讯
{
if(MessageBox("上传将清除所有记录\n是否上传!",OK_CANCEL)!=KEY_F(12))
{
sfxUploadFiles(SFX_BAND_RATE_DEF);
}
break;
}
case 3://查询及删除
{
Sfx_FormDelete();
break;
}
case 4: //操作员代码
{
Sfx_FormCodeId();
}
break;
case 5://版权
{
MessageBox("广州一维 版权所有\n\n服务请登陆\nwww.ewaytech.com.cn\n查询联系方式",ONLY_OK);
break;
}
}
break;
}
case SFX_RUN_CANCEL:
{
//退出循环,返回上层菜单
iRunState=SFX_CYC_STOP;
iResult=SFX_RUN_START;
break;
}
case SFX_RUN_ERROR:
{
//调用错误处理界面
iResult=SFX_RUN_START;
iRunState=SFX_CYC_START;
break;
}
default:
{
iResult=SFX_RUN_START;//默认继续执行
iRunState=SFX_CYC_START;
break;
}
}
}
}
int sfxMenuMain(void)
{
MENU *Menu;
int Item_No;
char Items_Name[5][ITEM_LEN]={"1.出库","2.通讯","3.查询及删除","4.操作员代码","5.版权"};
sys_select_ime(IME_NUM|IME_LOWER|IME_UPPER|IME_CN);
clear() ; // 清空屏幕内容
mvprintw( 0 , 0 , "广州一维数据采集系统" ) ;
mvprintw( 1 , 0 , "──────────" ) ;
mvprintw( 8 , 0 , "──────────" ) ;
mvprintw( 9 , 0 , "返回 确定" ) ;
Menu = Creat_Window_Menu( Items_Name , 0 , 5 , 5 , 2 , 0 ) ;
if(Menu==0)
{
//内存不足或Item_Name超长则无法建立菜单
mvprintw( 2 , 0 , "建立菜单失败!!" ) ; // 打印错误信息
getch() ; // 等待用户按键
goto exit ;
}
Item_No=Get_Selected_Menu_Item(Menu);
Free_Menu(Menu);
return Item_No;
exit:
return SFX_RUN_CANCEL;
}
void Sfx_FormRecCnt(char *sBillName)
{
int iRunState=SFX_CYC_START;
int iResult=SFX_RUN_START;
char sMsg[20]={0};
char sBillNo[30]={0},sCount[30]={0};
char sTmpBuff[50]={0};
DB_HANDLE hRec, hInfo;
//打开数据库
//盘点
sfxDetailOpen(&hRec);
//库存
sfxWorkIdOpen(&hInfo);
while(iRunState)
{
switch(iResult)
{
case SFX_RUN_START:
{
//调用主功能函数
iResult=sfxFormRecCnt(sBillName,hRec,hInfo,sMsg,sBillNo,sCount,sTmpBuff);
iRunState=SFX_CYC_START;
break;
}
case SFX_RUN_CANCEL:
{
//退出循环,返回上层菜单
iResult=SFX_RUN_START;
iRunState=SFX_CYC_STOP;
break;
}
case SFX_RUN_ERROR:
{
//调用错误处理界面
iResult=SFX_RUN_START;
iRunState=SFX_CYC_START;
break;
}
default: //扩展功能处理
{
//switch(iResult)
//{
//}
iResult=SFX_RUN_START;
iRunState=SFX_CYC_START;
break;
}
}
}
DB_Close(hRec);
DB_Close(hInfo);
}
int sfxFormRecCnt(char *sBillName,DB_HANDLE hRec,DB_HANDLE hInfo,char *sMsg,char *sBillNo,char *sCount,char *sTmpBuff)
{
//创建表单
// 域指针数组
FIELD *Field[1 + 1 ];
FORM *Form; // 表单指针
int i,IsRun,key;
int iRecState=0;
// char sMsg[50]={0},sBuff[30]={0},sTemp[30]={0};
/*
char sMsg[20]={0};
char sBillNo[30]={0},sCount[30]={0};
char sTmpBuff[50]={0};
*/
int iReCode=SFX_RUN_START;
// int iRecTotal=0;
//DB_HANDLE hRec, hInfo;
clear(); // 清屏
keypad(stdscr, TRUE);
// 创建域
// new_field( 行数 , 列数 , 行位置 , 列位置 , 可显示行数(一般为0) , 缓冲区编号(一般为0) )
Field[0] = new_field( 1 , FIELD_LEN_FIELD, 4, FIELD_LEN_START, 0 , 0);
Field[1] = 0 ; // 域数组最后一个成员指针以0结束
for( i = 0 ; i < 1; i++ ){
if( Field[i] == 0 ){ // 域创建失败
// 显示消息框
// ONLY_OK 表示按任意键继续
MessageBox( "域创建失败" , ONLY_OK ) ;
goto exit ;
}
// 取消 当域输入满之后自动跳到下一个域的选项
field_opts_off( Field[i], O_AUTOSKIP);
// 设置域的背景为下划线
set_field_back(Field[i], A_UNDERLINE );
// 设置域填充字符为0x81
set_field_pad(Field[i], 0x81);
}
// 根据域指针数组,生成表单
Form = new_form( Field );
// 显示表单
post_form( Form);
//sprintf(sMsg,"单号[%s]",sCurBillNo);
//sfxTrim(sMsg);
mvprintw(0,0,"出库");
mvprintw(1,0,"──────────");
sprintf(sMsg,"单号[%s]",sBillName);
mvprintw(3,0,sMsg);
mvprintw(4,0,"扫描");
mvprintw(8,0,"──────────");
mvprintw(9,0,"返回 确定");
refresh();
// IsRun = 1 ;
/*if(!sys_open_laser())
{
goto exit ;
}*/
sys_open_laser();
if(sfxDetailSeek(hRec,sBillName)==DB_FIND_RECORD)
{
sfxDetailGetValue(hRec,sBillNo,sCount);
mvprintw(5,0," ");
sprintf(sMsg,"共有[%d]记录",atoi(sCount));
mvprintw(5,0,sMsg);
}
else
{
mvprintw(5,0," ");
sprintf(sMsg,"共有[%d]记录",0);
mvprintw(5,0,sMsg);
}
while(iReCode!=SFX_RUN_CANCEL)
{
// 将输入位置定于第一个字段
form_driver( Form, REQ_FIRST_FIELD );
form_driver( Form, REQ_CLR_FIELD );
// if(sfxDetailSeek(hRec,sBillName)==DB_FIND_RECORD)
{
sfxDetailGetValue(hRec,sBillNo,sCount);
mvprintw(5,0," ");
sprintf(sMsg,"共有[%d]记录",atoi(sCount));
mvprintw(5,0,sMsg);
}
/* else
{
mvprintw(5,0," ");
sprintf(sMsg,"共有[%d]记录",0);
mvprintw(5,0,sMsg);
}*/
form_driver( Form, REQ_VALIDATION );
iRecState=0;
IsRun=1;
while( IsRun )
{
// 刷新屏幕 并 读入用户按键
switch( key = getch() )
{
case _KEY_LASER_BEGIN:
form_driver( Form, REQ_CLR_FIELD );
break ;
case _KEY_LASER_END:
form_driver( Form, REQ_VALIDATION ); // 校验
//检查记录是否存在
//int sfxSeekFile(char *sBillName,char *sValue)
if(!sfxCheckLength( FIELD_VAL(0)))
{
MessageBox( "位长不符!" , ONLY_OK ) ;
form_driver( Form, REQ_CLR_FIELD );
}
else
{
sys_shake(500);
strcpy(sTmpBuff,FIELD_VAL(0));
sfxTrim(sTmpBuff);
if(!sfxSeekFileEx(sBillName,sTmpBuff))
{
//查找数据库
//if(sfxDetailSeek(hRec,sBillName) ==DB_FIND_RECORD)
{
strcat(sTmpBuff,"\r\n");
sfxWriteLineEx(sBillName,sTmpBuff);
sfxDetailGetValue(hRec,sBillNo,sCount);
sprintf(sCount,"%d",atoi(sCount)+1);
sfxDetailUpdate(hRec,sBillNo,sCount);
mvprintw(5,0," ");
sprintf(sMsg,"共有[%d]记录",atoi(sCount)+1);
mvprintw(5,0,sMsg);
iRecState=1;
IsRun = 0 ;
}
/*else
{
MessageBox( DB_Get_Last_Error() , ONLY_OK ) ;
form_driver( Form, REQ_CLR_FIELD );
IsRun = 0 ;
}*/
}
else
{
MessageBox( "记录已存在!" , ONLY_OK ) ;
form_driver( Form, REQ_CLR_FIELD );
}
}
break ;
case _KEY_ENTER: // LK9000 '确认'键
case _KEY_G: // LK9000 'G'键
case KEY_ENTER: // PC键盘的回车键
form_driver( Form, REQ_VALIDATION );
if(iRecState==0)
{
if(!sfxCheckLength( FIELD_VAL(0)))
{
MessageBox( "位长不符!" , ONLY_OK ) ;
form_driver( Form, REQ_CLR_FIELD );
}
else
{
strcpy(sTmpBuff,FIELD_VAL(0));
sfxTrim(sTmpBuff);
if(!sfxSeekFileEx(sBillName,sTmpBuff))
{
//查找数据库
// if(sfxDetailSeek(hRec,sBillName)==DB_FIND_RECORD)
{
strcat(sTmpBuff,"\r\n");
sfxWriteLineEx(sBillName,sTmpBuff);
sfxDetailGetValue(hRec,sBillNo,sCount);
sprintf(sCount,"%d",atoi(sCount)+1);
sfxDetailUpdate(hRec,sBillNo,sCount);
mvprintw(5,0," ");
sprintf(sMsg,"共有[%d]记录",atoi(sCount)+1);
mvprintw(5,0,sMsg);
iRecState=1;
IsRun = 0 ;
}
/* else
{
MessageBox( DB_Get_Last_Error() , ONLY_OK ) ;
form_driver( Form, REQ_CLR_FIELD );
IsRun = 0 ;
}*/
}
else
{
MessageBox( "记录已存在!" , ONLY_OK ) ;
form_driver( Form, REQ_CLR_FIELD );
}
}
}
//iReCode=SFX_RUN_CANCEL;
IsRun = 0 ;
break;
case KEY_F(12):
form_driver( Form, REQ_VALIDATION );
if(iRecState==0)
{
if(!sfxCheckLength( FIELD_VAL(0)))
{
//MessageBox( "位长不符!" , ONLY_OK ) ;
form_driver( Form, REQ_CLR_FIELD );
}
else
{
strcpy(sTmpBuff,FIELD_VAL(0));
sfxTrim(sTmpBuff);
if(!sfxSeekFileEx(sBillName,sTmpBuff))
{
//查找数据库
//if(sfxDetailSeek(hRec,sBillName)==DB_FIND_RECORD)
{
strcat(sTmpBuff,"\r\n");
sfxWriteLineEx(sBillName,sTmpBuff);
sfxDetailGetValue(hRec,sBillNo,sCount);
sprintf(sCount,"%d",atoi(sCount)+1);
sfxDetailUpdate(hRec,sBillNo,sCount);
mvprintw(5,0," ");
sprintf(sMsg,"共有[%d]记录",atoi(sCount)+1);
mvprintw(5,0,sMsg);
iRecState=1;
IsRun = 0 ;
}
/*else
{
MessageBox( DB_Get_Last_Error() , ONLY_OK ) ;
form_driver( Form, REQ_CLR_FIELD );
IsRun = 0 ;
}*/
}
else
{
MessageBox( "记录已存在!" , ONLY_OK ) ;
form_driver( Form, REQ_CLR_FIELD );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -