java - J2Mod - I/O 异常 - 读取失败
问题描述
我正在为我的项目使用 J2Mod java jar。我通过 comport 与设备连接,但无法在设备中读取或写入数据。当我尝试将数据读取或写入设备时,都会遇到相同的异常。无论何时,使用 QModMaster 我都可以从设备中读取数据。
连接代码 -
SerialParameters parameters;
SerialConnection serialMaster;
try {
parameters = new SerialParameters();
parameters.setPortName((String) jComboBox4.getSelectedItem());
//parameters.setCommPortId("/dev/ttyUSB1");
parameters.setBaudRate(9600);
parameters.setDatabits(8);
parameters.setStopbits(1);
parameters.setParity("none");
// parameters.setEncoding("rtu");
// parameters.setEcho(false);
System.out.println("Connection Section" + parameters);
serialMaster = new SerialConnection(parameters);
serialMaster.open();
System.out.println("Connection open :" + serialMaster.isOpen());
} catch (Exception ex) {
Logger.getLogger(TankIQ_Configurator.class.getName()).log(Level.SEVERE, null, ex);
}
读取数据的代码 -
ReadMultipleRegistersRequest readMultipleRegistersRequest;
ReadMultipleRegistersResponse readMultipleRegistersResponse;
ModbusSerialTransaction trans;
trans = new ModbusSerialTransaction(serialMaster);
Register[] register = {simpleRegister1, simpleRegister2};
int unitid = 1; //the unit identifier we will be talking to
int ref = 50; //the reference, where to start reading from
int count = 2; //the count of IR's to read
int repeat = 1; //a loop for repeating the transaction
//4. Open the connection
try{
//5. Prepare a request
readMultipleRegistersRequest = new ReadMultipleRegistersRequest(50, 2);
readMultipleRegistersRequest.setUnitID(unitid);
readMultipleRegistersRequest.setHeadless();
//6. Prepare a transaction
trans = new ModbusSerialTransaction(serialMaster);
trans.setRequest(readMultipleRegistersRequest);
int k = 0;
do {
trans.setTransDelayMS(1000);
trans.execute();
readMultipleRegistersResponse = (ReadMultipleRegistersResponse) trans.getResponse();
for (int n = 0; n < readMultipleRegistersResponse.getWordCount(); n++) {
System.out.println("Word " + n + "=" + readMultipleRegistersResponse.getRegisterValue(n));
}
k++;
} while (k < repeat);
serialMaster.close();//8. Close the connection
} catch (Exception ex) {
Logger.getLogger(WriteMultipleRegistersRequest.class.getName()).log(Level.SEVERE, null, ex);
}
解决方案
谢谢!所有参与这个问题的人。
现在,让我解释一下,为什么我会收到这个错误。
除了unitid
. unitid
只是从地址而已。在我的情况下,从地址是 5。
推荐阅读
- javascript - 如何在 Quill 的不可编辑块内添加可编辑的文本块?
- excel - VBA列隐藏/取消隐藏突然不起作用
- git - 提交一个本地 git repo 到 svn
- angular-cli - Office Js:使用 angular cli prod build 的语言环境问题
- javascript - Firefox:访问将文件从桌面拖放到 HTML 内容可编辑元素后生成的标签
- oracle - utPLSQL - 将单个测试结果添加到表中
- powerbi - Power BI:制作表格可视化显示数据集的所有观察结果
- javascript - 如何验证逗号分隔的电子邮件地址并以角度限制电子邮件地址?
- java - 无法覆盖 Kotlin 中的 Java 函数
- excel - 使用 Word VBA 将多个 Word 文档中的数据复制到一个 Excel 工作簿