亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 利用POS機具硬件改為條紋碼掃描器的編程代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:

/**************************************
函數名稱:	setup_first
函數功能:	第一次進行初始化全局變量
函數參數:	無
函數返回:	無
**************************************/
void setup_first(void)
{
    upload_flag='-' ;
    /*默認 上傳標志為未上傳*/
    print_flag=YES ;
    /*默認 刷卡后不立即進打印*/
    offline_flag=NO ;
    /*默認 聯機交易,刷卡后數據立即上傳*/
    strcpy(SET_OPER,"99");
    /*操作員:99,密碼:000000*/
    strcpy(SET_PWD,"000000");
    /*可以在系統維護中修改*/
}
/**************************************
函數名稱:	kq_setPassword
函數功能:	設置管理員密碼
函數參數:	無
函數返回:	無
**************************************/
int kq_setPassword(void)
{
    int i ;
    char buffer[9],buffer1[9];
    
    memset(buffer,0,sizeof(buffer));
    memset(buffer1,0,sizeof(buffer1));
    
    cls();
    display(1,"請輸新密碼:");
    
    keyoff();
    do 
    {
        i=getnstr(2,buffer);
    }
    while((i!=0)&&(i!=6));
    keyon();
    
    cls();
    display(1,"請再輸一次:");
    
    keyoff();
    do 
    {
        i=getnstr(2,buffer1);
    }
    while((i!=0)&&(i!=6));
    keyon();
    
    if(memcmp(buffer,buffer1,6)!=0)
    {
        cls();
        display_inv(1,"兩次密碼不一致");
        delay(1);
        return(FAIL);
    }
    if(i==6)
    {
        sprintf(SET_PWD,"%s",buffer);
    }
    cls();
    display_inv(1,"恭喜  恭喜");
    display_inv(2,"請牢記新密碼");
    delay(1);
    return(SUCC);
}
/**************************************
函數名稱:kq_dispNow
函數功能:顯示當前日期與時間	
函數參數  無:	
函數返回:無	
**************************************/
void kq_dispNow(void)
{
    kq_getDateTime();
    display(3," 20%2.2s年%2.2s月%2.2s日",kq_date,kq_date+2,kq_date+4);
    display(4,"    %2.2s:%2.2s:%2.2s",kq_time,kq_time+2,kq_time+4);
}
/**************************************
函數名稱:kq_getDateTime
函數功能:獲取當前的日期和時間	
函數參數  無	
函數返回:kq_date,kq_time	
**************************************/
int kq_getDateTime(void)
{
    get_date(kq_date);
    get_time(kq_time);
    return(SUCC);
}

