Commit 713f6c8f7411b235026fbf6fc3be793629dd465d

Authored by liuye
1 parent 630fe9d4

feat(card-client):优化读卡速度

优化读卡速度,调换读卡顺序,先读m1卡再读cpu卡。
etrade_card_client/ETradeClient/hardware/hardware_cmd.cpp
@@ -770,9 +770,49 @@ ReadPINPadCmd::Reply ReadDILICardBasicInfoCmd::Execute(const std::string& input) @@ -770,9 +770,49 @@ ReadPINPadCmd::Reply ReadDILICardBasicInfoCmd::Execute(const std::string& input)
770 break; 770 break;
771 } 771 }
772 772
  773 + //读取m1卡
  774 + do
  775 + {
  776 + reply.error_code = StatusCode::OK;
  777 + //判断是否为cpu卡,以防CPU卡读卡失败
  778 + if (card_basic_info.chip_type.compare("1") == 0)
  779 + {
  780 + break;
  781 + }
  782 +
  783 + if (0 != dili_card_device.M1FindCard())
  784 + {
  785 + reply.error_code = StatusCode::CPU_CARD_DEVICE_CANNOT_FIND_CARD;
  786 + CString error;
  787 + error.Format(L"m1卡寻卡失败,错误信息:%d", reply.error_code);
  788 + LOG_FATAL(error.GetBuffer());
  789 + break;
  790 + }
  791 +
  792 + try
  793 + {
  794 + card_basic_info = dili_card_device.M1ReadBasicInfo();
  795 + }
  796 + catch (std::exception& ex)
  797 + {
  798 + LOG_FATAL(L"m1卡读取基本信息失败,错误信息: " + str_2_wstr(ex.what()));
  799 + reply.error_code = StatusCode::DILI_CARD_DEVICE_READ_BASIC_INFO_FAILED;
  800 + break;
  801 + }
  802 + card_basic_info.chip_type = "2";//m1卡类型
  803 + card_basic_info.device_id = card_basic_info.chip_num;
  804 +
  805 + } while (0);
  806 +
773 //读取CPU卡 807 //读取CPU卡
774 do 808 do
775 { 809 {
  810 + reply.error_code = StatusCode::OK;
  811 + //判断是否为m1卡,以防m1卡读卡失败
  812 + if (card_basic_info.chip_type.compare("2") == 0)
  813 + {
  814 + break;
  815 + }
776 try 816 try
777 { 817 {
778 dili_card_device.FindCard(); 818 dili_card_device.FindCard();
@@ -859,38 +899,7 @@ ReadPINPadCmd::Reply ReadDILICardBasicInfoCmd::Execute(const std::string& input) @@ -859,38 +899,7 @@ ReadPINPadCmd::Reply ReadDILICardBasicInfoCmd::Execute(const std::string& input)
859 } 899 }
860 } while (0); 900 } while (0);
861 901
862 - //读取m1卡  
863 - do  
864 - {  
865 - //判断是否为cpu卡,以防CPU卡读卡失败  
866 - if (card_basic_info.chip_type.compare("1") == 0)  
867 - {  
868 - break;  
869 - }  
870 -  
871 - if (0 != dili_card_device.M1FindCard())  
872 - {  
873 - reply.error_code = StatusCode::CPU_CARD_DEVICE_CANNOT_FIND_CARD;  
874 - CString error;  
875 - error.Format(L"m1卡寻卡失败,错误信息:%d", reply.error_code);  
876 - LOG_FATAL(error.GetBuffer());  
877 - break;  
878 - }  
879 -  
880 - try  
881 - {  
882 - card_basic_info = dili_card_device.M1ReadBasicInfo();  
883 - }  
884 - catch (std::exception& ex)  
885 - {  
886 - LOG_FATAL(L"m1卡读取基本信息失败,错误信息: " + str_2_wstr(ex.what()));  
887 - reply.error_code = StatusCode::DILI_CARD_DEVICE_READ_BASIC_INFO_FAILED;  
888 - break;  
889 - }  
890 - card_basic_info.chip_type = "2";//m1卡类型  
891 - card_basic_info.device_id = card_basic_info.chip_num;  
892 - reply.error_code = StatusCode::OK;  
893 - } while (0); 902 +
894 } while (0); 903 } while (0);
895 904
896 dili_card_device.Disconnect(); 905 dili_card_device.Disconnect();