用到的函数:
unsigned WINAPI ICC_tsi_apiVB(HANDLE fd,int len, unsigned char *comm,int *lenr,unsigned char *resp);                                                 /*
       fd     : 已打开的端口描述符.
       len    : 命令comm的长度
       comm   : 发向卡上的命令
       lenr   : 从卡上接收到的数据长度
       resp   : 从卡上接收到的数据
     返回:
     0xffff通迅失败                                 */
unsigned char * WINAPI CHexToBin(unsigned char *bin,unsigned char *asc,unsigned int len);                                                               /*
   参数:
 bin:二进制结果串: 0x12,0x34,0xE1,0xFA
 asc:十六进制字符串,如"1234E1FA"
 len:十六进制字符串长度
   返回值:
       二进制结果串的指针                                          */
unsigned char * WINAPI BinToCHex(unsigned char *asc,unsigned char *ibn,unsigned int len);                                                               /*
   参数:
   asc:十六进制字符串,如"1234E1FA"
   bin:二进制结果串: 0x12,0x34,0xE1,0xFA
   len:二进制串长
   返回值:
       十六进制字符串的指针                                         */
代码如下:
UpdateData(TRUE); //读取编辑框内容
int *lr=NULL;
unsigned char *rep=NULL;
char buff[256];unsigned int len=m_strTXData.GetLength();
CHexToBin((unsigned char *)buff,(unsigned char *)(LPCSTR )m_strTXData,len);//16进制转2进制

unsigned re1=ICC_tsi_apiVB(fd,len,(unsigned char *)(LPCSTR )m_strTXData,lr,rep);//发送数据

if(re1=0xffff)
 {
  MessageBox("发送命令或接收返回的数据失败!", "错误!", MB_ICONERROR);
  return;
 }
else
 {   
  BinToCHex((unsigned char *)buff,rep,(int)(LPCSTR )lr);//2进制转16进制
  m_strRXData=(LPCSTR)rep;
 }

解决方案 »

  1.   

    如果按你函数定义:你的错太多了UpdateData(TRUE); //读取编辑框内容
    int lr;
    unsigned char rep[256];
    char buff[256];unsigned int len=m_strTXData.GetLength();
    CHexToBin((unsigned char *)buff,(unsigned char *)(LPCSTR )m_strTXData,len);//16进制转2进制
    unsigned re1=ICC_tsi_apiVB(fd,len,(unsigned char *)(LPCSTR )buff,&lr,rep);//发送数据

    if(re1=0xffff)
     {
      MessageBox("发送命令或接收返回的数据失败!", "错误!", MB_ICONERROR);
      return;
     }
    else
     {   
      BinToCHex((unsigned char *)buff,rep,(unsigned int)lr);//2进制转16进制
      m_strRXData=(LPCSTR)buff;
     }
    ////随手写的,可能用错
      

  2.   

    这样改:
    代码如下:
    UpdateData(TRUE); //读取编辑框内容
    int lr;
    unsigned char rep[1024];
    char buff[256];unsigned int len=m_strTXData.GetLength();
    CHexToBin((unsigned char *)buff,(unsigned char *)(LPCSTR)m_strTXData,len);//16进制转2进制

    unsigned re1=ICC_tsi_apiVB(fd,len,(unsigned char *)(LPCSTR )m_strTXData,&lr,rep);//发送数据

    if(re1=0xffff)
     {
      MessageBox("发送命令或接收返回的数据失败!", "错误!", MB_ICONERROR);
      return;
     }
    else
     {   
      BinToCHex((unsigned char *)buff,rep,lr);//2进制转16进制
      m_strRXData=rep;
     }