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

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

?? iccard.c

?? 單相 CPU卡表復費率電能表,內部有提供I2C驅動,CPU卡驅動,NEC單片機0513等
?? C
?? 第 1 頁 / 共 3 頁
字號:
    Cpu_card_comm.Serial_Buffer[2] = file_id | 0x80 ;
    Cpu_card_comm.Serial_Buffer[3] = s_pos & 0xff;
    Cpu_card_comm.Serial_Buffer[4] = w_len;
    CPU_card_send_command(0, 5);
    CPU_card_read_response(1);
    CPU_card_send_command(5, w_len);
    CPU_card_read_response(2);
    Cpu_card_comm.selectDevice = old_dev;
    if( ( Cpu_card_comm.Serial_Buffer[0] != 0x90 )||( Cpu_card_comm.Serial_Buffer[1] != 0x00 ) )
    {
        return ERROR;
    }

    return OK;
}

uchar IC_write_file_ex(uchar sel_dev, ushort s_pos, uchar w_len)
{
    uchar old_dev = Cpu_card_comm.selectDevice;

    Cpu_card_comm.selectDevice = sel_dev;
    Cpu_card_comm.Serial_Buffer[0] = 0x0;
    Cpu_card_comm.Serial_Buffer[1] = 0xd6;
    Cpu_card_comm.Serial_Buffer[2] = (uchar)(s_pos >> 8);
    Cpu_card_comm.Serial_Buffer[3] = (uchar)(s_pos & 0xff);
    Cpu_card_comm.Serial_Buffer[4] = w_len;
    CPU_card_send_command(0, 5);
    CPU_card_read_response(1);
    CPU_card_send_command(5, w_len);
    CPU_card_read_response(2);
    Cpu_card_comm.selectDevice = old_dev;

    if( ( Cpu_card_comm.Serial_Buffer[0] != 0x90 ) ||( Cpu_card_comm.Serial_Buffer[1] != 0x00 ) )
    {
        return ERROR;
    } 

    return OK;
}
	
uchar ESAM_update_key(void)
{
    uchar old_dev = Cpu_card_comm.selectDevice;

    Cpu_card_comm.selectDevice = SEL_ESAM;
    Cpu_card_comm.Serial_Buffer[0] = 0x84;
    Cpu_card_comm.Serial_Buffer[1] = 0xd4;
    Cpu_card_comm.Serial_Buffer[2] = 0x01;
    Cpu_card_comm.Serial_Buffer[3] = 0xff;
    Cpu_card_comm.Serial_Buffer[4] = 0x18;
    memcpy(Cpu_card_comm.Serial_Buffer + IC_WRITE_START_ADDR, IC_ESAM_KEY_BUFFER, IC_KEY_LEN);
    CPU_card_send_command(0, 5);
    CPU_card_read_response(1);
    CPU_card_send_command(IC_WRITE_START_ADDR, IC_KEY_LEN);
    CPU_card_read_response(2);
    Cpu_card_comm.selectDevice = old_dev;
    if( ( Cpu_card_comm.Serial_Buffer[0] != 0x90 ) ||( Cpu_card_comm.Serial_Buffer[1] != 0x00 ) )
    {
        return ERROR;
    }

    return OK;
}

