关与串口问题
大家好,我想通过LabVIEW控制单片机串口通信。即LabVIEW首先发送“1”给单片机,单片机接受到后再将数据发送给LabVIEW。但是我调试时问题不断:1:接受到的数据有问题
2:我本来是打算接受16个字节,但是实际上LabVIEW是不停地在接受。
感谢大家的帮忙,谢谢了!
我自己感觉单片机程序应该是没问题,可能是在VISA中的read出问题了,但又不知道在哪里。
我的程序如下,C和LabVIEW的程序都有,麻烦大家下载帮我看看。谢了。 先说lv吧 你这样子发送出去了数据,单片机接收正常吗?
至于接收多少字节,你这种方法是把缓冲区都给读了,你可以上位机处理或者固定的读取数量(前提是保证单片机一致),
要不就用MSCOMM中断方式,这个在WDYJZ的博客里有例子,
另外发送与接收最好能有个延时动作,还有你做了循环配置,清空连接都有点问题,
单片机的做的没问题,但是你最好能做的更逻辑一点,执行效率才会高,看你的简单动作,做的也太复杂了,不过你可能要实现其它动作吧
你先看下例子和说明吧
http://www.cpubbs.com/bbs/viewthread.php?tid=8307&highlight=%B5%A5%C6%AC%BB%FA
http://www.cpubbs.com/bbs/viewthread.php?tid=1070&highlight=%B5%A5%C6%AC%BB%FA
[ 本帖最后由 lgh269 于 2006-12-10 15:40 编辑 ] 请参考(使用mscomm32完成你需要的功能)
http://www.cpubbs.com/bbs/viewthread.php?tid=18340&extra=page%3D3 如果数据有问题,以下几个地方值得注意:
硬件相关:
1、串口的通讯波特率、效验、数据位、停止位一定要正确;——基本设置;
2、你的单片机是否需要硬件握手 HW Handshake,以及软件握手使用的是XON/XOFF、RTS/CTS、DTR/DSR还是None;
软件相关:
1、读取和写入终止符是否正确,默认是/n;
2、通过VISA的时候,读取数据格式的时候,在1024读取数的情况下多读几个循环,因为有可能单片机过来多个/n,而程序如果读取终止符是/n,第一序列就停止了。另外使用16进制显示可以让你有效的分析数据;
3、使用专门的串口监视软件测试一下,或者串口同步监视(万不得已才用,我原来做Hart协议通讯的时候才用到)
感谢版主
感谢3位版主,谢谢!看完3位的加复,我还是不知道怎么去解决问题。我现在做的部分是数据采集
我的想法是这样的:在LabVIEW中点击“开始”按键后,LabVIEW发送“1”,单片机
接收到“1”后,就开始数据采集(这一部分我在单片机程序中没写出来,是直接假设数据
已在数组中)。当单片机采集完后,再将数据(16字节)上传给LabVIEW,并显示接收的数据,当LabVIEW接受完16字节数后就停止接受,直到我再点击“开始”。
现在我出现的问题是:
1:我点击“开始”labview开始接受数据,但问题是好象LabVIEW在不停地接受数据,而不是接收到
16字节就停止。在数据显示区里,数据不断地出现,不会停下来。
2:点击“开始”后,每一个16字节数是对的,但后面的数有时会重复前16字节数,有时就很乱。
大家,能不能再帮我改改呢?真是麻烦了! 给你做好了 谢谢wdyjz的辛勤劳动,代表版主们向你敬礼,向你学习,:hug: 谢谢大家支持!
我们将尽我们能力为朋友们作出帮助 要是论坛没有兄弟们的支持,真不知道会成什么样子,我们一起努力,无论如何一定绝不会亏待各位好兄弟! 哈哈,楼主的问题偶在QQ上帮他帮了半天,他的问题可能须要用MSCOMM方式才行,
另外一个就是若是单片机发送的数据是一次送入SUBF的,则直接指定读取字节数,
若不是的要么用字符读取后连接判断,要么用MSCOMM方式 真不好意思,这阵子忙着家里的私事!!!没及时回复。非常感觉各位版主们,非常非常感谢。 感谢大家了的帮助了,常来光顾
页:
[1]