最近做了一个活,数据采集,30个串口,用timer轮询。
现在问题关键在响应时间上,客户要求响应时间在1秒钟以内
也就是33毫秒通讯一次
发送命令10个字节
返回的数据70字节
波特率目前是9600,一旦提高波特率,开始通讯稳定,一会儿就会出现通讯中断,再也连不上了。
9600下 设置发送间隔为200ms以上才会通讯稳定,一旦快了就会出现上面所说的情况
怎么才能缩短发送间隔,正常说100ms应该能稳定吧
另外串口接收延时时间多长时间才够
谁有能稳定的串口程序例子贴上来,谢谢了
------解决思路----------------------
只有一个串口,是没什么办法了
还是从硬件入手,要么加个USB转多个串口的设备,要么加个以太网转多个串口的网关
总之只有一个串口就只能轮询,而轮询就不可能有那么好的实时性
------解决思路----------------------
波特率不能随便提高
这个跟线缆长度,环境辐射程度,还有接入的设备数量,都是有关系的
波特率太高,有效距离就会缩短,波特率越低,抗干扰能力越强
或者可以这样:
加个嵌入式主机,8个串口的
然后里面放个程序,使用7个串口去循环读表
然后开放一个串口给你的电脑去读取数据
这样你就能一次性读到所有表的数据了
------解决思路----------------------
我们使用过研华的UNO-2178A,自带8串口,可以接显示器,自带2个网口,6个USB口
设备很小,还没有一个显示器大.
------解决思路----------------------
轮询方式的起因,只要说一句就能明白了,肯定是在设计自定义的通讯协议方面“图省事”造成的恶果,根本没有考虑“设备主动发消息”。
为什么要“骂死”呢?你太能忽悠了。
------解决思路----------------------
我们曾经做过一种设备,由于放在野外,通讯距离不能保证很远。于是在协议中设计了一种“接力”的方式,许多设备的状态信息都是通过7、8台其它设备中转,最后才发送到上位机的。而制定这个协议,写个设计开发指南,只需要一根烟的功夫。关键是设计之要有这方面的意识。不能什么设计都只是图省事。