vc与单片机串口通信问题,帮帮忙

我用vc6.0的串口控件与接收单片机发送过来的数据,但是PC与单片机的数据格式不相同,单片机发送的是一个字节,而PC使用com.SetRThreshold(1); //为1表示有一个字符即引发接收事件,
1.这里的一个字符是指多少,
2.使用com.GetInput(); 接收到的是单片机发送的原始二进制数吗?
如果我要将单片机发送的一个字节的二进制数转换为十进制怎么处理
3.经常看到COleSafeArray这个是什么类型的变量
1.一个字符就是一个8位的二进制数据,等同于C语言的一个char类型
2.com.GetInput(); 接收到得数据不是简单的二进制数据,是一个串口通信神销协议标准的数据,在VC中,该函数纯瞎银返回的是一个结构体,需要通过如下方式转换成byte型,即typedef unsigned char,然后对byte进行处理
variant_inp=m_MSComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
你发送一个字节,上位机接做宴收到的也是一个字节,即char型,用atoi函数即可转换为10进制
3.COleSafeArray是VC中定义的一个类,原型你可以看VC的定义。
COleSafeArray safearray_inp;含义就是定义该类的一个对象,学过面向对象编程语言撒
1.这里的一个字符是指多少, 比如 FF 这样的一个字符
2.使用com.GetInput(); 接收到的是单片机发送正渗的原始二进制数吗?

接收到的应该是按照协议要求的数据,可以是原始的也可以加处理

如果我稿清大要将单片机发送的一个字节的二进制数转换为键竖十进制怎么处理

比如 99 实际是153 应该是10011001 那就 高1001 转为9*16 低直接为9 然后加得到 153
3.经常看到COleSafeArray这个是什么类型的变量

用于处理任意类型和维数的数组的类
从OLE VARIANT结构派生而来的。OLE SAFEARRAY成员函数在可以通过COleSafeArray来访问,就象是特别为一维的字节数组所设计的一个成员函数集
主要用在通讯中
英文及符号往往只差敬拍用一个字节稿猛,因此叫一个字符,例如空格,也是有二进制8位做记录。
如果硬件及波特率正确,那么所接受的就是单片机发过来的虚羡,但是PC不会知道你所传过来的是ASCII还是纯粹的数据,你必须做好协定,网上有很多现成的hex2bin()的子程序,搜一下。
COleSafeArray网上也有详细解答,不比再这里拷贝给你看