uchar ESAM_read_MAC(uchar file_id, uchar start_pos, uchar len)
{
    uchar old_dev = Cpu_card_comm.selectDevice;

    Cpu_card_comm.selectDevice = SEL_ESAM;
    Cpu_card_comm.Serial_Buffer[0] = 0x04;
    Cpu_card_comm.Serial_Buffer[1] = 0xB0;
    Cpu_card_comm.Serial_Buffer[2] = 0x80|file_id;
    Cpu_card_comm.Serial_Buffer[3] = start_pos;
    Cpu_card_comm.Serial_Buffer[4] = 0x11;
    memcpy(&Cpu_card_comm.Serial_Buffer[IC_WRITE_START_ADDR], IC_CPU_RAND_DATA, 4);
    Cpu_card_comm.Serial_Buffer[9] = 0x04;
    Cpu_card_comm.Serial_Buffer[10] = 0xd6;
    Cpu_card_comm.Serial_Buffer[11] = 0x80|file_id;
    Cpu_card_comm.Serial_Buffer[12] = start_pos;
    Cpu_card_comm.Serial_Buffer[13] = len + 4;
    memcpy(&Cpu_card_comm.Serial_Buffer[14], IC_ATR_DATA, 8);
    CPU_card_send_command(0, 5);
    CPU_card_read_response(1);
    CPU_card_send_command(IC_WRITE_START_ADDR, 0x11);
    CPU_card_read_response(2);
    Cpu_card_comm.selectDevice = old_dev;
    if( ( Cpu_card_comm.Serial_Buffer[0] != 0x61 ) )
    {
        return ERROR;
    }
    return OK;
}

uchar ESAM_spread_pwd(uchar auth_type)
{
    uchar old_dev = Cpu_card_comm.selectDevice;

    Cpu_card_comm.selectDevice = SEL_ESAM;
    Cpu_card_comm.Serial_Buffer[0] = 0x80;
    Cpu_card_comm.Serial_Buffer[1] = 0xFA;
    Cpu_card_comm.Serial_Buffer[2] = 0;
    Cpu_card_comm.Serial_Buffer[3] = auth_type;
    Cpu_card_comm.Serial_Buffer[4] = 0x08;
    memcpy(&Cpu_card_comm.Serial_Buffer[IC_WRITE_START_ADDR], IC_ATR_DATA, 8 );
    CPU_card_send_command(0, 5);
    CPU_card_read_response(1);
    CPU_card_send_command(IC_WRITE_START_ADDR, 8);
    CPU_card_read_response(2);
    Cpu_card_comm.selectDevice = old_dev;
    if( ( Cpu_card_comm.Serial_Buffer[0] != 0x90 ) ||( Cpu_card_comm.Serial_Buffer[1] != 0x00 ) )
    {
        return ERROR;
    }
    return OK;
}

uchar ESAM_encrypt_rand8(void)
{
    uchar old_dev = Cpu_card_comm.selectDevice;

    Cpu_card_comm.selectDevice = SEL_ESAM;
    Cpu_card_comm.Serial_Buffer[0] = 0x80;
    Cpu_card_comm.Serial_Buffer[1] = 0xFA;
    Cpu_card_comm.Serial_Buffer[2] = 0;
    Cpu_card_comm.Serial_Buffer[3] = 0x00;
    Cpu_card_comm.Serial_Buffer[4] = 0x08;
    memcpy( &Cpu_card_comm.Serial_Buffer[IC_WRITE_START_ADDR], IC_CPU_RAND_DATA, 8 );
    CPU_card_send_command(0, 5);
    CPU_card_read_response(1);
    CPU_card_send_command(IC_WRITE_START_ADDR, 8);
    CPU_card_read_response(2);
    Cpu_card_comm.selectDevice = old_dev;
    if( ( Cpu_card_comm.Serial_Buffer[0] != 0x61 ) ||( Cpu_card_comm.Serial_Buffer[1] != 0x08 ) )
    {
        return ERROR;
    }
	
    return OK;
}

uchar ESAM_external_auth(void)
{
    uchar old_dev = Cpu_card_comm.selectDevice;

    Cpu_card_comm.selectDevice = SEL_ESAM;
    Cpu_card_comm.Serial_Buffer[0] = 0x00;
    Cpu_card_comm.Serial_Buffer[1] = 0x82;
    Cpu_card_comm.Serial_Buffer[2] = 0;
    Cpu_card_comm.Serial_Buffer[3] = 0x05;
    Cpu_card_comm.Serial_Buffer[4] = 0x10;
    memcpy( &Cpu_card_comm.Serial_Buffer[IC_WRITE_START_ADDR], IC_CPU_ENCRYPT_DATA, 8 );
    memcpy( &Cpu_card_comm.Serial_Buffer[IC_WRITE_START_ADDR+8], IC_ATR_DATA, 8 );
    CPU_card_send_command(0, 5);
    CPU_card_read_response(1);
    CPU_card_send_command( IC_WRITE_START_ADDR, 16 );
    CPU_card_read_response(2);
    Cpu_card_comm.selectDevice = old_dev;
    if( ( Cpu_card_comm.Serial_Buffer[0] != 0x90 ) ||( Cpu_card_comm.Serial_Buffer[1] != 0x00 ) )
    {
        return ERROR;
    }

    return OK;
}

