社区
Eclipse
帖子详情
java 串口通信系统
power_mk
2010-07-30 09:13:28
问题:我要做一个系统,所有设备通过一个串口和PC进行通信,固定格式的命令,PC可被动接收或主动发起一个命令,命令都要进行反馈。为保证命令的准确性,在规定时间内没有收到反馈时需要进行重发,最多发送三次,则表示失败。对于PC端可能会同时处理多条由系统中其他设备发来的命令。
对于这个系统希望能有一个好的思路来编写,哪位大大有经验,希望能够赐教
...全文
214
18
打赏
收藏
java 串口通信系统
问题:我要做一个系统,所有设备通过一个串口和PC进行通信,固定格式的命令,PC可被动接收或主动发起一个命令,命令都要进行反馈。为保证命令的准确性,在规定时间内没有收到反馈时需要进行重发,最多发送三次,则表示失败。对于PC端可能会同时处理多条由系统中其他设备发来的命令。 对于这个系统希望能有一个好的思路来编写,哪位大大有经验,希望能够赐教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
power_mk
2010-08-05
打赏
举报
回复
我大概说一下我现在的做法把,我用一个线程来read串口中的数据,在接收到数据之后,将做一些简单的协议判断,把一帧正确的数据放入我的接收队列中,并在此时反馈一个简单的链路应答。
启用另一个线程来分发队列中的正确数据,对每一条正确的数据我是采用线程池来分别处理。因此在接收线程中基本只有read,没有操作。
我现在遇到的问题是,我read到的时间比设备发送的时间要晚,也就是说,当硬件串口已经接收到数据后,并没立即产生中断,或者说我的线程没有获得cpu的时间片,导致我接收到数据时别实际要晚了一些,无法达到我所要求。
这也只是我的初步分析,希望各位能给我一个好的解决方法
ronniegxq
2010-08-03
打赏
举报
回复
用sun 的串口通讯包,或者专门有串口的框架 ,很简单
oscar2006
2010-08-03
打赏
举报
回复
额。。。
我做过一点这个方面的编写,我说一下我的想法吧
不对勿怪
可不可以用runnable线程呢
监听端口数据,有数据就启动一个runnable线程,这样就不会一直等待线程结束才去读下一个数据
每个线程再处理完数据后直接发送回复并结束线程
这个我觉得缺点在于如果数据较多时启动线程比较多
也可以让线程先不结束
等待端口发送来的带有结束数据传输的命令(如果有的话)再结束该线程
这样程序应该可以较快的完成读取功能
如果单纯的读取20ms的反应时间足够了
要是还需要处理的话20ms应该不够用吧
以上为我的个人意见
呵呵 希望对你有所帮助
dracularking
2010-08-03
打赏
举报
回复
去掉ide
dracularking
2010-08-03
打赏
举报
回复
[Quote=引用 8 楼 power_mk 的回复:]
引用 7 楼 dracularking 的回复:
引用 3 楼 power_mk 的回复:
我还有个问题,就是我用串口进行通信时,发现串口在接收到数据时,也就是read到数据时,总比实际接收到的晚,由于我在接收到数据后,需要在20ms内回复一条的响应,那位大大能帮我分析下
这个接收的晚的问题能通过架构设计解决吗,你是说因为回复了才晚的?
我的接收是一个单独的线程,在程序启动后……
[/Quote]
那你说的实际是指 发送设备发出数据的那一刻了? 发出后要一段时间后才能read到数据,超过20ms,而你ide要求是在接收到消息之后的20ms,不是发送之后的20ms嘛
power_mk
2010-07-30
打赏
举报
回复
难道没人知道吗?
power_mk
2010-07-30
打赏
举报
回复
我还有个问题,就是我用串口进行通信时,发现串口在接收到数据时,也就是read到数据时,总比实际接收到的晚,由于我在接收到数据后,需要在20ms内回复一条的响应,那位大大能帮我分析下
power_mk
2010-07-30
打赏
举报
回复
PC和其他设备都有主动发起命令动作的可能,也就是说设备也有GUI界面,我主要问题是在通信时命令处理的架构上希望有个好的思路
Jlins
2010-07-30
打赏
举报
回复
应该是pc给设备发信号 等待设备回复吗?说清楚点才好设计呀?设备发的命名也是程序控制的吗?
power_mk
2010-07-30
打赏
举报
回复
[Quote=引用 6 楼 yepeng821 的回复:]
最近在看smslib包,它封装的固定格式的at指令,可以主动发指令,也可以监听指令,你可以按照它的思想来写
[/Quote]估计没时间去看,时间比较紧
power_mk
2010-07-30
打赏
举报
回复
[Quote=引用 5 楼 allskylove 的回复:]
用sun 的串口通讯包,或者专门有串口的框架 ,很简单, 就设置 几个位,按照 你的硬件 设置 值,
[/Quote]
主要是我的上下位机,交互可能不是单个命令的处理,有可能在PC与其中一个下位机交互的同时,触发与其他下位机的一些交互。
power_mk
2010-07-30
打赏
举报
回复
[Quote=引用 7 楼 dracularking 的回复:]
引用 3 楼 power_mk 的回复:
我还有个问题,就是我用串口进行通信时,发现串口在接收到数据时,也就是read到数据时,总比实际接收到的晚,由于我在接收到数据后,需要在20ms内回复一条的响应,那位大大能帮我分析下
这个接收的晚的问题能通过架构设计解决吗,你是说因为回复了才晚的?
[/Quote]
我的接收是一个单独的线程,在程序启动后就一直阻塞在read那,但是当下面设备发送数据时,总感觉,read触发的时间要比实际下面设备发送的要晚。不能满足我在20ms内回复的要求
dracularking
2010-07-30
打赏
举报
回复
[Quote=引用 3 楼 power_mk 的回复:]
我还有个问题,就是我用串口进行通信时,发现串口在接收到数据时,也就是read到数据时,总比实际接收到的晚,由于我在接收到数据后,需要在20ms内回复一条的响应,那位大大能帮我分析下
[/Quote]
这个接收的晚的问题能通过架构设计解决吗,你是说因为回复了才晚的?
yepeng821
2010-07-30
打赏
举报
回复
最近在看smslib包,它封装的固定格式的at指令,可以主动发指令,也可以监听指令,你可以按照它的思想来写
ALLSKYLOVE
2010-07-30
打赏
举报
回复
用sun 的串口通讯包,或者专门有串口的框架 ,很简单, 就设置 几个位,按照 你的硬件 设置 值,
java
实现
串口通信
demo(含
串口通信
jar包)
RXTX库是
Java
中一个流行的开源串行通信库,它提供了与操作
系统
底层
串口通信
的接口。在
Java
应用中使用RXTX库可以方便地打开、配置和读写串口。为了使
Java
应用程序能够使用RXTX库,我们需要将`RXTXcomm.jar`添加到
系统
...
Java
串口通信
编程
Java
语言作为一门跨平台的编程语言,能够在不同的操作
系统
上运行,能够与
串口通信
设备进行交互。 RXTX 是一个开源的
Java
类库,提供了串口和并口通信的功能。RXTX 主要是在 COMM 开源包中做扩张,以前的 COMM 包...
java
串口通讯demo源码.zip
java
串口通讯demo源码,内有注解。可实现通过
java
Web页面控制串口,调用串口数据,发送串口指令等操作。可同时监听多个串口,并同时向多个串口发送和接收消息。内含已经写好的串口监听类,定时器,以及串口数据转换...
JAVA
串口通信
实例(GUI图像化界面)
Java
串口通信
是一种在计算机之间通过串行接口进行数据传输的技术。在
Java
中,我们可以使用
java
x.comm库或者RXTX库来实现
串口通信
。这个实例是关于如何使用GUI(图形用户界面)来构建一个
Java
应用程序,使得用户可以...
java
串口通讯 rs232
RS-232,全称为“电子工业协会标准232”,是一种广泛应用于计算机串行通信的接口标准。它允许计算机与其他设备,如打印机、调制解调器或者嵌入式
系统
进行通信。 在
Java
中实现
串口通信
,通常会用到
java
x.comm库,这...
Eclipse
58,446
社区成员
49,460
社区内容
发帖
与我相关
我的任务
Eclipse
Java Eclipse
复制链接
扫一扫
分享
社区描述
Java Eclipse
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章