Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 73197d7227 | |||
| a380f75718 | |||
| 2e031a36d3 |
420
src/main/java/org/example/Swing.java
Normal file
420
src/main/java/org/example/Swing.java
Normal file
@ -0,0 +1,420 @@
|
|||||||
|
package org.example;
|
||||||
|
|
||||||
|
import com.jnrsmcu.sdk.netdevice.*;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import javax.swing.border.TitledBorder;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.awt.event.ItemEvent;
|
||||||
|
import java.awt.event.ItemListener;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Swing extends JFrame {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -7855826301914463533L;
|
||||||
|
private JTextField txtPort;
|
||||||
|
private JScrollPane scrollPane;
|
||||||
|
private JTextArea textArea;
|
||||||
|
private JButton btnStart;
|
||||||
|
private JButton btnStop;
|
||||||
|
private JCheckBox chkRelay0;
|
||||||
|
private JCheckBox chkRelay1;
|
||||||
|
private JCheckBox chkRelay2;
|
||||||
|
private JCheckBox chkRelay3;
|
||||||
|
private JCheckBox chkRelay4;
|
||||||
|
private JCheckBox chkRelay5;
|
||||||
|
private JCheckBox chkRelay6;
|
||||||
|
private JCheckBox chkRelay7;
|
||||||
|
private JButton btnTimming;
|
||||||
|
private JButton btnCallStore;
|
||||||
|
private RSServer rsServer;// 定义监听服务对象
|
||||||
|
private IDataListener listener = new IDataListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveTimmingAck(TimmingAck data) {// 校时指令应答处理
|
||||||
|
textArea.append("校时应答->设备编号:" + data.getDeviceId() + "\t执行结果:" + data.getStatus() + "\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveTelecontrolAck(TelecontrolAck data) {// 遥控指令应答处理
|
||||||
|
textArea.append("遥控应答->设备编号:" + data.getDeviceId() + "\t继电器编号:" + data.getRelayId() + "\t执行结果:"
|
||||||
|
+ data.getStatus() + "\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveStoreData(StoreData data) {// 已存储数据接收处理
|
||||||
|
// 遍历节点数据。数据包括网络设备的数据以及各个节点数据。温湿度数据存放在节点数据中
|
||||||
|
for (NodeData nd : data.getNodeList()) {
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
|
||||||
|
String str = sdf.format(nd.getRecordTime());
|
||||||
|
|
||||||
|
textArea.append("存储数据->设备地址:" + data.getDeviceId() + "\t节点:" + nd.getNodeId() + "\t温度:" + nd.getTem()
|
||||||
|
+ "\t湿度:" + nd.getHum() + "\t存储时间:" + str + "\t坐标类型:" + nd.getCoordinateType() + "\t经度:"
|
||||||
|
+ nd.getLng() + "\t纬度:" + nd.getLat() + "\r\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveRealtimeData(RealTimeData data) {// 实时数据接收处理
|
||||||
|
// 遍历节点数据。数据包括网络设备的数据以及各个节点数据。温湿度数据存放在节点数据中
|
||||||
|
for (NodeData nd : data.getNodeList()) {
|
||||||
|
textArea.append("实时数据->设备地址:" + data.getDeviceId() + "\t节点:" + nd.getNodeId() + "\t温度:" + nd.getTem()
|
||||||
|
+ "\t湿度:" + nd.getHum() + "\t经度:" + data.getLng() + "\t纬度:" + data.getLat() + "\t坐标类型:"
|
||||||
|
+ data.getCoordinateType() + "\t继电器状态" + data.getRelayStatus() + "\t浮点型数据:" + nd.getFloatValue()
|
||||||
|
+ "\t32位有符号数据:" + nd.getSignedInt32Value() + "\t32位无符号数据:" + nd.getUnSignedInt32Value()
|
||||||
|
+ "\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveLoginData(LoginData data) {// 登录数据接收处理
|
||||||
|
textArea.append("登录->设备地址:" + data.getDeviceId() + "\r\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveParamIds(ParamIdsData data) {
|
||||||
|
String str = "设备参数编号列表->设备编号:" + data.getDeviceId() + "\t参数总数量:" + data.getTotalCount() + "\t本帧参数数量:"
|
||||||
|
+ data.getCount() + "\r\n";
|
||||||
|
for (int paramId : data.getPararmIdList())// 遍历设备中参数id编号
|
||||||
|
{
|
||||||
|
str += paramId + ",";
|
||||||
|
}
|
||||||
|
textArea.append(str + "\r\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveParam(ParamData data) {
|
||||||
|
String str = "设备参数->设备编号:" + data.getDeviceId() + "\r\n";
|
||||||
|
|
||||||
|
for (ParamItem pararm : data.getParameterList()) {
|
||||||
|
str += "参数编号:" + pararm.getParamId() + "\t参数描述:" + pararm.getDescription() + "\t参数值:"
|
||||||
|
+ (pararm.getValueDescription() == null ? pararm.getValue()
|
||||||
|
: pararm.getValueDescription().get(pararm.getValue()))
|
||||||
|
+ "\r\n";
|
||||||
|
}
|
||||||
|
textArea.append(str + "\r\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveWriteParamAck(WriteParamAck data) {
|
||||||
|
String str = "下载设备参数->设备编号:" + data.getDeviceId() + "\t参数数量:" + data.getCount() + "\t"
|
||||||
|
+ (data.isSuccess() ? "下载成功" : "下载失败");
|
||||||
|
textArea.append(str + "\r\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveTransDataAck(TransDataAck data) {
|
||||||
|
String str = "数据透传->设备编号:" + data.getDeviceId() + "\t响应结果:" + data.getData() + "\r\n字节数:"
|
||||||
|
+ data.getTransDataLen();
|
||||||
|
textArea.append(str + "\r\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private JTextField txtDeviceId;
|
||||||
|
private JTextField txtParamIds;
|
||||||
|
private JTextField txtParamId;
|
||||||
|
private JTextField txtParamVal;
|
||||||
|
private JPanel panel_2;
|
||||||
|
private JLabel label_4;
|
||||||
|
private JTextField txtTransData;
|
||||||
|
private JButton btnTrans;
|
||||||
|
|
||||||
|
public Swing() {
|
||||||
|
setTitle("Demo");
|
||||||
|
setResizable(false);
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
setSize(653, 710);
|
||||||
|
setLocationRelativeTo(null);
|
||||||
|
|
||||||
|
JLabel lblNewLabel = new JLabel("\u7AEF\u53E3:");
|
||||||
|
lblNewLabel.setBounds(10, 10, 40, 15);
|
||||||
|
|
||||||
|
txtPort = new JTextField();
|
||||||
|
txtPort.setBounds(45, 7, 66, 21);
|
||||||
|
txtPort.setText("2404");
|
||||||
|
txtPort.setColumns(10);
|
||||||
|
|
||||||
|
btnStart = new JButton("\u542F\u52A8");
|
||||||
|
btnStart.setBounds(135, 6, 85, 23);
|
||||||
|
btnStart.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
|
||||||
|
btnStart.setEnabled(false);
|
||||||
|
new Thread(() -> {
|
||||||
|
String paramFilePath = System.getProperty( "user.dir" ).concat("/libs/param.dat");
|
||||||
|
rsServer = RSServer.Initiate(Integer.parseInt(txtPort.getText()), paramFilePath);// 初始化
|
||||||
|
|
||||||
|
rsServer.addDataListener(listener);// 添加数据监听事件
|
||||||
|
try {
|
||||||
|
rsServer.start();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} // 启动监听服务
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
btnStop = new JButton("\u505C\u6B62");
|
||||||
|
btnStop.setBounds(237, 6, 85, 23);
|
||||||
|
btnStop.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
btnStart.setEnabled(true);
|
||||||
|
rsServer.stop();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
scrollPane = new JScrollPane();
|
||||||
|
scrollPane.setBounds(10, 400, 624, 275);
|
||||||
|
|
||||||
|
textArea = new JTextArea();
|
||||||
|
scrollPane.setViewportView(textArea);
|
||||||
|
|
||||||
|
JLabel label = new JLabel("\u8BBE\u5907\u5730\u5740:");
|
||||||
|
label.setBounds(10, 48, 66, 15);
|
||||||
|
|
||||||
|
txtDeviceId = new JTextField();
|
||||||
|
txtDeviceId.setBounds(75, 45, 84, 21);
|
||||||
|
txtDeviceId.setText("20013354");
|
||||||
|
txtDeviceId.setColumns(10);
|
||||||
|
|
||||||
|
btnTimming = new JButton("\u6821\u65F6");
|
||||||
|
btnTimming.setBounds(336, 6, 85, 23);
|
||||||
|
btnTimming.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
int deviceId = Integer.parseInt(txtDeviceId.getText());
|
||||||
|
rsServer.timming(deviceId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
btnCallStore = new JButton("\u53EC\u5524\u6570\u636E");
|
||||||
|
btnCallStore.setBounds(428, 6, 90, 23);
|
||||||
|
btnCallStore.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
int deviceId = Integer.parseInt(txtDeviceId.getText());
|
||||||
|
|
||||||
|
boolean b = rsServer.callStoreData(deviceId);
|
||||||
|
System.out.println("log -> " + b);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
JPanel panel = new JPanel();
|
||||||
|
panel.setBounds(10, 84, 624, 57);
|
||||||
|
panel.setBorder(new TitledBorder(null, "\u7EE7\u7535\u5668\u63A7\u5236", TitledBorder.LEADING, TitledBorder.TOP,
|
||||||
|
null, null));
|
||||||
|
|
||||||
|
JPanel panel_1 = new JPanel();
|
||||||
|
panel_1.setBounds(10, 147, 624, 112);
|
||||||
|
panel_1.setBorder(
|
||||||
|
new TitledBorder(null, "\u8BBE\u5907\u53C2\u6570", TitledBorder.LEADING, TitledBorder.TOP, null, null));
|
||||||
|
|
||||||
|
panel_2 = new JPanel();
|
||||||
|
panel_2.setBounds(10, 269, 624, 113);
|
||||||
|
panel_2.setBorder(
|
||||||
|
new TitledBorder(null, "\u6570\u636E\u900F\u4F20", TitledBorder.LEADING, TitledBorder.TOP, null, null));
|
||||||
|
panel_2.setLayout(null);
|
||||||
|
|
||||||
|
label_4 = new JLabel("\u900F\u4F20\u6570\u636E\uFF0C16\u8FDB\u5236\u5B57\u7B26\u4E32");
|
||||||
|
label_4.setBounds(10, 23, 419, 15);
|
||||||
|
panel_2.add(label_4);
|
||||||
|
|
||||||
|
txtTransData = new JTextField();
|
||||||
|
txtTransData.setBounds(10, 48, 604, 21);
|
||||||
|
panel_2.add(txtTransData);
|
||||||
|
txtTransData.setColumns(10);
|
||||||
|
|
||||||
|
btnTrans = new JButton("\u6570\u636E\u900F\u4F20");
|
||||||
|
btnTrans.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
int deviceId = Integer.parseInt(txtDeviceId.getText());
|
||||||
|
|
||||||
|
rsServer.trans(deviceId, txtTransData.getText());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
btnTrans.setBounds(10, 79, 93, 23);
|
||||||
|
panel_2.add(btnTrans);
|
||||||
|
panel_1.setLayout(null);
|
||||||
|
|
||||||
|
JLabel label_1 = new JLabel(
|
||||||
|
"\u53C2\u6570\u7F16\u53F7\uFF0C\u7528\u4E8E\u8BFB\u53D6\u8BBE\u5907\u53C2\u6570\uFF08\u591A\u4E2A\u7F16\u53F7\u7528\u82F1\u6587,\u5206\u9694\uFF09");
|
||||||
|
label_1.setBounds(10, 22, 421, 15);
|
||||||
|
panel_1.add(label_1);
|
||||||
|
|
||||||
|
txtParamIds = new JTextField();
|
||||||
|
txtParamIds.setText("1,2,3,4,5,6,7,8,9,10");
|
||||||
|
txtParamIds.setBounds(10, 47, 421, 21);
|
||||||
|
panel_1.add(txtParamIds);
|
||||||
|
txtParamIds.setColumns(10);
|
||||||
|
|
||||||
|
JLabel label_2 = new JLabel("\u53C2\u6570\u7F16\u53F7");
|
||||||
|
label_2.setBounds(10, 78, 54, 15);
|
||||||
|
panel_1.add(label_2);
|
||||||
|
|
||||||
|
txtParamId = new JTextField();
|
||||||
|
txtParamId.setBounds(68, 75, 66, 21);
|
||||||
|
panel_1.add(txtParamId);
|
||||||
|
txtParamId.setColumns(10);
|
||||||
|
|
||||||
|
JLabel label_3 = new JLabel("\u53C2\u6570\u503C");
|
||||||
|
label_3.setBounds(144, 78, 54, 15);
|
||||||
|
panel_1.add(label_3);
|
||||||
|
|
||||||
|
txtParamVal = new JTextField();
|
||||||
|
txtParamVal.setBounds(202, 75, 66, 21);
|
||||||
|
panel_1.add(txtParamVal);
|
||||||
|
txtParamVal.setColumns(10);
|
||||||
|
|
||||||
|
JButton btnReadParametersList = new JButton("\u8BFB\u53D6\u8BBE\u5907\u53C2\u6570\u5217\u8868");
|
||||||
|
btnReadParametersList.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
int deviceId = Integer.parseInt(txtDeviceId.getText());
|
||||||
|
rsServer.callParamList(deviceId);// 发送召唤设备参数列表指令
|
||||||
|
}
|
||||||
|
});
|
||||||
|
btnReadParametersList.setBounds(460, 18, 142, 23);
|
||||||
|
panel_1.add(btnReadParametersList);
|
||||||
|
|
||||||
|
JButton btnReadParameters = new JButton("\u8BFB\u53D6\u8BBE\u5907\u53C2\u6570");
|
||||||
|
btnReadParameters.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
int deviceId = Integer.parseInt(txtDeviceId.getText());
|
||||||
|
List<Integer> ids = new ArrayList<Integer>();
|
||||||
|
String[] idArray = txtParamIds.getText().split(",");
|
||||||
|
for (String str : idArray) {
|
||||||
|
try {
|
||||||
|
ids.add(Integer.parseInt(str));
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ids.size() >= 115) {
|
||||||
|
|
||||||
|
JOptionPane.showMessageDialog(null, "一次读取参数数量不能超过115个", "提示", JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
rsServer.callParam(deviceId, ids);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
btnReadParameters.setBounds(460, 46, 142, 23);
|
||||||
|
panel_1.add(btnReadParameters);
|
||||||
|
|
||||||
|
JButton btnWriteParameters = new JButton("\u4E0B\u8F7D\u8BBE\u5907\u53C2\u6570");
|
||||||
|
btnWriteParameters.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
|
||||||
|
int deviceId = Integer.parseInt(txtDeviceId.getText());
|
||||||
|
List<ParamItem> parameters = new ArrayList<ParamItem>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
parameters.add(ParamItem.New(Integer.parseInt(txtParamId.getText()), txtParamVal.getText()));
|
||||||
|
} catch (Exception ex) {
|
||||||
|
JOptionPane.showMessageDialog(null, ex.getMessage(), "提示", JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (parameters.size() > 115) {
|
||||||
|
|
||||||
|
JOptionPane.showMessageDialog(null, "一次性下发参数数量不能超过115个", "提示", JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
rsServer.writeParam(deviceId, parameters);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
btnWriteParameters.setBounds(460, 74, 142, 23);
|
||||||
|
panel_1.add(btnWriteParameters);
|
||||||
|
|
||||||
|
chkRelay0 = new JCheckBox("\u7EE7\u7535\u56680");
|
||||||
|
panel.add(chkRelay0);
|
||||||
|
|
||||||
|
chkRelay1 = new JCheckBox("\u7EE7\u7535\u56681");
|
||||||
|
panel.add(chkRelay1);
|
||||||
|
|
||||||
|
chkRelay2 = new JCheckBox("\u7EE7\u7535\u56682");
|
||||||
|
panel.add(chkRelay2);
|
||||||
|
|
||||||
|
chkRelay3 = new JCheckBox("\u7EE7\u7535\u56683");
|
||||||
|
panel.add(chkRelay3);
|
||||||
|
|
||||||
|
chkRelay4 = new JCheckBox("\u7EE7\u7535\u56684");
|
||||||
|
panel.add(chkRelay4);
|
||||||
|
|
||||||
|
chkRelay5 = new JCheckBox("\u7EE7\u7535\u56685");
|
||||||
|
panel.add(chkRelay5);
|
||||||
|
|
||||||
|
chkRelay6 = new JCheckBox("\u7EE7\u7535\u56686");
|
||||||
|
panel.add(chkRelay6);
|
||||||
|
|
||||||
|
chkRelay7 = new JCheckBox("\u7EE7\u7535\u56687");
|
||||||
|
panel.add(chkRelay7);
|
||||||
|
chkRelay7.addItemListener(new ChkItemListener(7));
|
||||||
|
chkRelay6.addItemListener(new ChkItemListener(6));
|
||||||
|
chkRelay5.addItemListener(new ChkItemListener(5));
|
||||||
|
chkRelay4.addItemListener(new ChkItemListener(4));
|
||||||
|
chkRelay3.addItemListener(new ChkItemListener(3));
|
||||||
|
chkRelay2.addItemListener(new ChkItemListener(2));
|
||||||
|
chkRelay1.addItemListener(new ChkItemListener(1));
|
||||||
|
chkRelay0.addItemListener(new ChkItemListener(0));
|
||||||
|
getContentPane().setLayout(null);
|
||||||
|
getContentPane().add(txtPort);
|
||||||
|
getContentPane().add(lblNewLabel);
|
||||||
|
getContentPane().add(btnStart);
|
||||||
|
getContentPane().add(btnStop);
|
||||||
|
getContentPane().add(btnTimming);
|
||||||
|
getContentPane().add(btnCallStore);
|
||||||
|
getContentPane().add(txtDeviceId);
|
||||||
|
getContentPane().add(label);
|
||||||
|
getContentPane().add(panel_1);
|
||||||
|
getContentPane().add(panel);
|
||||||
|
getContentPane().add(panel_2);
|
||||||
|
getContentPane().add(scrollPane);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ChkItemListener implements ItemListener {
|
||||||
|
|
||||||
|
private int relayId = 0;
|
||||||
|
|
||||||
|
public ChkItemListener(int relayId) {
|
||||||
|
this.relayId = relayId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void itemStateChanged(ItemEvent e) {
|
||||||
|
JCheckBox jcb = (JCheckBox) e.getItem();
|
||||||
|
int deviceId = Integer.parseInt(txtDeviceId.getText());
|
||||||
|
if (jcb.isSelected()) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
rsServer.telecontrol(deviceId, relayId, 0, 0);
|
||||||
|
} catch (Exception e1) {
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
rsServer.telecontrol(deviceId, relayId, 1, 0);
|
||||||
|
} catch (Exception e1) {
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new Swing().setVisible(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user