用计算机做主机,通过485总线与多个单片机通信,因为其通信方式是半双工的。那如何检测485总线是否空闲。

MackedNice 2003-09-30 09:41:47
以前,我是用延时的方式作的,发送一个命令,延时一端时间。效率太差。现在,我想在向单片机发送一个命令以前。先检查485总线,如果空闲,则发送,否则命令转到一个队列中,当485总线空闲时,发出一个消息,队列接到消息后,再发送命令。
...全文
539 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gpg 2003-09-30
  • 打赏
  • 举报
回复
你只管发送,收到回应再发送。
就是你只要保证统一时刻只收或只发。

当然,你会说,我发的同时它也发咋办。
好办,建立严格的因答机制就行了。
appletreestudio 2003-09-30
  • 打赏
  • 举报
回复
只需要查询计算机的串口是否为空就可以了。
具体请参见《C++builder与RS-232串口通信》
虽然不是485的,但是效果是一样的
Behard 2003-09-30
  • 打赏
  • 举报
回复
检查 485 总线?好像不行的吧!

因为计算机仅仅是知道是否有数据已经接收完毕或者正在接收数据
而不知道是否后面还有数据进来
(使用计算机发送时,他仅仅是查询是否可以再次发送数据而已)

一般 485 通讯都是固定的由主机查询,子机响应(这里做一个严格的时间限制)
MackedNice 2003-09-30
  • 打赏
  • 举报
回复
软件怎么实现
fatwave 2003-09-30
  • 打赏
  • 举报
回复
有这种硬件,叫排队机,它会自动将数据从空闲的端口发出去的!!
netsys2 2003-09-30
  • 打赏
  • 举报
回复
得写硬件驱动。。。
MackedNice 2003-09-30
  • 打赏
  • 举报
回复
那么不检查485总线,发送线程发送一条命令后,等待。接受线程不断接受并检查串口的数据。如果接受到一条数据包的结束码(如03),则通知发送线程再发送一条命令。这样行不行啊。。
代码怎么实现啊。。。
郁闷中。。。。。。。。。。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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