cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 2510|回复: 11

请教串口通信中容易死机的问题

[复制链接]
发表于 2009-3-10 15:55:27 | 显示全部楼层 |阅读模式
请教斑竹及各位高手,我做的是实时采集编码器发送的数据,通过串口进行。编码器的数据更新率(最大发送速度)达1K/S。我现在做的是用串口事件(InstallComCallback)触发的方式来读取。
因为编码器的数据格式是五个字节,所以我串口事件触发函数每次读进来五个字节进行处理,可是,这样子很容易造成死机。请教斑竹跟各位高手,有什么好的解决办法吗?

1、是不是这样就必须用多线程?
2、如果用多线程的话怎么用好,那位大哥有多线程数据采集的例子能给发一下吗?
3、多线程里能不能再用InstallComCallback来读取数据?
因为是初学者,还望各位大哥多多指点。
在此致谢!
发表于 2009-3-10 16:26:11 | 显示全部楼层
串口通讯的核心是双方的通讯协议(包括通讯速率、帧格式、握手方式、校验和等),理解了这些很容易处理!
但是所有这些你都未提!我当然也不清楚为什么死机!
而且,根本不需要用多线程,没必要搞那么复杂!
还是把你的工程上传吧!
发表于 2009-3-10 16:27:41 | 显示全部楼层
另外,千万要说明通讯协议是什么!
 楼主| 发表于 2009-3-10 21:48:37 | 显示全部楼层
谢谢
现在想用 LabWindows CVI 中的 MSCom空间来做串口通信, 版主有这方面的例子吗?
可以发一份让小弟学习吗?
谢谢
 楼主| 发表于 2009-3-10 21:54:31 | 显示全部楼层
这个程序是没有握手的,就是编码器不断的发数据到串口,通信速率为9600~57600可选,编码器一次发五个字节的数据,前两个字节为字头,后三个字节为数据。没有校验位,结束位1位。
发表于 2009-3-12 00:42:43 | 显示全部楼层
谢谢
现在想用 LabWindows CVI 中的 MSCom空间来做串口通信, 版主有这方面的例子吗?
可以发一份让小弟学习吗?
谢谢
cyc08 发表于 2009-3-10 21:48

CVI中已经提供了一个RS232类库,没有MSCom控件!
发表于 2009-3-12 00:45:15 | 显示全部楼层
既然是程序问题,你还是把源码发上来吧!否则,这样讨论很吃力!
 楼主| 发表于 2009-3-12 11:31:37 | 显示全部楼层
谢谢大哥 程序上传了 您帮忙看看 能有什么解决的办法。谢谢啦

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-3-12 11:31:56 | 显示全部楼层
麻烦大哥看看解决的方法  谢谢啦
 楼主| 发表于 2009-3-12 23:04:06 | 显示全部楼层
发表于 2009-3-13 09:08:22 | 显示全部楼层
刚才粗略看了一下你的程序,一个明显的错误是你反复安装串口回调函数!
串口回调函数只能安装一次(在串口配置完,且未进行串口操作前就应安装)!
另外,“编码器一次发五个字节的数据,前两个字节为字头,后三个字节为数据”——字头是什么?代表什么意义?
数据是什么类型的?这三个字节具体代表哪几个变量?如何排列的?
 楼主| 发表于 2009-3-14 21:17:43 | 显示全部楼层
谢谢 版主大哥
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-20 13:05 , Processed in 0.684337 second(s), 6 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表