apdu_commandMain.cpp 22.3 KB
更新的
developer29承诺
123.4567891011121314151617181920.21222324252627282930.313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899One hundred.101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617
/****************************************************************名称:apdu_commandMain.cpp*目的:应用框架代码*作者:Digital Logic (support@d-logic.rs)创建日期:2019-07-22*版权所有:Digital Logic (www.d-logic.net)*许可:**************************************************************/# include“apdu_commandMain.h”# include < wx / msgdlg.h ># include <字符串># include <算法># include < sstream >使用名称空间性病保龄球reader_opened=常量字符hexChars22]={' 0 '' 1 '' 2 '“3”“4”“5”“6”“7”“8”“9”“一个”“b”“c”' d '“e”“f”“一个”“B”“C”' D '“E”“F”};字符串ConvertASCIIStringToHexString常量性病::字符串&输入{静态常量字符*常量附近地区=“0123456789六边形abcdef”size_tlen=输入长度();性病::字符串输出输出储备2*len);size_t=0<len++{常量无符号字符c=输入];输出push_back方法附近地区c>>4]);输出push_back方法附近地区c&15]);返回输出字符串ConvertHexStringToASCIIString字符串十六进制{intlen=十六进制长度();性病::字符串部份int=0<len+ =2{字符串字节=十六进制字符串的子串2);字符空空的=字符intstrtol字节c_str(),16);部份push_back方法空空的);返回部份保龄球isHexChar字符c{uint8_t=0<22++{如果c==hexChars]){返回真正的返回保龄球isHexString字符串str{uint32_t=0<str长度();++{如果isHexCharstr))){返回返回真正的字符串eraseDelimiters字符串hexStr{uint32_t=0<hexStr长度();++{如果isHexCharhexStr))){hexStr擦除1);返回hexStr无效ConvertHexStringToByteArray字符串struint8_t*数组{str=eraseDelimitersstr);无符号int=0<str长度()/2++{字符串部分=str字符串的子串*22);字符str132];字符*ptr拷贝字符串str1部分c_str());数组]=strtolstr1&ptr16);字符串ConvertByteArrayToHexString常量uint8_t*数据intlen字符串分隔符{stringstream党卫军党卫军<<大写字母<<十六进制int=0<len++{如果数据]<=0 x0f{党卫军<<“0”党卫军<<uint32_t数据]<<分隔符字符串结果=党卫军str();如果分隔符! =”“{结果=结果字符串的子串0结果长度()-1);返回结果/ / (* InternalHeaders (apdu_commandFrame)# include < wx / settings.h ># include < wx / intl.h ># include < wx / string.h >/ / *)/ /辅助函数枚举wxbuildinfoformat{short_flong_f};wxStringwxbuildinfowxbuildinfoformat格式{wxStringwxbuildwxVERSION_STRING);如果格式==long_f{#如果定义(__WXMSW__)wxbuild<<_T“窗口”);# elif定义(__UNIX__)wxbuild<<_T“linux”);# endif#如果wxUSE_UNICODEwxbuild<<_T“unicode构建”);其他#wxbuild<<_T“ansi构建”);#endif // wxUSE_UNICODE返回wxbuild/ / (* IdInit (apdu_commandFrame)常量apdu_commandFrame::ID_BUTTON1=wxNewId();常量apdu_commandFrame::ID_BUTTON2=wxNewId();常量apdu_commandFrame::ID_BUTTON3=wxNewId();常量apdu_commandFrame::ID_STATICTEXT1=wxNewId();常量apdu_commandFrame::ID_TEXTCTRL1=wxNewId();常量apdu_commandFrame::ID_STATICTEXT2=wxNewId();常量apdu_commandFrame::ID_TEXTCTRL2=wxNewId();常量apdu_commandFrame::ID_CHECKBOX1=wxNewId();常量apdu_commandFrame::ID_STATICTEXT3=wxNewId();常量apdu_commandFrame::ID_TEXTCTRL3=wxNewId();常量apdu_commandFrame::ID_STATICTEXT4=wxNewId();常量apdu_commandFrame::ID_TEXTCTRL4=wxNewId();常量apdu_commandFrame::ID_STATICTEXT5=wxNewId();常量apdu_commandFrame::ID_TEXTCTRL5=wxNewId();常量apdu_commandFrame::ID_STATICTEXT6=wxNewId();常量apdu_commandFrame::ID_TEXTCTRL6=wxNewId();常量apdu_commandFrame::ID_BUTTON4=wxNewId();常量apdu_commandFrame::ID_STATICTEXT7=wxNewId();常量apdu_commandFrame::ID_TEXTCTRL7=wxNewId();常量apdu_commandFrame::ID_BUTTON5=wxNewId();常量apdu_commandFrame::ID_STATICTEXT8=wxNewId();常量apdu_commandFrame::ID_TEXTCTRL8=wxNewId();常量apdu_commandFrame::ID_STATICTEXT11=wxNewId();常量apdu_commandFrame::ID_TEXTCTRL9=wxNewId();常量apdu_commandFrame::ID_STATICTEXT12=wxNewId();常量apdu_commandFrame::ID_STATICTEXT13=wxNewId();常量apdu_commandFrame::ID_TEXTCTRL10=wxNewId();常量apdu_commandFrame::ID_BUTTON6=wxNewId();常量apdu_commandFrame::ID_BUTTON7=wxNewId();常量apdu_commandFrame::ID_STATICTEXT9=wxNewId();常量apdu_commandFrame::ID_STATICTEXT10=wxNewId();常量apdu_commandFrame::ID_STATUSBAR1=wxNewId();/ / *)BEGIN_EVENT_TABLEapdu_commandFramewxFrame/ / (* EventTable (apdu_commandFrame)/ / *)END_EVENT_TABLE()apdu_commandFrame::apdu_commandFramewxWindow*wxWindowIDid{/ /(*初始化(apdu_commandFrame)wxBoxSizer*BoxSizer4wxBoxSizer*BoxSizer6wxBoxSizer*BoxSizer5wxBoxSizer*BoxSizer7wxBoxSizer*BoxSizer2wxBoxSizer*BoxSizer1wxStaticBoxSizer*StaticBoxSizer1wxBoxSizer*BoxSizer3创建id_“FR APDU发送/接收”),wxDefaultPositionwxDefaultSizewxDEFAULT_FRAME_STYLE_T“id”));SetBackgroundColourwxSystemSettings::GetColourwxSYS_COLOUR_WINDOW));BoxSizer1=wxBoxSizerwxVERTICAL);BoxSizer2=wxBoxSizerwxHORIZONTAL);btnReaderOpen=wxButtonID_BUTTON1_“ReaderOpen”),wxDefaultPositionwxDefaultSize0wxDefaultValidator_T“ID_BUTTON1”));BoxSizer2->添加btnReaderOpen1wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);btnReaderReset=wxButtonID_BUTTON2_“ReaderReset”),wxDefaultPositionwxDefaultSize0wxDefaultValidator_T“ID_BUTTON2”));BoxSizer2->添加btnReaderReset1wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);btnReaderClose=wxButtonID_BUTTON3_“ReaderClose”),wxDefaultPositionwxDefaultSize0wxDefaultValidator_T“ID_BUTTON3”));BoxSizer2->添加btnReaderClose1wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);StaticText1=wxStaticTextID_STATICTEXT1_"DLL版本:"),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT1”));BoxSizer2->添加StaticText10wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);dll_version=wxTextCtrlID_TEXTCTRL1wxEmptyStringwxDefaultPositionwxDefaultSizewxTE_READONLY|wxTE_CENTREwxDefaultValidator_T“ID_TEXTCTRL1”));BoxSizer2->添加dll_version1wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);StaticText2=wxStaticTextID_STATICTEXT2_"卡状态:"),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT2”));BoxSizer2->添加StaticText20wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);card_Status_Label=wxTextCtrlID_TEXTCTRL2wxEmptyStringwxDefaultPositionwxDefaultSizewxTE_READONLY|wxTE_CENTREwxDefaultValidator_T“ID_TEXTCTRL2”));BoxSizer2->添加card_Status_Label1wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);BoxSizer1->添加BoxSizer20wxALL|wxEXPAND3.);checkAdvanced=wxCheckBoxID_CHECKBOX1_“使用高级ReaderOpen选项”),wxDefaultPositionwxDefaultSize0wxDefaultValidator_T“ID_CHECKBOX1”));checkAdvanced->SetValue);BoxSizer1->添加checkAdvanced0wxALL|wxALIGN_LEFT3.);StaticBoxSizer1=wxStaticBoxSizerwxHORIZONTAL_“高级选项”));lblReaderType=wxStaticTextID_STATICTEXT3_"读者类型:"),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT3”));lblReaderType->禁用();StaticBoxSizer1->添加lblReaderType0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);txtReaderType=wxTextCtrlID_TEXTCTRL3wxEmptyStringwxDefaultPositionwxSize3521),wxTE_CENTREwxDefaultValidator_T“ID_TEXTCTRL3”));txtReaderType->禁用();StaticBoxSizer1->添加txtReaderType0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);lblPortName=wxStaticTextID_STATICTEXT4_“端口名称:”),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT4”));lblPortName->禁用();StaticBoxSizer1->添加lblPortName0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);txtPortName=wxTextCtrlID_TEXTCTRL4wxEmptyStringwxDefaultPositionwxDefaultSizewxTE_CENTREwxDefaultValidator_T“ID_TEXTCTRL4”));txtPortName->禁用();StaticBoxSizer1->添加txtPortName1wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);lblPortInterface=wxStaticTextID_STATICTEXT5_"端口接口:"),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT5”));lblPortInterface->禁用();StaticBoxSizer1->添加lblPortInterface0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);txtPortInterface=wxTextCtrlID_TEXTCTRL5wxEmptyStringwxDefaultPositionwxSize3521),wxTE_CENTREwxDefaultValidator_T“ID_TEXTCTRL5”));txtPortInterface->禁用();StaticBoxSizer1->添加txtPortInterface0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);lblOpenArg=wxStaticTextID_STATICTEXT6_参数:“),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT6”));lblOpenArg->禁用();StaticBoxSizer1->添加lblOpenArg0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);txtOpenArg=wxTextCtrlID_TEXTCTRL6wxEmptyStringwxDefaultPositionwxDefaultSizewxTE_CENTREwxDefaultValidator_T“ID_TEXTCTRL6”));txtOpenArg->禁用();StaticBoxSizer1->添加txtOpenArg1wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);BoxSizer1->添加StaticBoxSizer10wxALL|wxEXPAND3.);btnSetISOMode=wxButtonID_BUTTON4_“SetISO14443_4_Mode”),wxDefaultPositionwxDefaultSize0wxDefaultValidator_T“ID_BUTTON4”));BoxSizer1->添加btnSetISOMode0wxALL|wxALIGN_LEFT3.);BoxSizer3=wxBoxSizerwxHORIZONTAL);StaticText6=wxStaticTextID_STATICTEXT7_“命令:“),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT7”));BoxSizer3->添加StaticText60wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);命令=wxTextCtrlID_TEXTCTRL7wxEmptyStringwxDefaultPositionwxDefaultSize0wxDefaultValidator_T“ID_TEXTCTRL7”));BoxSizer3->添加命令1wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);btnSendCommand=wxButtonID_BUTTON5_“发送”),wxDefaultPositionwxDefaultSize0wxDefaultValidator_T“ID_BUTTON5”));BoxSizer3->添加btnSendCommand0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);BoxSizer1->添加BoxSizer30wxALL|wxEXPAND3.);BoxSizer4=wxBoxSizerwxVERTICAL);StaticText7=wxStaticTextID_STATICTEXT8_”回应:“),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT8”));BoxSizer4->添加StaticText70wxALL|wxALIGN_LEFT3.);响应=wxTextCtrlID_TEXTCTRL8wxEmptyStringwxDefaultPositionwxSize659145),wxTE_MULTILINE|wxTE_READONLYwxDefaultValidator_T“ID_TEXTCTRL8”));响应->SetBackgroundColourwxSystemSettings::GetColourwxSYS_COLOUR_BTNFACE));BoxSizer4->添加响应1wxALL|wxEXPAND3.);BoxSizer7=wxBoxSizerwxHORIZONTAL);StaticText3=wxStaticTextID_STATICTEXT11_“响应长度:”),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT11”));BoxSizer7->添加StaticText30wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);RespLen=wxTextCtrlID_TEXTCTRL9wxEmptyStringwxDefaultPositionwxSize3521),wxTE_READONLY|wxTE_CENTREwxDefaultValidator_T“ID_TEXTCTRL9”));BoxSizer7->添加RespLen0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);StaticText4=wxStaticTextID_STATICTEXT12_“字节”),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT12”));BoxSizer7->添加StaticText40wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);BoxSizer7->添加001wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);StaticText5=wxStaticTextID_STATICTEXT13_“回应SW:”),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT13”));BoxSizer7->添加StaticText50wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);RespSW=wxTextCtrlID_TEXTCTRL10wxEmptyStringwxDefaultPositionwxSize5021),wxTE_READONLY|wxTE_CENTREwxDefaultValidator_T“ID_TEXTCTRL10”));BoxSizer7->添加RespSW0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);BoxSizer4->添加BoxSizer70wxALL|wxEXPAND3.);BoxSizer1->添加BoxSizer41wxALL|wxEXPAND3.);BoxSizer5=wxBoxSizerwxHORIZONTAL);btnDeselectCard=wxButtonID_BUTTON6_“取消卡”),wxDefaultPositionwxDefaultSize0wxDefaultValidator_T“ID_BUTTON6”));BoxSizer5->添加btnDeselectCard0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);BoxSizer5->添加001wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);btnClear=wxButtonID_BUTTON7_“明确”),wxDefaultPositionwxDefaultSize0wxDefaultValidator_T“ID_BUTTON7”));BoxSizer5->添加btnClear0wxALL|wxALIGN_TOP3.);BoxSizer1->添加BoxSizer50wxALL|wxEXPAND3.);BoxSizer6=wxBoxSizerwxHORIZONTAL);StaticText8=wxStaticTextID_STATICTEXT9_”状态:“),wxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT9”));BoxSizer6->添加StaticText80wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);FunctionStatus=wxStaticTextID_STATICTEXT10wxEmptyStringwxDefaultPositionwxDefaultSize0_T“ID_STATICTEXT10”));BoxSizer6->添加FunctionStatus0wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL3.);BoxSizer1->添加BoxSizer60wxALL|wxEXPAND3.);setsizeBoxSizer1);StatusBar1=wxStatusBarID_STATUSBAR10_T“ID_STATUSBAR1”));int__wxStatusBarWidths_11]={-1};int__wxStatusBarStyles_11]={wxSB_NORMAL};StatusBar1->SetFieldsCount1__wxStatusBarWidths_1);StatusBar1->SetStatusStyles1__wxStatusBarStyles_1);SetStatusBarStatusBar1);BoxSizer1->适合);BoxSizer1->SetSizeHints);连接ID_BUTTON1wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction&apdu_commandFrame::OnbtnReaderOpenClick);连接ID_BUTTON2wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction&apdu_commandFrame::OnbtnReaderResetClick);连接ID_BUTTON3wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction&apdu_commandFrame::OnbtnReaderCloseClick);连接ID_CHECKBOX1wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction&apdu_commandFrame::OncheckAdvancedClick);连接ID_BUTTON4wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction&apdu_commandFrame::OnbtnSetISOModeClick);连接ID_TEXTCTRL7wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction&apdu_commandFrame::OnCommandText);连接ID_BUTTON5wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction&apdu_commandFrame::OnbtnSendCommandClick);连接ID_BUTTON6wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction&apdu_commandFrame::OnbtnDeselectCardClick);连接ID_BUTTON7wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction&apdu_commandFrame::OnbtnClearClick);/ / *)apdu_commandFrame:: ~apdu_commandFrame(){/ /(*摧毁(apdu_commandFrame)/ / *)无效apdu_commandFrame::OnQuitwxCommandEvent&事件{关闭();无效apdu_commandFrame::OnAboutwxCommandEvent&事件{wxString味精=wxbuildinfolong_f);wxMessageBox味精_“欢迎来到…”));无效apdu_commandFrame::CheckFunctionStatusUFR_STATUS状态{如果状态{FunctionStatus->SetLabel((字符串UFR_Status2String状态));wxColor颜色25500);FunctionStatus->SetForegroundColour颜色);其他的{FunctionStatus->SetLabel((字符串UFR_Status2String状态));wxColor颜色1920719);FunctionStatus->SetForegroundColour颜色);无效apdu_commandFrame::OnbtnReaderOpenClickwxCommandEvent&事件{UFR_STATUS状态如果checkAdvanced->完成()=={状态=ReaderOpen();其他的{wxStringwxReaderType=txtReaderType->GetValue();wxStringwxPortName=txtPortName->GetValue();wxStringwxPortInterface=txtPortInterface->GetValue();wxStringwxAdditional=txtOpenArg->GetValue();wxReaderType=wxReaderType修剪();wxPortName=wxPortName修剪();wxPortInterface=wxPortInterface修剪();wxAdditional=wxAdditional修剪();uint32_treader_type=0uint32_tport_interface=0试一试{reader_type=性病::stoi((性病::字符串wxReaderType);常量性病::异常&e{wxMessageBox"无效的高级选项参数:阅读器类型");txtReaderType->SetFocus();返回c_strport_name=”“如果wxPortName! =“0”{port_name=wxPortNamec_str();试一试{如果wxPortInterface==“T”{port_interface=84其他的如果wxPortInterface==“U”{port_interface=85其他的{port_interface=wxAtoiwxPortInterface);常量性病::异常&e{wxMessageBox"无效的高级选项参数:端口接口");txtPortInterface->SetFocus();返回如果wxPortInterface==“T”{port_interface=84其他的如果wxPortInterface==“U”{port_interface=85其他的{port_interface=wxAtoiwxPortInterface);c_str额外的=0如果wxAdditional! =“0”{额外的=wxAdditionalc_str();状态=ReaderOpenExreader_typeport_nameport_interface无效*额外的);如果状态==UFR_OK{ReaderUISignal11);dll_version->SetValueGetDllVersionStr());reader_opened=真正的CheckFunctionStatus状态);无效apdu_commandFrame::OncheckAdvancedClickwxCommandEvent&事件{如果checkAdvanced->完成()=={txtReaderType->禁用();txtPortName->禁用();txtPortInterface->禁用();txtOpenArg->禁用();lblReaderType->禁用();lblPortName->禁用();lblPortInterface->禁用();lblOpenArg->禁用();其他的{txtReaderType->启用();txtPortName->启用();txtPortInterface->启用();txtOpenArg->启用();lblReaderType->启用();lblPortName->启用();lblPortInterface->启用();lblOpenArg->启用();无效apdu_commandFrame::OnbtnSetISOModeClickwxCommandEvent&事件{UFR_STATUS状态状态=SetISO14443_4_Mode();如果状态==UFR_OK{card_Status_Label->SetBackgroundColour“绿色”);card_Status_Label->SetValue“卡选择。”);CheckFunctionStatus状态);无效apdu_commandFrame::OnbtnReaderResetClickwxCommandEvent&事件{UFR_STATUS状态状态=ReaderReset();CheckFunctionStatus状态);无效apdu_commandFrame::OnbtnReaderCloseClickwxCommandEvent&事件{UFR_STATUS状态状态=ReaderClose();CheckFunctionStatus状态);无效apdu_commandFrame::OnbtnSendCommandClickwxCommandEvent&事件{如果reader_opened{wxMessageBox“阅读器未连接!”);返回//00 a4 04 000 0e 32 50 41 59 2e 53 59 53 2e 44 44 46 30 31 00UFR_STATUS状态字符串c_apduStr=字符串命令->GetValue();c_apduStr=eraseDelimitersc_apduStr);如果c_apduStr长度()2! =0||c_apduStr长度()==0{wxMessageBox“无效的命令!命令必须包含对十六进制数字!”);返回字符*r_apdu=状态=APDUHexStrTransceivec_apduStrc_str(),&r_apdu);如果状态! =UFR_OK){响应->清晰的();RespLen->清晰的();RespSW->清晰的();其他的{字符串响应=”“字符串resp_length_str=”“字符串sw_stream=”“试一试{响应=字符*r_apdusw_stream=响应字符串的子串响应长度()-4);响应=响应字符串的子串0响应长度()-4);resp_length_str=to_string响应长度()/2);uint32_t=0<响应长度();++){=+2响应插入”“);异常&前女友) {};响应->SetValue响应);RespLen->SetValueresp_length_str);RespSW->SetValuesw_stream);CheckFunctionStatus状态);无效apdu_commandFrame::OnbtnDeselectCardClickwxCommandEvent&事件{UFR_STATUS状态状态=s_block_deselectOne hundred.);如果状态{card_Status_Label->SetBackgroundColour“红色”);card_Status_Label->SetValue”牌去掉的时候。”);CheckFunctionStatus状态);无效apdu_commandFrame::OnbtnClearClickwxCommandEvent&事件{响应->清晰的();命令->清晰的();RespLen->清晰的();RespSW->清晰的();无效apdu_commandFrame::OnCommandTextwxCommandEvent&事件{字符串文本=字符串命令->GetValue();uint32_t=0<文本长度();++{如果isHexChar文本))){如果文本! =' '{文本擦除1);命令->SetValue文本);wxMessageBox“只能输入十六进制字符!”);返回
Baidu
map