/**************************************
函數名稱:	kq_displogo
函數功能:	顯示啟動介面及第一次進入維護
函數參數:	無
函數返回:      SUCC/FAIL	
**************************************/
int kq_displogo(void)
{
    int j,ret ;
    char i ;
    char buffer[9];
    
    cls();
    display_inv(1,"實達外設考勤");
    display_cen(2,"按清除鍵進入維護");
    display_cen(3,"2005/10/01");
    display_cen(4,"V0.5");
    
    /* 清除鍵的鍵為CANCEL */
    if(inkey(3)==CANCEL)
    {
        do 
        {
            cls();
            display(1,"1.交易模式");
            display(2,"2.時間設定");
            display(3,"3.數據上傳");
            display(4,"4.打印流水");
            i=inkey(0);
            if(i=='1'||i=='2'||i=='3'||i=='4')break ;
            if(i==CANCEL)return(FAIL);
            if(i==ENTER)
            {
                cls();
                display(1,"5.重設管理員密碼");
                display(2,"6.劃卡后立即打印");
                display(3,"7.清除已上傳數據");
                display(4,"8.從主機下載卡號");
            }
            i=inkey(0);
            if(i==CANCEL)return(FAIL);
            if(i=='5'||i=='6'||i=='7'||i=='8')break ;
        }
        while(1);
        
        /* 密碼有三次機會 */
        j=1 ;
        memset(buffer,0,sizeof(buffer));
        while(j<=3)
        {
            cls();
            display(1,"請輸密碼(6位):");
            keyoff();
            ret=getnstr(2,buffer);
            keyon();
            if((ret==1)&&(buffer[0]==0xff))continue ;
            if(memcmp(buffer,SET_PWD,6)==0)break ;
            j++;
            display_inv(2,"密碼錯誤");
            delay(1);
        }
        if(j>3)return(FAIL);
        else 
        {
            /* 身份確認成功,進行相應操作。 */
            switch(i)
            {
                case '1' :
                cls();
                if(offline_flag==YES)
                {
                    offline_flag=NO ;
                    display_inv(2,"開始聯機交易");
                    display_inv(3,"立即上傳數據");
                }
                else 
                {
                    offline_flag=YES ;
                    display_inv(2,"開始脫機交易");
                    display_inv(3,"暫不上傳數據");
                }
                delay(2);
                break ;
                case '2' :
                /* 設定時間 */
                kq_setDateTime();
                break ;
                case '3' :
                /* 聯機交易時,上傳全部數據 */
                if(offline_flag==NO)
                {
                    kq_dataUpload_all();
                }
                else 
                {
                    cls();
                    display_inv(1,"實達外設考勤");
                    display_inv(3,"未聯機不能上傳");
                    delay(2);
                }
                break ;
                case '4' :
                /* 打印流水文件中的全部數據 */
                kq_dataPrint_all();
                break ;
                case '5' :
                /* 重設管理員密碼 */
                kq_setPassword();
                break ;
                case '6' :
                /* 劃卡后立即打印 */
                cls();
                if(print_flag==YES)
                {
                    print_flag=NO ;
                    display_inv(2,"刷卡后不立即打印");
                    display_inv(3,"可在維護時再打印");
                }
                else 
                {
                    print_flag=YES ;
                    display_inv(2,"刷卡后立即打印");
                    display_inv(3,"請先裝好打印紙");
                }
                delay(2);
                break ;
                case '7' :
                /* 清空已上傳數據 */
                kq_dataClear();
                break ;
                case '8' :
                /* 從主機下載 */
                kq_downCardno();
                break ;
                default :
                break ;
            }
            ;
        }
    }
    return SUCC ;
}

/**************************************
函數名稱:	kq_dataClear()
函數功能:	清空已上傳數據
函數參數:	無
函數返回:	SUCC/FAIL
**************************************/
int kq_dataClear(void)
{
    char fd,ret ;
    int i ;
    struct KQ_REC kqRec ;
    
    fd=pfopen("water",'R');
    if(fd==0||fd=='E')
    {
        cls();
        display_inv(1,"實達外設考勤");
        display_cen(3,"流水文件無數據");
        delay(1);
        return(FAIL);
    }
    for(i=1;;i++)
    {
        ret=pfread(fd,i,1,(char*)&kqRec);
        if(ret==0)
        {
            display_clear(3);
            display_cen(3,"數據已經刪完");
            systemsound(500);
            delay(1);
            break ;
        }
        if(kqRec.upload_flag=='+')
        if(pfdelrec(fd,i)==0)
        {
            display_clear(3);
            display_cen(3,"刪除已上傳記錄");
            i--;
            /*由于是順序文件,刪除一個記錄后,后續的記錄號也會變更
                                    	  所以,要對記錄號進行修正。*/
        }
    }
    return(SUCC);
}
/**************************************
函數名稱:	kq_setDateTime
函數功能:	獲取當前日期和時間
函數參數:	無
函數返回:	全局變量,kq_date,kq_time
**************************************/
int kq_setDateTime(void)
{
    char datestr[9],timestr[9];
    int ret=0 ;
    
    memset(datestr,0,sizeof(datestr));
    memset(timestr,0,sizeof(timestr));
    
    cls();
    display(1,"輸入日期yymmdd:");
    ret=getnstr(2,datestr);
    if(!(ret==1&&datestr[0]==0xff))
    set_date(datestr);
    
    display(1,"輸入時間hhmmss:");
    ret=getnstr(2,timestr);
    if(!(ret==1&&timestr[0]==0xff))
    set_time(timestr);
    return(SUCC);
}

/*********************************************
  函數名稱:	display_inv
  函數功能:	在指定行中央反白顯示指定字符串
  函數參數:	(int)lineno:	指定行
                (char *)lg:	指定字符串
  函數返回:	(int)SUCC
 **********************************************/
int display_inv(int lineno,char*str)
{
    set_inverse(1);
    display_cen(lineno,str);
    set_inverse(0);
    return(SUCC);
}

