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

📄 dongyi.c.bak

📁 嵌入式开发
💻 BAK
📖 第 1 页 / 共 2 页
字号:
//界面函数库

#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 + -