给个思路,一个串口挂多台设备

Persistent8813 2006-04-23 10:09:54
单独操作一台设备还好做,如果多台设备,时序问题该如何解决呢?我想做过此类程序的一定很多,请大家给我个思路,谢谢!!
...全文
2492 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
netsys2 2006-04-24
  • 打赏
  • 举报
回复
一个串口接多个设备,采用最好的方法是串口扩展器!

做过银行系统开发的人都用过,银行前台终端需要挂接设备极多,串口不够用了就加串口扩展器。

串口扩展器可以将一个串口分为4个以上,需要读写串口时,先向串口扩展器发一个选端口命令,然后按通常的读写操作就把数据发到目标设备上。

串口扩展器市场200多元一个,牌子有融驰、国光等,你可在当地购买。
Persistent8813 2006-04-24
  • 打赏
  • 举报
回复
程序已经基本实现,方法是:在一个TIME控件的时间事件(时间最少不能少于仪表数*仪表数据返回延迟时间0.2)中,设置仪表数次循环---写入读取命令---读取并记录并绘图。就是程序运行有迟滞感。是不是用线程会效果好些?但对串口的操作只能轮询,用线程也没什么用吧?请大家继续提建议,谢谢!
cczlp 2006-04-24
  • 打赏
  • 举报
回复
一般都根据设备ID判断,如果设备不返回ID, 就应该让它返回一个可以判断的值。
Persistent8813 2006-04-23
  • 打赏
  • 举报
回复
这种温度采集AI系列仪表很通用的,估计很多人都用过吧,不知道他们是如何解决的,期待一种良好的解决方案~
Persistent8813 2006-04-23
  • 打赏
  • 举报
回复
仪表是可以分配仪表号的,根据仪表号发送命令,然后获取数据。只是在多台仪表间定位比较困难。这种仪表最大的遗漏我觉得是返回测量值时没有返回仪表号,造成保存时还要确定该数据的仪表号,由于时序不好测定,很让我发愁~~
铖邑 2006-04-23
  • 打赏
  • 举报
回复
是不是需要周期性采集?我觉得可以搞个队列,按照优先级来执行命令。当然还要看具体的情况而定了。楼主做的东东还是不太了解。
Persistent8813 2006-04-23
  • 打赏
  • 举报
回复
再说详细一点:就是记录一批仪表的温度曲线数据,仪表数不定。这种仪表数据的读取方式是向仪表写入一特定命令后,仪表返回测量值。开始感觉不难,做起来却不知道从何下手了。
铖邑 2006-04-23
  • 打赏
  • 举报
回复
在一个串口上操作多台设备,这个主要还是硬件方面的问题吧
cngoodman 2006-04-23
  • 打赏
  • 举报
回复
总线方式
Persistent8813 2006-04-23
  • 打赏
  • 举报
回复
谢谢各位的提示。分数已经加到200,可以是标题页上显示不对~

我用了VICTOR控件来做,就是循环(按仪表数)-等待(仪表响应时间为0.2秒内+数据处理时间)-重复循环等待~

请各位多谈谈经验了,谢谢!
WYJBCB 2006-04-23
  • 打赏
  • 举报
回复
MARK
jf_jf 2006-04-23
  • 打赏
  • 举报
回复
这是典型的多机通讯的项目,必须为每台机器设置一个id号,每次呼叫不同的id号设备,等待回应,如果仪表机器的通讯模式是485格式或者是422模式,支持多机通信方式,可以采用在串口通信时第一个字节是mark模式(停止位为1),发送机器的地址号,后边发送的模式是space(第九位为0),这样可以支持一对多的通讯,具体的可以看一下单片机的多机通讯方面的书。要是仪表不支持多机通讯,那就只能扩充串口,或者使用ip转串口的转换器(大约2百多员)
铖邑 2006-04-23
  • 打赏
  • 举报
回复
感觉也不是特别的难吧。关键是对时间方面的要求怎样?不能返回仪表号确实不合理,这样你就只能逐台仪表处理了,输命令之后等待命令结果,以便对号入坐。

没有做过,不知道哪位高人做过。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