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

我用vc6.0的串口控件与接收单片机发送过来的数据,但是PC与单片机的数据格式不相同,单片机发送的是一个字节,而PC使用com.SetRThreshold(1);//为1... 我用vc6.0的串口控件与接收单片机发送过来的数据,但是PC与单片机的数据格式不相同,单片机发送的是一个字节,而PC使用com.SetRThreshold(1); //为1表示有一个字符即引发接收事件,
1.这里的一个字符是指多少,
2.使用com.GetInput(); 接收到的是单片机发送的原始二进制数吗?
如果我要将单片机发送的一个字节的二进制数转换为十进制怎么处理
3.经常看到COleSafeArray这个是什么类型的变量
展开
 我来答
dcrencq
2009-05-13
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
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;含义就是定义该类的一个对象,学过面向对象编程语言撒
korean_sz
2009-05-13 · TA获得超过3884个赞
知道大有可为答主
回答量:2494
采纳率:0%
帮助的人:2439万
展开全部
1.这里的一个字符是指多少, 比如 FF 这样的一个字符
2.使用com.GetInput(); 接收到的是单片机发送的原始二进制数吗?

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

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

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

用于处理任意类型和维数的数组的类
从OLE VARIANT结构派生而来的。OLE SAFEARRAY成员函数在可以通过COleSafeArray来访问,就象是特别为一维的字节数组所设计的一个成员函数集
主要用在通讯中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjlswb
2009-05-13 · TA获得超过590个赞
知道小有建树答主
回答量:338
采纳率:0%
帮助的人:167万
展开全部
英文及符号往往只用一个字节,因此叫一个字符,例如空格,也是有二进制8位做记录。
如果硬件及波特率正确,那么所接受的就是单片机发过来的,但是PC不会知道你所传过来的是ASCII还是纯粹的数据,你必须做好协定,网上有很多现成的hex2bin()的子程序,搜一下。
COleSafeArray网上也有详细解答,不比再这里拷贝给你看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式