4 changed files with 6 additions and 480 deletions
@ -1,477 +0,0 @@ |
|||||
package com.xr.drone.demo; |
|
||||
|
|
||||
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; |
|
||||
|
|
||||
import javax.swing.JButton; |
|
||||
import javax.swing.JCheckBox; |
|
||||
import javax.swing.JFrame; |
|
||||
import javax.swing.JLabel; |
|
||||
import javax.swing.JOptionPane; |
|
||||
import javax.swing.JScrollPane; |
|
||||
import javax.swing.JTextArea; |
|
||||
import javax.swing.JTextField; |
|
||||
import javax.swing.SwingUtilities; |
|
||||
|
|
||||
import com.jnrsmcu.sdk.netdevice.IDataListener; |
|
||||
import com.jnrsmcu.sdk.netdevice.LoginData; |
|
||||
import com.jnrsmcu.sdk.netdevice.NodeData; |
|
||||
import com.jnrsmcu.sdk.netdevice.ParamData; |
|
||||
import com.jnrsmcu.sdk.netdevice.ParamIdsData; |
|
||||
import com.jnrsmcu.sdk.netdevice.ParamItem; |
|
||||
import com.jnrsmcu.sdk.netdevice.RSServer; |
|
||||
import com.jnrsmcu.sdk.netdevice.RealTimeData; |
|
||||
import com.jnrsmcu.sdk.netdevice.StoreData; |
|
||||
import com.jnrsmcu.sdk.netdevice.TelecontrolAck; |
|
||||
import com.jnrsmcu.sdk.netdevice.TimmingAck; |
|
||||
import com.jnrsmcu.sdk.netdevice.TransDataAck; |
|
||||
import com.jnrsmcu.sdk.netdevice.WriteParamAck; |
|
||||
|
|
||||
import javax.swing.GroupLayout; |
|
||||
import javax.swing.GroupLayout.Alignment; |
|
||||
import javax.swing.JPanel; |
|
||||
import javax.swing.border.LineBorder; |
|
||||
|
|
||||
import java.awt.Color; |
|
||||
|
|
||||
import javax.swing.border.TitledBorder; |
|
||||
import javax.swing.LayoutStyle.ComponentPlacement; |
|
||||
|
|
||||
public class SwingDemo 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 SwingDemo() { |
|
||||
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(new Runnable() { |
|
||||
|
|
||||
@Override |
|
||||
public void run() { |
|
||||
|
|
||||
rsServer = RSServer.Initiate(Integer.parseInt(txtPort |
|
||||
.getText()),"C:\\Users\\PC\\Desktop\\JavaSDKV2.2.2\\param.dat");// 初始化
|
|
||||
|
|
||||
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("10000000"); |
|
||||
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()); |
|
||||
|
|
||||
rsServer.callStoreData(deviceId); |
|
||||
} |
|
||||
}); |
|
||||
|
|
||||
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 SwingDemo().setVisible(true); |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue