打印

串口问题

[复制链接]
1686|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Enowis|  楼主 | 2011-11-21 18:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
Enowis|  楼主 | 2011-11-21 18:59 | 只看该作者
我还是说一下具体的吧!我是把单片上AD采的值赋给一个字符变量。然后通过串口发送给PC上位机。上位机是自己写的。所以我想弄明白这个数据我应该怎么接受。就是数据从单片机到电脑的每一步都是怎么弄的。中间的过程不是很清楚。找了好久的资料都不是很明白!谢谢了。各位。想来好长时间了!

使用特权

评论回复
板凳
NE5532| | 2011-11-21 19:35 | 只看该作者
看单片机那边UART部分的时序就OK了,计算机只需要理解为从串口收HEX数据就可以了,底层机理很复杂而且与你无关。

使用特权

评论回复
地板
jchaodong| | 2011-11-21 19:44 | 只看该作者
都是串口的操作而已,单片机这边你只要按照数据手册设置各个寄存器,然后编写相应的手法函数即可,pc机一端可以用VB或VC编写串口收发程序,注意二者的设置需要匹配,如波特率、数据位、校验位、流控等。

使用特权

评论回复
5
Enowis|  楼主 | 2011-11-21 19:47 | 只看该作者
那一个字符数据到pc是几个字节数据呢?
我是想弄个协议的。
但是不是很清楚数据的收发过程。
所以有时候接到的数据就不是很正确。

使用特权

评论回复
6
Enowis|  楼主 | 2011-11-21 19:50 | 只看该作者
4# jchaodong
上位机程序。下位机我是会的。我现在就是想搞清楚其中数据的的变化过程。

使用特权

评论回复
7
Enowis|  楼主 | 2011-11-21 19:51 | 只看该作者
3# NE5532
那一个字符数据到pc是几个字节数据呢?
我是想弄个协议的。
但是不是很清楚数据的收发过程。
所以有时候接到的数据就不是很正确

使用特权

评论回复
8
NE5532| | 2011-11-21 20:35 | 只看该作者
串口硬件看来都是HEX数据,数据类型是高层定义的,上位机用VB的COM控件时候,可以弄成跟单片机一样,收一个字节给你丢一个字节上来。调试时候先用串口助手来看,数据对了再调上位机程序。还不对的,检查波特率。

使用特权

评论回复
9
第二个小江| | 2011-11-21 20:54 | 只看该作者
PC端接收串口数据可以按:二进制或字符方式接收,一般都是按字节接收。比如下位机(单片机)发送2个字节,则PC就会收到两个字节。如果直接把AD采到的值传到上位机,则要看AD采到的值是多少比特位的,如果超过8位则要传送2个字节或以上字节数据到PC端,PC端再跟根据你自己设定的协议,比如第1个字节表示低位,第2个字节表示高位。PC端收到两个字节后,组成16-bits的值或32-bits的值,这样PC就得到了AD的值,再根据参考电压和精度计算得到物理意义的电压值。单片机也可以直接计算生成物理意义的电压,再把值转成字符串,上传到PC。

使用特权

评论回复
10
Enowis|  楼主 | 2011-11-22 12:06 | 只看该作者
本帖最后由 Enowis 于 2011-11-22 13:50 编辑

9# 第二个小江
厉害我就是想知道这个的。
不过我把帖子结了。实在对不起了!我再问个问题吧!
我能接受正常的数据。但是我不明白一个问题就是。我传的是字符(没有在单片机上处理,单片机上处理会产生浮点数,浮点数转字符串再传给上位机的话很麻烦,上位机每次接受到数据再转成浮点很不正常。)是八位的。所以我想用一个字节去接受八位的数据应该可以的吧!但是每次都提示类型不符。但我用字节数组接受就没事。但是数组只有第一个元素有数据。其他都是空啊!这是为什么?

使用特权

评论回复
11
NE5532| | 2011-11-22 18:46 | 只看该作者
用定点数来处理,单片机处理浮点数也麻烦。你上位机的数据类型选择不正确。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

15

帖子

1

粉丝