技术标签: java modbus rtu
本文章使用modbus4j和rxtxcomm进行modbus rtu通讯
串口通讯:rxtxcomm的使用:
下载地址:http://fizzed.com/oss/rxtx-for-java
rxtx解压包中的 rxtxParallel.dll,rxtxSerial.dll 这两个文件复制到 C:\Windows\System32 目录下
添加maven依赖
false
true
ias-snapshots
Infinite Automation Snapshot Repository
https://maven.mangoautomation.net/repository/ias-snapshot/
true
false
ias-releases
Infinite Automation Release Repository
https://maven.mangoautomation.net/repository/ias-release/
org.bidib.jbidib.org.qbang.rxtx
rxtxcomm
2.2
com.infiniteautomation
modbus4j
3.0.4
Modbus4j工具类
package com.example.modbus_rtu;
import java.util.ArrayList;
import java.util.List;
import com.serotonin.modbus4j.BatchRead;
import com.serotonin.modbus4j.BatchResults;
import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.code.DataType;
import com.serotonin.modbus4j.exception.ErrorResponseException;
import com.serotonin.modbus4j.exception.ModbusInitException;
import com.serotonin.modbus4j.exception.ModbusTransportException;
import com.serotonin.modbus4j.ip.IpParameters;
import com.serotonin.modbus4j.locator.BaseLocator;
public class ModbusUtils {
/**
* 工厂。
*/
static ModbusFactory modbusFactory;
static {
if (modbusFactory == null) {
modbusFactory = new ModbusFactory();
}
}
/**
* 获取master
*
* @return
* @throws ModbusInitException
*/
public static ModbusMaster getMaster(String host, int port) throws ModbusInitException {
IpParameters params = new IpParameters();
params.setHost(host);
params.setPort(port);
//
// modbusFactory.createRtuMaster(wapper); //RTU 协议
// modbusFactory.createUdpMaster(params);//UDP 协议
// modbusFactory.createAsciiMaster(wrapper);//ASCII 协议
ModbusMaster master = modbusFactory.createTcpMaster(params, false);// TCP 协议
master.init();
return master;
}
public static ModbusMaster getRtuIpMaster(String host, int port) throws ModbusInitException {
IpParameters params = new IpParameters();
params.setHost(host);
params.setPort(port);
//这个属性确定了协议帧是否是通过tcp封装的RTU结构,采用modbus tcp/ip时,要设为false, 采用modbus rtu over tcp/ip时,要设为true
params.setEncapsulated(true);
ModbusMaster master = modbusFactory.createTcpMaster(params, false);
try {
//设置超时时间
master.setTimeout(1000);
//设置重连次数
master.setRetries(3);
//初始化
master.init();
} catch (ModbusInitException e) {
e.printStackTrace();
}
return master;
}
public static ModbusMaster getRtuComMaster(String com,int port) throws ModbusInitException {
//
// modbusFactory.createRtuMaster(wapper); //RTU 协议
// modbusFactory.createUdpMa
文章浏览阅读97次。菜鸡学习day24package day24;import java.util.*;import java.util.stream.Stream;/*Stream流jdk1.8之后出现的,关注的是做什么,不是怎么做遍历流式思想Stream接口 不是函数式接口获取流1.所有的Collection集合都可以通过默认方法stream获取流 default Stream<E> stream()2.静态方法of 可以获取对应数组的流 static <T&
文章浏览阅读3.2k次。问题描述打开OBS后,新建场景、新建显示器捕获后,黑屏没有显示,即使点击开始录制,然后结束录制后,录制的视频仍然是黑屏系统描述Windows10 家庭中文版 1909显卡0 集成显卡显卡1 RTX2060 6GB尝试解决1.桌面右击,选中NVIDIA控制面板,跳出下面所示的界面,选择程序设置2.在选择要自定义的程序中选择OBS,在为此程序选择首选图形处理器中选择第二项或者第三项,建..._英伟达录制全黑
文章浏览阅读4.4w次,点赞49次,收藏291次。一、数据库相关1.连接(1)完整mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]](2)使用默认端口mongodb://localhost(3)使用shellmongo2.查询数据库(1)查询所有数据库show dbs3.创建数据库use database_name如果数据库不存在,则创_mongodb命令
文章浏览阅读294次。瀑布流的几种实现方式各大框架都有很多瀑布流的插件,下面说的是纯js和css实现瀑布流废话不多说,直接上代码,有注释,需要的小伙伴自行观看1.js通过监听window的滚动,图片加载完时会模拟ajax继续获取数据<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">..._瀑布流如何实现
文章浏览阅读5.8k次,点赞10次,收藏47次。写在前面首先我对未及时分享自己的配置及源码向各位网友道歉。本文是对博文ros_arduino_bridge功能包集的使用的拓展,主要是对如何修改ros arduino bridge功能包集,使其兼容其他硬件做一些简要的说明。在这里我以自己的配置为例为大家讲解,如有疑问可以通过csdn私信我或者通过邮箱联系我,我的email:[email protected],欢迎大家为我纠错。..._ros_arduino_bridge
文章浏览阅读541次。分了多个模块,查询xml报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zjp.mapper.UserMapper.selectAll没有找到xml原来配置成下图:最终还是扫描不到xml解决:原来在配置mybatis:mapper-locations:classpath:xxxxx时,需要在classpath后加个号(classpath:),表示扫描所有模块下指定扫_mybatis扫描另一个module的xml
文章浏览阅读1.4k次。[code="java"]import javax.swing.JOptionPane;public class AreaAndCircumferenceProgram { public static final double PI=3.14; public static void main(String args[]) throws ArrayIndexOutOfBoundsExce..._joptionpane.showinputdialog点叉号怎么处理
文章浏览阅读2.7k次。一、基础概念1. 列举几种表连接方式Answer:等连接(内连接)、非等连接、自连接、外连接(左、右、全)Or hash join/merge join/nest loop(cluster join)/index join ??ORACLE 8i,9i 表连接方法。 一般的相等连接: select * from a, b where a.id = b.id; 这个就属于内连_oracle面试
文章浏览阅读1.5k次。Beckhoff PLC与VACON变频器通过CANopen通讯CANopen通讯主控设备准备配置分站坑1,多出的RxPDO和TxPDO坑2,TxPDO和RxPDO的COB-ID设置正确的link to变量实现通讯总结CANopen通讯工业上采用CANopen通讯协议进行通讯非常常见。Beckhoff的PLC(其实是基于PC的嵌入式控制器)控制驱动装置来实现位置控制非常方便,而主控制器和变频器之间通过CANopen进行通讯有许多不能替代的优势:现场总线通讯方式,一台主机可以用126个分站抗干扰能力_变频器can通信控制
文章浏览阅读2.4k次,点赞4次,收藏10次。Jaspersoft Studio 报表模板设计前言 近期业务增加,需要给很多实施人员培训报表模板设计,以方便给不同的客户定制化打印模板.所以就把常用到的一些记录一下.方便使用一、安装 官方下载地址:https://community.jaspersoft.com/project/jaspersoft-studio/releases 选择合适的版本,进行下载.目前个人使用的..._jaspersoft studio条形码
文章浏览阅读10w+次。2014-02-22 wcdj0 Homebrew是啥?“Homebrew installs the stuff you need that Apple didn’t.——Homebrew 使 OS X 更完整”。Homebrew的官网[1](多语言版本)简单明了地介绍了如何安装和使用这个工具,并提供了自己的Wiki。1 安装Homebrewbrew的安装很简单,使用一_homebrew `ensure in mktmpdir
文章浏览阅读447次。1,构建前准备名称 说明 地址 openresty-1.17.8.1.tar.gz openresty 安装包 OpenResty - 中文官方站 ngx_cache_purge-2.3.tar.gz 清理nginx缓存模块(不用可不装) FRiCKLE Labs / nginx / ngx_cache_purge lua-resty-redis-cluster-master.zip rediscluster模块,redis集群使用 GitH_docker openresty 添加ngx_cache_purge模块