/*******************************************
  函數名稱:	display_cen
  函數功能:	在指定行中央顯示指定字符串
  函數參數:	(int)lineno:	指定行
                (char *)lg:	指定字符串
  函數返回:	(int)SUCC
 **********************************************/
int display_cen(int lineno,char*str)
{
    int j ;
    char buffer[20];
    
    memset(buffer,0,sizeof(buffer));
    
    if(strlen(str)>=16)
    {
        j=0 ;
    }
    else 
    {
        j=(16-strlen(str))/2 ;
    }
    
    if(j)
    {
        memset(buffer,' ',j);
        strcpy(buffer+j,str);
        display(lineno,buffer);
    }
    else 
    {
        display(lineno,str);
    }
    
    return(SUCC);
}
/*********************************************
  函數名稱:	dispaly_clear
  函數功能:	清空屏幕某一行
  函數參數:	(int)lineno:	指定行數
  函數返回:	(int)SUCC
 **********************************************/
int display_clear(int lineno)
{
    display(lineno," ");
    return(SUCC);
}

/**************************************
函數名稱:handshake_to_host	
函數功能:與后臺握手
函數參數:	無
函數返回:	SUCC/FAIL
**************************************/
int handshake_to_host(void)
{
    int failtime=0 ;
    char h_char ;
    
    /* 與主機進行握手, 5 次重試機會 */
    do 
    {
        h_char=0x05 ;
        /*
         * 發送 ENQ 0x05
         */
        sendrs232(1,&h_char);
        /*                      
         * 讀 0x06,表示握手成功
         */
        if(kq_result()==SUCC)return(SUCC);
        /* 
         * 檢測重試次數
         */
    }
    while(failtime++<=5);
    return(FAIL);
}

/**************************************
函數名稱:send_to_host	
函數功能:發送到后臺	
函數參數:	
         pack_len:包長
         pack_str:數據包
函數返回:	SUCC/FAIL
**************************************/
int send_to_host(int pack_len,char*pack_str)

