目前我正在使用施耐德电力逻辑电气设备。我想从设备读取数据并在系统中显示该值。到目前为止,我发现了 J2mod、Jamod 和 Modbus4Java 库。我使用了所有modbus4java来连接并获取设备的数据。
实际上我仍然很困惑是否应该创建主端或从端。根据我的理解,该设备将是从站,我的系统将是主站(第一个问题)。
以下是我的设备上的设置。表示设备处于从机模式,协议为Modbus RTU。那么,我需要创建一个使用 ModbusRTU 协议与其通信的主应用程序,对吗?(第二个问题)
下面是我的应用程序作为主站并使用 ModbusRTU 协议的代码
public static void main(String[] args) throws ModbusTransportException, ErrorResponseException {
ModbusFactory factory = new ModbusFactory();
SerialParameters params = new SerialParameters();
params.setCommPortId("COM6");
params.setBaudRate(9600);
params.setDataBits(8);
params.setStopBits(1);
params.setParity(0);
ModbusMaster master = factory.createRtuMaster(params);
master.setTimeout(1000);
master.setRetries(0);
long start = System.currentTimeMillis();
try {
master.init();
} catch (Exception e) {
System.out.println( "Modbus Master Init Error: " + e.getMessage());
return;
}
try {
System.out.println("Reg. 1001 Value:" + master.getValue(1, RegisterRange.HOLDING_REGISTER, 3110, …Run Code Online (Sandbox Code Playgroud) 我有一种情况,我需要使用密钥拆分后端给定的Json对象。这是后端提供的JSON的示例。
{
"answer": {
"E2": "Tony Stark",
"E3": "1",
"E4": "2",
"E6": "4",
"E8": "9120",
"E9": "01",
"F1": "Marvel",
"F2": "1",
"F4": "2",
"F6": "4",
"F8": "9120",
"F9": "01",
"G1": "02",
"G2": "02",
"G3": "02",
"H10": "Car"
}
}
Run Code Online (Sandbox Code Playgroud)
我可以将答案分为E,F,G和H部分吗?预期结果是
{
"answer": [
{
"E2": "Tony Stark",
"E3": "1",
"E4": "2",
"E6": "4",
"E8": "9120",
"E9": "01",
"sectionName": "E"
},
{
"F1": "Marvel",
"F2": "1",
"F4": "2",
"F6": "4",
"F8": "9120",
"F9": "01",
"sectionName": "F"
},
{
"G1": "02",
"G2": …Run Code Online (Sandbox Code Playgroud)