485通信相关笔记

简介: 485通信相关笔记

rs485是一种通信协议

定义2~6V -2 ~ -6V 表示两种逻辑状态

特点:速率不快,半双工

波特率:

每秒钟通过信道传输的码元数称为码元传输速率,简称波特率

1波特即指每秒传输1个码元符号(通过不同的调制方式,可以在一个码元符号上负载多个bit位信息)

——摘自百度百科

常见 9600 、 38400

使用485模块可以实现485信号转以太网信号

这样硬件设备——一些传感器元件对于我们的服务器来说就是透明的

设备接线示意图

图片来自:有人

485 模块使用方式作为客户端(当然也是支持作为服务器的)

主要设置目标ip 和目标端口 波特率等内容

原理: 通过485模块设置和在服务器监听相应端口,495模块主动连接服务器建立TCP连接,然后服务器可以想设备发送指令,也可以接收设备发来的数据,将数据存储数据库后就可以对数据进行分析,或者做其它用途

编程方式上使用java Socket相关api。

监听端口

while(true) {

Socket sc = new Socket(port);

接受连接

Socket client = sc.accept(); // 阻塞直到客户端连上来

发送指令

OutputStream out = client.getOutputStream();

out.wirte(message);

接收数据

InputStream in = client.getOutputStream();

while(in.read(bytes) > 0) {

//处理数据

}

值得注意的是,需要注意指令不要连续发送 需要等待设备响应的数据回来,否则可能会导致数据错乱.

目前还发现485模块,可能会在一段时间内无反应,即发送指令后没有数据响应,但是重启程序或者485模块后恢复正常。

尝试解决办法

判断是否有可读数据 ,一段时间无响应后,断开客户端连接 ,使客户端重新连接进来

代码实现 (伪代码)

long curTime  = Sys.currentTimeMills() + 90000; // 一分半以内
Bytes bytes = new Bytes(); //存数据
while(Sys.currentTimeMills() < curTime) {
  if(clent.getInputStream().avaible() > 0) {
    clent.getInputStream().read(bytes); 
    curTime  = Sys.currentTimeMills() + 90000; 
    //hand data
  }
}
if(!clent.isClosed())
  client.close();

但是问题依然存在

希望路过的大神,指点一下

目录
相关文章
|
7月前
|
网络协议
通信知识点
通信知识点
45 2
|
6月前
|
传感器 数据采集 监控
LabVIEW开发中的常见通讯协议详解
LabVIEW开发中的常见通讯协议详解
69 0
|
6月前
|
网络协议 数据安全/隐私保护 网络架构
计算机网络基础概念与网络通信原理
计算机网络基础概念与网络通信原理
|
7月前
|
网络协议
技术笔记:modbus通讯协议详解
技术笔记:modbus通讯协议详解
295 0
|
8月前
|
开发框架 网络协议 Java
【计算机网络】—— 网络应用通信基本原理
【计算机网络】—— 网络应用通信基本原理
|
8月前
|
域名解析 缓存 网络协议
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)
214 2
嵌入式开发学习之--通讯的基本概念
嵌入式开发学习之--通讯的基本概念
嵌入式开发学习之--通讯的基本概念
H3C 局域网基本原理
局域网基本原理 使用的协议及线缆 物理层 双绞线 同轴电缆 光纤 无线电 数据链路层 以太网 唯一事实标准 令牌环 淘汰 FDDI 光纤分布式接口 淘汰 网络层 IP 唯一事实标准 IPX 淘汰 Apple talk 淘汰 局域网设备 集线器 内部为总线型拓扑 任意时间只能由一台主机占用总线,连接的所有设备位于统一冲突域 工作在物理层,没有寻址能
110 0
|
域名解析 缓存 网络协议
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)(下)
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)(下)
438 0
|
XML 存储 域名解析
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)(上)
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)(上)
338 0

热门文章

最新文章