{
    int p_len ;
    char buffer[31];
    /* 數據包的結構 STX + LENGTH + DATA + ETX ,buffer(1)(2)以8421碼表示數據的長度 */
    memset(buffer,0,sizeof(buffer));
    p_len=pack_len ;
    /*
     * 添加 STX 0x02
     */
    buffer[0]=0x02 ;
    /*
     * 計算長度 (8421)
     */
    buffer[1]=(p_len/100)+(p_len/100)/10*6 ;
    buffer[2]=(p_len%100)+(p_len%100)/10*6 ;
    
    memcpy(buffer+3,pack_str,pack_len);
    /*
     * 添加 ETX 0x03
     */
    buffer[1+2+pack_len]=0x03 ;
    /*
     * 計算LRC,一個字節,附加在最后
     
    		for ( lrc = 0 , i = 1 ; i <= 2 + pack_len+1 ; i ++ )
    			lrc ^= buffer [ i ] ;
    		buffer [ 1 + 2  + pack_len + 1 ] = lrc ;
    */
    sendrs232(1+2+pack_len+1,buffer);
    
    return(SUCC);
}
/**************************************
函數名稱:read_from_host	
函數功能:從后臺讀數據
函數參數:	無
函數返回:	SUCC/FAIL
**************************************/
int read_from_host()
{
    
    int failtime,len ;
    char h_char ;
         
            char    buffer[2];
//            int     ret;
    /* readstr 不包括 STX 0x02 , ETX 0x03  */
    
    /* 讀取 STX 0x02 直到超時 */
    failtime=0 ;
    
    do 
    {
        readrs232(&h_char,1,1);
        if(h_char==0x02)break ;
        
    }
    while(failtime++<10);
    
    if(failtime>=10)
    {
        display_clear(4);
        display_cen(4,"接收STX超時");
        delay(1);
        return(FAIL);
    }
    
    /* 計算長度 */
            
            readrs232( buffer, 3 ,2  ) ;
    	
    	readlen  = ( buffer [ 0 ] >> 4 ) * 1000 + ( buffer [ 0 ] & 0x0f )
    		    * 100 + ( buffer [ 1 ] >> 4 ) * 10 + ( buffer [ 1 ] & 0x0f ) ;
 
 //   readlen=18 ;
    
    /* STX+C********N******V*+ETX
     * 包括 ETX 0x03 ,所以數據總長度要加2,10秒內讀完
     */
    len=readrs232(readstr,3,readlen+1);
    
    /* readlen=有效數據的長度,1=ETX */
    
    if(len!=readlen+1)
    {
        display_clear(4);
        display_inv(4,"數據長度錯");
        delay(1);
        return(FAIL);
    }
    
    /* 檢查 0x03 */
    if(readstr[readlen]!=0x03)
    {
        display_clear(4);
        display_inv(4,"數據包結束錯");
        delay(1);
        return(FAIL);
    }
    
    /* buffer[0],buffer[1],現在放的是長度
               檢查LRC 校驗時,是帶著長度一起算的
    	lrc = 0 ;
    	lrc ^= buffer [ 0 ] ;
    	lrc ^= buffer [ 1 ] ;
    	for ( i = 0 ; i < readlen + 1 ; i ++ )
    		lrc ^= buf [ i ] ;
    
    		if ( buf [ readlen + 1 ] != lrc ) {
    			display_clear(4);
    			display ( 4 , "LRC校驗錯" ) ;
    			delay ( 2 ) ;
    			return ( FAIL ) ;
    		}
    */
    /* 置為'\0',作為串結束符 */
    
    readstr[readlen]=0x0 ;
    return(SUCC);
}
/*************************************
函數名字: KQ_RESULT
函數功能:讀入返回碼
函數返回:SUCC,FAIL
函數參數: VOID
*************************************/
int kq_result(void)
{
    char result ;
    int ret,failtime=0 ;
    
    /* 返回結果的格式  ACK  */
    do 
    {
        ret=readrs232(&result,1,1);
        if(ret==1)
        if(result==0x06)return(SUCC);
    }
    while(failtime++<2);
    return(FAIL);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
专区另类欧美日韩| 91一区二区三区在线观看| 成人午夜短视频| 91精品国产一区二区人妖| 国产精品久久三| 狠狠色综合播放一区二区| 精品1区2区3区| 亚洲国产精品传媒在线观看| 麻豆成人免费电影| 日本精品一区二区三区四区的功能| 精品久久国产老人久久综合| 亚洲成人三级小说| 一本久久a久久精品亚洲| 国产女同互慰高潮91漫画| 美腿丝袜在线亚洲一区| 在线国产电影不卡| 国产精品灌醉下药二区| 成人免费毛片片v| 久久九九国产精品| 国产精品一区二区在线观看不卡| 这里只有精品电影| 午夜久久电影网| 欧美日韩在线一区二区| 樱花草国产18久久久久| 91亚洲大成网污www| 国产精品黄色在线观看| 成人一区二区三区中文字幕| 国产亚洲一二三区| 国产91综合网| 中文字幕一区免费在线观看| 成人av影视在线观看| 国产清纯白嫩初高生在线观看91| 丁香六月综合激情| 国产女主播一区| 成人福利视频在线| 中文字幕在线观看一区| 一本一道久久a久久精品| 亚洲狠狠丁香婷婷综合久久久| 99国产精品99久久久久久| 亚洲日本在线天堂| 欧美综合天天夜夜久久| 亚洲h动漫在线| 欧美成人精品3d动漫h| 国产老肥熟一区二区三区| 国产亚洲欧洲一区高清在线观看| 成人激情开心网| 亚洲免费观看在线视频| 欧美性大战xxxxx久久久| 亚洲成人av免费| 亚洲精品一区在线观看| 成人综合婷婷国产精品久久免费| 自拍偷拍欧美激情| 欧美老女人在线| 国产成人小视频| 一区二区在线观看免费 | 91精品久久久久久蜜臀| 捆绑变态av一区二区三区| 久久久精品免费免费| 91网站在线观看视频| 无码av免费一区二区三区试看 | 国产成人免费在线| 亚洲欧美日韩中文字幕一区二区三区| 欧美日韩国产欧美日美国产精品| 日av在线不卡| 亚洲欧美另类久久久精品| 日韩一区二区三| 91影视在线播放| 极品尤物av久久免费看| 亚洲视频一二区| 精品电影一区二区| 日本韩国视频一区二区| 久久99国产精品成人| 亚洲激情在线播放| 国产亚洲精品bt天堂精选| 欧美日韩免费一区二区三区视频 | 91精品福利视频| 国产一区二区三区黄视频| 亚洲黄色录像片| 国产欧美精品一区二区色综合朱莉| 欧美综合亚洲图片综合区| 国产a级毛片一区| 日韩精品高清不卡| 亚洲三级视频在线观看| 久久久精品国产免大香伊| 欧美一区二区视频在线观看2020 | 粉嫩aⅴ一区二区三区四区五区 | 国产91在线|亚洲| 免费人成在线不卡| 亚洲一区免费在线观看| 国产精品无圣光一区二区| 日韩精品一区二区在线观看| 日本高清不卡一区| 99久久国产综合精品色伊 | 免费观看久久久4p| 亚洲精品国产高清久久伦理二区| 欧美激情一区在线| 精品国产乱码91久久久久久网站| 3d成人动漫网站| 欧美午夜精品一区| 一本久久精品一区二区| 成人丝袜18视频在线观看| 国产一区999| 奇米精品一区二区三区在线观看一| 一级日本不卡的影视| ...xxx性欧美| 国产精品国产馆在线真实露脸| 久久色视频免费观看| 精品捆绑美女sm三区| 91精品国产色综合久久| 在线不卡欧美精品一区二区三区| 欧美日韩一级二级三级| 欧美性猛交xxxxxx富婆| 色狠狠av一区二区三区| 在线精品视频一区二区| 欧美日韩一区三区四区| 欧美日韩一级片在线观看| 欧美特级限制片免费在线观看| 欧美曰成人黄网| 欧美日韩国产综合一区二区三区| 在线观看视频欧美| 欧美日高清视频| 在线电影欧美成精品| 日韩精品自拍偷拍| 久久欧美中文字幕| 欧美激情一区二区三区全黄| 国产精品私人影院| 亚洲日本va在线观看| 亚洲成人动漫精品| 精品无人码麻豆乱码1区2区| 激情偷乱视频一区二区三区| 成人综合婷婷国产精品久久蜜臀| 97精品国产97久久久久久久久久久久| 91蜜桃网址入口| 欧美人与性动xxxx| 久久综合久色欧美综合狠狠| 国产欧美日韩三级| 伊人夜夜躁av伊人久久| 日韩av电影天堂| 风流少妇一区二区| 在线观看免费成人| 日韩欧美激情一区| 中文字幕一区二区视频| 五月天视频一区| 国产精品白丝jk黑袜喷水| 一本色道久久综合亚洲aⅴ蜜桃 | 国产午夜精品在线观看| 一区二区中文字幕在线| 无吗不卡中文字幕| 高清成人免费视频| 欧美日韩三级在线| 久久伊人蜜桃av一区二区| 椎名由奈av一区二区三区| 欧美aⅴ一区二区三区视频| 成人av动漫在线| 日韩欧美电影一区| 亚洲日本欧美天堂| 精久久久久久久久久久| 在线观看视频一区二区| 国产欧美精品一区二区色综合 | 亚洲国产精品人人做人人爽| 久久99久久99| 欧美日本在线播放| 亚洲视频在线观看一区| 久久99九九99精品| 欧美老肥妇做.爰bbww视频| 国产精品二三区| 久久99国产精品成人| 欧美性大战久久久| 中文字幕一区二区在线观看| 精品在线免费观看| 欧美综合在线视频| 亚洲婷婷综合久久一本伊一区| 蜜桃一区二区三区四区| 欧美在线免费播放| 日韩美女啊v在线免费观看| 国产精品一区二区三区乱码| 91麻豆精品国产综合久久久久久| 中文字幕日韩一区| 国产福利91精品一区二区三区| 5566中文字幕一区二区电影| 亚洲一二三区不卡| 91欧美激情一区二区三区成人| 国产欧美久久久精品影院| 韩国一区二区视频| 欧美一级免费观看| 亚州成人在线电影| 欧美在线|欧美| 一区二区三区中文在线观看| 99re热视频精品| 综合欧美一区二区三区| 国产成人av影院| 国产无一区二区| 国产成人精品一区二| 国产午夜亚洲精品不卡| 国产一区91精品张津瑜| 国产婷婷一区二区| 丰满少妇久久久久久久| 国产精品久久久久久亚洲毛片 | 亚洲一区自拍偷拍| 欧美日韩亚洲综合在线 |