在使用CSrialPort类通过串口与单片机通信时,默认的是以字符型发送,希望能以十六进制发送,比如上位机发送0x11,下位机能收到,而不是asc码值,小弟愚钝,初学vc,还望各位朋友指点下,最好详细些

解决方案 »

  1.   

    "\x11\x12\x13"
    上面就是0x11 0x12 0x13
      

  2.   

    不知道你是不是在编辑框里输入一个字符串,然后按十六进制发送的,如果是的话下面的代码对你有帮助
    char hex(char c)
    {
      if(c>='0'&&c<='9')
         return c-0x30;
      else if(c>='A'&&c<='F')
         return c-'A'+10;
      else if(c>='a'&&c<='f')
         return c-'a'+10;
      else
         return 0x10;
    }
    void strhex(CString str,char *data)
    {
      int t,t1;
      int rlen=0,len=str.GetLength();
      for(int i=0;i<len)
      {
        char l,h=str[i];
        if(h==' ')去空格
         {
            i++;
            continue;
          }
         i++
         if(i>=len)break;
         l=str[i];
         t=hex(h);高位
         t1=hex(l);低位
         if((t==16)||(t1==16))
           break;
         else
           t=t*16+t1;
         i++;
         data[rlen]=(char)t;
         rlen++;
       }
    }
          
      

  3.   

    用BYTE或char数组,填充16进制数据,再发送即可。
      

  4.   

    你可以重载那个函数的,看下VC\tc 串口通讯编程实例。
      

  5.   

    CSrialPort类修改下,将发送的char改成BYTE,然后BYTE bSend[1]={0x11},直接发送就可以了