我有一个设备要通过串口给他发命令。命令各格式为
<ESC>G[n]{DATA}
<ESC>----控制字符,ASCII码为27
[n]表示后面数据的字节数
{DATA}表示数据
 比如:<ESC>G 5 0x00 0xFF 0x00 0xFF 0xFFVC++如何用MS Communication control控件的SetOutput()输出啊,高手点拨一下!

解决方案 »

  1.   

    unsigned char Buff[SIZE];
    填充Buff缓冲区
    //Put the char buffer to OleVariant object
    OleVariant Var;
    int Bounds[2] = {0, sizeof(Buff) - 1};
    Var = VarArrayCreate(Bounds, 1, varByte);
    for(int i = 0 ; i < sizeof(Buff) ; i ++)
    Var.PutElement(Buff[i], i);
    Comm->Output = Var;
    这是bcb下的代码,vc下的OleVariant改成COleVariant,相应的方法名略有不同
      

  2.   

    又查了一下,vc下面先创建CByteArray对象,然后用COleVariant::GetByteArrayFromVariantArray转换成COleVariant,再调用Comm->put_Output(...)
      

  3.   

    CByteArray array;
    array.RemoveAll();
    arrar.SetSize(100);
    for(int i=0;i<100;i++)  array.SetAt(i,TxData[i]);
    m_Com.SetOutput(COleVariant(array));////////////TxData为你的数据缓冲区
      

  4.   

    0xFF 是用char 还是unsigned char 好呢?
    这两个类型在内存中的都是1111 1111吗?船口发出的内容是不是一样的啊?
      

  5.   

    应该是一样的。只是计算机的认识的方式不同。可以看成char 类型或unsigned char
      

  6.   

    unsign char ch1=0xFF;
    char ch2=0xFF;
    在内存中是不是都是1111 1111啊?