使用MSCOMM控件是否只能实现字符串的收发?
使用MSCOMM控件如何实现16进制数据的收发?

解决方案 »

  1.   

    COleSafeArray 每一个就是一个字节,不就是16进制么?
    VARIANT variant_inp;
    COleSafeArray safearray_inp;
    int len;

    variant_inp = GetInput();
    safearray_inp = variant_inp;
    len = safearray_inp.GetOneDimSize();for( .. <len;.. )
    {
    }
      

  2.   

    那不是只是在数据的传输过程中才是按16进制传的,但是要是在发送框中写入数据进行传输,这个数据一定被认定为是字符串吧?也就是说我想传16进制数 ef,但是实际传输的是ef的ASCII。
      

  3.   

    如:发送框中写入的数据是ASCII:
    01 02 03 04 05
    事实上:
    ASCII '01' = 30h 31h;
    所以发送前要转换到 数值 01:
    取第一个ASCII =‘0’所以:‘0’-‘0’=0;
    取第二个ASCII =‘1' 所以:‘1’-'0' =1;
    0要在前面所以左移4位( << 4)
    加上 1=00000001(B)
    这个发出去的字节就是01h.
      

  4.   

    你可以按二进制发送,发关的都是数字(不是字符),比如:BYTE a;a=10;或者a=0x0A;这两个语句都是一样的结果,当接收方想显示字符时,可以把数字转换成字符,用itoa就可以了