uchar UNIC_internal_auth_proc(void)
{		
    if( ESAM_spread_pwd(AUTH_CPU_INTERNAL) != OK )
    {
         test_value = 1;
         return ERROR;        
    }

    if( IC_get_rand_data(SEL_CARD, 8) != OK )
    {
        test_value = 2;
        return ERROR;
    }

    if( IC_internal_auth(AUTH_CPU_INTERNAL) != OK )
    {
        test_value = 3;
        return ERROR;        
    }

    if( IC_get_data_back(SEL_CARD, 8) != OK )
    {
        test_value = 4;
        return ERROR;
    }

    memcpy( IC_CPU_ENCRYPT_DATA, &Cpu_card_comm.Serial_Buffer[1], 8 );
    if( ESAM_encrypt_rand8() != OK )
    {
        test_value = 5;
        return ERROR;        
    }

    if( IC_get_data_back(SEL_ESAM, 8) != OK )
    {
        test_value = 6;
        return ERROR;
    }

    memcpy( IC_ESAM_ENCRYPT_DATA, &Cpu_card_comm.Serial_Buffer[1], 8 );
    if( OK != IsEqual( IC_ESAM_ENCRYPT_DATA, IC_CPU_ENCRYPT_DATA, 8 ) )
    {
        test_value = 7;
        return ERROR;         
    }

    test_value = 0;
    return OK;
}

uchar UNIC_esam_external_auth_proc(void)
{	
    if( IC_get_rand_data(SEL_ESAM, 8) != OK )
    {
        return ERROR;       
    }

    if( IC_internal_auth(AUTH_ESAM_EXTERNAL) != OK )
    {
        return ERROR;      
    }

    if( IC_get_data_back(SEL_CARD, 8) != OK )
    {
        return ERROR;      
    }

    memcpy( IC_CPU_ENCRYPT_DATA, &Cpu_card_comm.Serial_Buffer[1], 8 );
    if( ESAM_external_auth() != OK )
    {
        return ERROR;     
    }
	
    return OK;
}

uchar UNIC_ic_external_auth_proc(void)
{	
    if( ESAM_spread_pwd(AUTH_CPU_EXTERNAL) != OK )
    {
        return ERROR;       
    }

    if( IC_get_rand_data(SEL_CARD, 8) != OK )
    {
        return ERROR;        
    }

    if( ESAM_encrypt_rand8() != OK )
    {
        return ERROR;        
    }

    if( IC_get_data_back(SEL_ESAM, 8) != OK )
    {
        return ERROR;      
    }

    memcpy( IC_ESAM_ENCRYPT_DATA, &Cpu_card_comm.Serial_Buffer[1], 8 );
    if( IC_external_auth() != OK )
    {
        return ERROR;
    }

    return OK;
}

