|
#include
#include "ncurses.h"
#include
#include
#include "dbms.h"
#include "Header.h"
extern char barcode[21];
extern unsigned long barcount;
extern char msg[60];
extern char bwhid[21];
extern char boxid[21];
extern char startdata[21];
extern char worker[21];
extern char address[21];
char display[300];
//表箱出库
void multi(void)
{
int ret,Key;
DB_HANDLE hdb ; // 数据库句柄
char temp[50] ;
clear();//清屏
ret = MessageBox("是否保留原来数据?",OK_CANCEL);
switch( ret )
{
case _KEY_ENTER:
case _KEY_G:
case KEY_ENTER:
break;
case KEY_F(12):
db_clear();
break;
}
//装箱人
workerinfo();
scan();//扫描条码
}
void scan()
{
int re,isRun;
re=db_open();
if(re!=1)
{
sys_beep(2000);
frm_msg(msg,KEY_ANY);
db_close();
return;
}
sys_open_laser();
isRun = 1;
while(isRun)
{
//扫描箱号
re=frm_scanBox();
if(re==-1)
{
sys_beep(2000);
frm_msg(msg,KEY_ANY);
}
db_getCount();
//扫描资产号
re=frm_scanAssets();
if(re==1)//ESC返回
{
isRun=0;
}
if(re==-1)
{
sys_beep(2000);
frm_msg(msg,KEY_ANY);
isRun=0;
}
}
sys_close_laser();
db_close();
}
int frm_scanBox()
{
int re,Result,IsRun,Key;
char *data;
FIELD *Field[2];
FORM *Form;
clear();
Field[0] = new_field( 1, 20, 4, 0, 0, 0 );
Field[1] = 0;
field_opts_off( Field[0], O_AUTOSKIP);
set_field_back(Field[0], A_UNDERLINE );
set_field_pad(Field[0], 0x81);
Form = new_form( Field );
post_form( Form);
keypad(stdscr, TRUE); //开启功能键
mvprintw( 2 , 0 , "请读入箱号:") ;
refresh();
set_current_field( Form , Field[0] ) ;
form_driver( Form, REQ_END_LINE );
IsRun=1;
while( IsRun )
{
switch( Key = getch() )
{
case _KEY_LASER_BEGIN:
form_driver( Form, REQ_CLR_FIELD );
break ;
case _KEY_LASER_END:
case _KEY_ENTER:
case _KEY_G:
case KEY_ENTER:
form_driver( Form, REQ_VALIDATION ) ;
data=field_buffer( Field[0] , 0 ) ;
if( data[0]==32 )
{
form_driver( Form, REQ_CLR_FIELD );
form_driver( Form, REQ_END_LINE );
break ;
}
strcpy( boxid , FIELD_VAL(0) ) ;
Trim(boxid);
//mvprintw( 9 , 0 , "目前已读%d",barcount) ;
set_current_field( Form , Field[0] ) ;
form_driver( Form, REQ_CLR_FIELD );
form_driver( Form, REQ_END_LINE );
IsRun=0;
Result=0;
break;
case KEY_F(12):
Result=0;
IsRun=0;
break;
case _KEY_BS:
case KEY_BACKSPACE:
form_driver( Form, REQ_DEL_PREV );
break;
default://长度
form_driver( Form, Key );
}
}
end:
unpost_form( Form );
free_form( Form);
free_field( Field[0]);
return Result;
}
int frm_scanAssets()
{
int re,Result,scanRun,IsRun,Key;
char *data;
FIELD *Field[3];
FORM *Form;
clear();
Field[0] = new_field( 1, 12, 3, 8, 0, 0 );
field_opts_off( Field[0], O_AUTOSKIP);
set_field_back(Field[0], A_UNDERLINE );
set_field_pad(Field[0], 0x81);
Field[1] = new_field( 1, 12, 5, 8, 0, 0 );
Field[2] = 0;
field_opts_off( Field[1], O_AUTOSKIP);
set_field_back(Field[1], A_UNDERLINE );
set_field_pad(Field[1], 0x81);
Form = new_form( Field );
post_form( Form);
keypad(stdscr, TRUE);
mvprintw( 1 , 0 , "箱号:") ;
mvprintw( 1 , 8 , boxid);
mvprintw( 3 , 0 , "条码:") ;
mvprintw( 5 , 0 , "底度:") ;
mvprintw( 7 , 0 , "新箱号 打印单") ;
mvprintw( 9 , 0 , "目前已读 %d",barcount) ;
refresh();
scanRun=1;
while(scanRun)
{
set_current_field( Form , Field[0] ) ;
form_driver( Form, REQ_CLR_FIELD );
form_driver( Form, REQ_END_LINE );
IsRun=1;
while( IsRun )
{
switch( Key = getch() )
{
case _KEY_LASER_BEGIN:
form_driver( Form, REQ_CLR_FIELD );
break ;
case _KEY_LASER_END:
case _KEY_ENTER:
case _KEY_G:
case KEY_ENTER:
form_driver( Form, REQ_VALIDATION ) ;
data=field_buffer( Field[0] , 0 ) ;
if( data[0]==32 )
{
form_driver( Form, REQ_CLR_FIELD );
form_driver( Form, REQ_END_LINE );
break ;
}
strcpy( barcode , FIELD_VAL(0) ) ;
Trim(barcode);
if(re==-1)
{
Result=-1;
IsRun=0;
scanRun=0;
break;
}
mvprintw( 9 , 0 , " ") ;
mvprintw( 9 , 0 , "目前已读 %d",barcount) ;
form_driver( Form, REQ_NEXT_FIELD);
refresh() ;
IsRun=0;
break;
case KEY_F(12):
Result=1;
IsRun=0;
scanRun=0;
goto end;
break;
// 下一个域
case KEY_DOWN:
// form_driver( Form, REQ_NEXT_FIELD);
// form_driver( Form, REQ_VALIDATION );
break;
//新装箱
case _KEY_F1:
Result=0;
IsRun=0;
scanRun=0;
goto end;
break;
//红外打印装箱单
case KEY_F(4):
case _KEY_F4:
printlist();
Result=1;
IsRun=0;
scanRun=0;
goto end;
break;
case _KEY_BS:
case KEY_BACKSPACE:
form_driver( Form, REQ_DEL_PREV );
break;
default://长度
form_driver( Form, Key );
}
}
//输入表底度
set_current_field( Form , Field[1] ) ;
form_driver( Form, REQ_CLR_FIELD );
form_driver( Form, REQ_END_LINE );
IsRun=1;
while( IsRun )
{
switch( Key = getch() )
{
case _KEY_LASER_BEGIN:
form_driver( Form, REQ_CLR_FIELD );
break ;
case _KEY_LASER_END:
case _KEY_ENTER:
case _KEY_G:
case KEY_ENTER:
form_driver( Form, REQ_VALIDATION ) ;
data=field_buffer( Field[1] , 0 ) ;
if( data[0]==32 )
{
form_driver( Form, REQ_CLR_FIELD );
form_driver( Form, REQ_END_LINE );
break ;
}
strcpy( startdata , FIELD_VAL(1) ) ;
Trim(startdata);
re=db_savebarcode();
if(re==-1)
{
Result=-1;
IsRun=0;
scanRun=0;
break;
}
mvprintw( 9 , 0 , " ") ;
if(re==0)
{
msg12("己扫描过!");
mvprintw( 9 , 0 , " ") ;
refresh() ;
mvprintw( 9 , 0 , "目前已读 %d",barcount) ;
set_current_field( Form , Field[0] ) ;
form_driver( Form, REQ_CLR_FIELD );
form_driver( Form, REQ_END_LINE );
break;
}
mvprintw( 9 , 0 , "目前已读 %d",barcount) ;
// set_current_field( Form , Field[0] ) ;
// form_driver( Form, REQ_CLR_FIELD );
// form_driver( Form, REQ_END_LINE );
form_driver( Form, REQ_PREV_FIELD);
refresh() ;
IsRun=0;
break;
case KEY_F(12):
Result=1;
IsRun=0;
scanRun=0;
break;
case KEY_UP:
// 上一域
// form_driver( Form, REQ_PREV_FIELD );
// form_driver( Form, REQ_VALIDATION );
break;
//新装箱
case _KEY_F1:
Result=0;
IsRun=0;
scanRun=0;
break;
//红外打印装箱单
case KEY_F(4):
case _KEY_F4:
printlist();
Result=1;
IsRun=0;
scanRun=0;
break;
case _KEY_BS:
case KEY_BACKSPACE:
form_driver( Form, REQ_DEL_PREV );
break;
/* ////////for test only
case KEY4 :
printlist();
Result=0;
IsRun=0;
scanRun=0;
break;
////////for test only*/
default://长度
form_driver( Form, Key );
}
}
}
end:
unpost_form( Form );
free_form( Form);
free_field( Field[0]);
free_field( Field[1]);
return Result;
}
int workerinfo ()
{
int re,Result,IsRun,Key;
char *data;
char tempWorker[21];
FIELD *Field[2];
FORM *Form;
clear();
keypad(stdscr, TRUE);
Field[0] = new_field( 1, 20, 5, 0, 0, 0 );
field_opts_off( Field[0], O_AUTOSKIP);
set_field_back(Field[0], A_UNDERLINE );
set_field_pad(Field[0], 0x81);
Field[1] = 0;
Form = new_form( Field );
post_form( Form);
refresh();
//输入
mvprintw( 3 , 0 , "装箱人:") ;
set_field_buffer(Field[0],0,worker);
set_current_field( Form , Field[0] ) ;
refresh();
IsRun=1;
while( IsRun )
{
switch( Key = getch() )
{
case _KEY_LASER_BEGIN:
form_driver( Form, REQ_CLR_FIELD );
break ;
case _KEY_LASER_END:
case _KEY_ENTER:
case _KEY_G:
case KEY_ENTER:
form_driver( Form, REQ_VALIDATION ) ;
data=field_buffer( Field[0] , 0 ) ;
if( data[0]==32 )
{
form_driver( Form, REQ_CLR_FIELD );
form_driver( Form, REQ_END_LINE );
break ;
}
strcpy( tempWorker , FIELD_VAL(0) ) ;
Trim(tempWorker);
if(strcmp(worker,tempWorker)!=0)//修改过,保存到数据库
{
strcpy(worker,tempWorker);
re=db_saveinfo();
if(re==-1)
{
Result=-1;
IsRun=0;
break;
}
}
Result=1;
IsRun=0;
break;
case KEY_F(12):
Result=1;
IsRun=0;
break;
case KEY_RIGHT:
// 下一个字符
form_driver( Form, REQ_NEXT_CHAR);
break;
case KEY_LEFT:
// 上一个字符
form_driver( Form, REQ_PREV_CHAR );
break;
case _KEY_BS:
case KEY_BACKSPACE:
form_driver( Form, REQ_DEL_PREV );
break;
default://长度
form_driver( Form, Key );
}
}
end:
unpost_form( Form );
free_form( Form);
free_field( Field[0]);
return Result;
}
|
|