多串口数据收发

2019-07-18 01:36发布

本人使用2块泛华串口扩展数据采集板卡,每个板卡含有五路422(232),想实现八路422同时收发数据,并对串口接受的数据处理并显示。
在设计的时候使用并行的while循环,但是在数据显示的时候总会延迟,不能即时刷新数据。程序在运行期间还会出现卡死状况,求指教,改用什么方法改进?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
fantek
1楼-- · 2019-07-18 20:34
 精彩回答 2  元偷偷看……
zs1206
2楼-- · 2019-07-18 21:55
谢谢版主,希望给更多的指点。
fantek
3楼-- · 2019-07-18 23:19
本帖最后由 fantek 于 2014-1-8 18:12 编辑
zs1206 发表于 2014-1-7 14:02
波特率不是每一路都相同的。部分程序如下:由于工作需要刚接触,还请多多指教 ...

没用过PS PXI-3510,如果框图是其中3路串口通信程序了话,先发几个疑问:
1、发送字符串循环
对程序框图中发送字符串循环的理解:(1)字符串送入发送缓存-------(2)设置发送通道开始发送------(3)检测发送缓冲区是否发送完毕。
问题是:
  • 第(1)步和第(2)步为什么放到循环内,会不会多次重复发送。在框图最下面的发送循环却放到了循环外。
  • 通信线路是异步双工的,第(3)步的处理显得有点多余,除非是板卡硬件故障造成count死锁。


2、框图内上、中、下三个字符串发送循环延时
三个发送循环延时分别设置为:40毫秒、500毫秒、0毫秒
这三个数是如何计算或测试出来的?设置为定值想快都快不了。尤其是0毫秒,CPU累死得毫无意义,非常不节能。

3、对于接收字符串循环
什么时候才能退出啊?

4、发送字符串循环之前的发送和接收缓冲区长度(count)检测。
考虑很周全,但没看到“真”面目。是清空缓冲区吗?那为什么不在接收字符串循环中判断接收缓冲区长度呢。在发送字符串循环中已经有的缓冲长度检测,如果是主程序,循环前面的send count检测也无必要。如果作为故障处理......。

5、该程序中是否还有其它卡的工作程序呢?
实时采集数据可以理解。如果有的话,尽量避免类似1秒刷新曲线100次的实时显示。

以上理解也许有误,还是请楼主提供一下PS PXI-3510的硬件和软件手册或者厂家提供的最简单的串口通信示例程序框图吧。



zs1206
4楼-- · 2019-07-19 03:56
谢谢版主耐心解答,再此将泛华3510范例献上,请版主多多指教。 单通道自发自收 1.png 图片为3510接收于发送数据的范例,我所编写的程序根据这个照猫画虎来做的,估计其中有很多不合适的地方,还请楼主多多指教。
2.png
不敢说先生
5楼-- · 2019-07-19 07:52
新手,来学习学习
353051129
6楼-- · 2019-07-19 11:20
 精彩回答 2  元偷偷看……

一周热门 更多>