void ICCardPolling(void)
{
    unsigned char cd_code = OK, *recv_buf;
    unsigned char read_len, err_num = 0;

    recv_buf = &Cpu_card_comm.Serial_Buffer[1];
    CPU_CARD_IC_DIR = IC_IO_DIR_INPUT;
    if( CPU_CARD_IC ) 
    { 
        card_in_slot = 0;
        IC_Card_flag = 0;
        return;
    }
	
    if( card_in_slot ) return;
    card_in_slot = 1;
    //等待一段時間以消除干擾	
    Delay20ms(2);
    if( CPU_CARD_IC ) 
    { 
        card_in_slot = 0;
        IC_Card_flag = 0;
        return;
    }
	
BEGIN_CARD_PROC:
    ClrWdt();
    MemsetZero( cd_data, ICCARD_MAX_DLEN );	
    Cpu_card_comm.selectDevice = SEL_ESAM;
    CPUCardReset();
    CPU_card_read_response(RESET_RESPONSE_DATA_NUBER);
    if( Cpu_card_comm.FramePointer != RESET_RESPONSE_DATA_NUBER )
    {
        err_num++;
        if( err_num < MAX_READ_CARD_NUM )
        {
            goto BEGIN_CARD_PROC;
        }			
        else
        {
            cd_code = EPM_E__1;
            goto ICCard_End;
        }
    }

    Cpu_card_comm.selectDevice = SEL_CARD;
    CPUCardReset();
    CPU_card_read_response(RESET_RESPONSE_DATA_NUBER);
    if( Cpu_card_comm.FramePointer != RESET_RESPONSE_DATA_NUBER )
    {
        err_num++;
        cd_code = EPM_E__2;
        goto ICCard_End;
    }

    if( IC_get_ATR() != OK )
    {
        err_num++;
        cd_code = EPM_E__12;
        goto ICCard_End;
    }
		
    if( IC_select_file(SEL_TYPE_DF, 0x3f01) != OK )
    {
        err_num++;
        cd_code = EPM_E__9;
        goto ICCard_End;	
    }
	
#if 0
    if( ( cd_code = UNIC_ic_external_auth_proc() ) != OK )
    {
        cd_code = EPM_E__8;	
        goto ICCard_End;	
    }	
#endif	

    //讀取主電表應用文件
    if( OK != IC_read_file( SEL_CARD, 1, 0, 3 ) )
    {
        err_num++;
        cd_code = EPM_E__4;
        goto ICCard_End;
    }

    if( ( recv_buf[0] != 0x68 ) )
    {
        err_num++;
        cd_code = EPM_E__27;
        goto ICCard_End;		
    }
	
    //判斷是否為修改密鑰卡
    if( recv_buf[1] == 0x06)
    {		
        goto Update_key;		
    }

    read_len = recv_buf[2];
    //如果文件內容過長,則異常退出	
    if( read_len > MAX_485_GPRS_UART_LEN )
    {	
        err_num++;		
        cd_code = EPM_E__18;
        goto ICCard_End;
    }
	
    Delay20ms(10);
    if( OK != IC_read_file(SEL_CARD, 1, 0, read_len + 5 ) )
    {
        err_num++;
        cd_code = EPM_E__4;
        goto ICCard_End;					
    }
	
    if( FRAME_END_FLAG != recv_buf[read_len + 4] )
    {
        err_num++;
        cd_code = EPM_E__27;
        goto ICCard_End;
    }
	
    //檢查校驗和
    if( recv_buf[read_len + 3] != GetSum( &recv_buf[1], read_len + 2 ) )
    {
        err_num++;
        cd_code = EPM_E__16;
        goto ICCard_End;
    }

Update_key:				
    cd_code = recv_buf[1];
    Delay20ms(10);	
    switch(cd_code)
    {
        case 0x02:/* 購電卡 - 有寫卡操作 */            			
            IC_Card_flag |= IC_CARD_BUY;
            PlaySoundInfo( 3, (uchar *)&IC_SOUND_BUY[0] );
            cd_code = ic_refilling();
            break;

        case 0x04: /* 檢查卡 */
            cd_code = ic_checking();
            break;

        case 0x06:/* 修改密鑰卡 */
            cd_code = ic_updating_pwd();
            break;

        case 0x83:/* 設置卡 */
            IC_Card_flag |= IC_CARD_CLR;
            PlaySoundInfo( 4, (uchar *)&IC_SOUND_CLR[0] );
            cd_code = ic_setting();
            break;
			
        default:
            cd_code = EPM_E__4;
            break;
    }
	
ICCard_End:
    if( cd_code != OK )
    {
        err_num++;
        if( err_num < MAX_READ_CARD_NUM )
        {
            goto BEGIN_CARD_PROC;
        }
        else
        {
            if( IC_Card_flag & IC_CARD_BUY )
            {
                /* 購電失敗*/
                PlaySoundInfo( 1, (uchar *)&IC_SOUND_BUY_ERR[0] );
            }
            else
            {
                /* 無法識別卡*/
                PlaySoundInfo( 1, (uchar *)&IC_SOUND_NOT_IDENTIFY[0] );
            }
        }
    }
    else
    {	
        if( IC_Card_flag & IC_CARD_CLR )
        {
            /* 已完成清零*/
            PlaySoundInfo( 1, (uchar *)&IC_SOUND_CLR_OK[0] );
        }
        else if( IC_Card_flag & IC_CARD_BUY )
        {
            /* 購電成功*/
            PlaySoundInfo( 1, (uchar *)&IC_SOUND_BUY_OK[0] );
            SoundData.play_ptr++;
            /* 播當前剩余電量*/
            PlaySoundPowerInfo(2);
        }
    }
    Delay20ms(10);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区剧情av在线| 亚洲人成在线播放网站岛国| 日韩精品视频网站| 欧美日韩精品系列| 亚洲h在线观看| 日韩区在线观看| 精品影视av免费| 国产色91在线| av中文字幕不卡| 亚洲女爱视频在线| 欧美日韩国产首页| 韩国欧美国产一区| 国产精品萝li| 欧美日韩一级大片网址| 蜜臀99久久精品久久久久久软件| 欧美一二区视频| www.成人网.com| 亚洲一区二区三区美女| 精品国产一区二区三区四区四| 成人在线综合网| 亚洲国产综合色| 久久久99久久精品欧美| 日本乱人伦一区| 麻豆91免费看| 国产精品久久久久久久久图文区| 欧美性受xxxx黑人xyx| 久久精品国产色蜜蜜麻豆| 亚洲欧洲99久久| 91精品国产综合久久香蕉的特点| 国产99久久久国产精品| 国产成人一区在线| 国产蜜臀av在线一区二区三区| 国产精品全国免费观看高清| 成人激情动漫在线观看| 日韩精品最新网址| 色综合激情久久| 美女爽到高潮91| 亚洲一区二区三区视频在线播放| 26uuu久久天堂性欧美| 欧美综合欧美视频| 国产成人在线视频网站| 日韩福利电影在线观看| 亚洲特黄一级片| 久久嫩草精品久久久久| 欧美日韩视频在线第一区| 成人听书哪个软件好| 久久精工是国产品牌吗| 一区二区三区在线播放| 中文一区在线播放| 精品国产91久久久久久久妲己 | 久久综合久久综合久久综合| 一本久久综合亚洲鲁鲁五月天| 免费av成人在线| 亚洲高清久久久| 亚洲精品乱码久久久久久| 国产日韩欧美麻豆| 精品久久五月天| 8x福利精品第一导航| 在线免费亚洲电影| 成人av综合一区| 成人午夜激情视频| 国产一区二区三区美女| 久久成人久久爱| 日韩高清一区二区| 亚洲影院久久精品| 亚洲国产中文字幕在线视频综合| 亚洲人成精品久久久久久| 国产精品久久影院| 国产精品久久三区| 国产精品青草综合久久久久99| 久久免费精品国产久精品久久久久 | 日韩久久精品一区| 日韩欧美激情一区| 日韩一区二区三区电影在线观看| 欧美性色黄大片| 欧美老肥妇做.爰bbww| 欧美亚洲一区二区在线| 91久久精品国产91性色tv| 91色综合久久久久婷婷| 色狠狠色噜噜噜综合网| 91麻豆免费在线观看| 91蜜桃免费观看视频| 色老汉av一区二区三区| 色香蕉成人二区免费| 欧美视频中文字幕| 欧美精品99久久久**| 91精品国产麻豆国产自产在线 | 韩国成人精品a∨在线观看| 国产一区二区三区免费观看| 国产黄人亚洲片| av资源站一区| 欧美色偷偷大香| 91麻豆精品国产综合久久久久久| 日韩一区二区不卡| 久久久久久久久久久久久女国产乱| 国产午夜精品久久久久久久 | 国产精品每日更新| 亚洲精品菠萝久久久久久久| 亚洲国产一二三| 久久www免费人成看片高清| 国产成人精品aa毛片| 91麻豆免费看片| 日韩女优av电影| 国产女同性恋一区二区| 亚洲一区二区三区中文字幕| 久久精品久久99精品久久| 精品一区二区三区日韩| 99久久精品99国产精品| 在线91免费看| 中文字幕+乱码+中文字幕一区| 一区二区视频免费在线观看| 蜜桃av噜噜一区二区三区小说| 国产精品99精品久久免费| 欧美性xxxxxxxx| 欧美精品一区二区三区一线天视频| 亚洲欧美综合网| 久久se这里有精品| 色天使色偷偷av一区二区| 日韩美女一区二区三区四区| 国产精品国产三级国产普通话三级 | 成人动漫av在线| 69精品人人人人| 18欧美亚洲精品| 久久99精品久久久| 色婷婷久久99综合精品jk白丝| 欧美videofree性高清杂交| 亚洲欧洲99久久| 国产一区二区三区四区在线观看| 色综合久久综合| 久久久亚洲高清| 亚洲成人第一页| eeuss鲁一区二区三区| 在线电影一区二区三区| 亚洲天堂av老司机| 国产精品一区免费视频| 欧美日韩激情在线| 日韩伦理av电影| 岛国av在线一区| 日韩欧美电影一区| 亚洲成a人片在线不卡一二三区| 国产91在线观看| 精品国产成人系列| 日韩成人av影视| 欧美三级蜜桃2在线观看| 国产精品伦理一区二区| 国内欧美视频一区二区| 欧美一级在线视频| 亚洲第一主播视频| av不卡一区二区三区| 2024国产精品| 久久99热99| 日韩一区二区在线观看视频 | 亚洲福利视频一区| 成人午夜视频福利| 精品福利一区二区三区| 麻豆精品新av中文字幕| 欧美日韩1区2区| 亚洲一区二区三区视频在线| 日本丶国产丶欧美色综合| 国产精品成人在线观看| 成人午夜av在线| 国产欧美视频在线观看| 国产精品一区二区在线观看网站 | 蜜桃久久精品一区二区| 7777精品伊人久久久大香线蕉完整版 | 成人中文字幕合集| 中文字幕精品—区二区四季| 国产成人精品一区二| 国产精品视频九色porn| 国产不卡视频在线观看| 国产偷国产偷精品高清尤物| 国产精品亚洲视频| 久久久久久久久免费| 国产不卡视频在线播放| 国产精品久久看| 91丨九色丨国产丨porny| 亚洲人成小说网站色在线| 91视频免费观看| 亚洲一区二区三区四区在线免费观看| 在线亚洲精品福利网址导航| 亚洲超碰精品一区二区| 91精品国产欧美日韩| 麻豆一区二区三区| 国产三级欧美三级| thepron国产精品| 亚洲激情欧美激情| 欧美日韩精品福利| 韩国v欧美v日本v亚洲v| 国产午夜精品理论片a级大结局| 成人av在线播放网址| 一个色在线综合| 欧美日韩国产高清一区二区 | 欧美一卡2卡三卡4卡5免费| 狠狠色2019综合网| 国产日产精品一区| 色香蕉成人二区免费| 奇米在线7777在线精品| 国产日韩高清在线| 一本久久综合亚洲鲁鲁五月天| 婷婷久久综合九色综合绿巨人|