Добрый день. Долго боролся сам, но видимо не справлюсь. Есть задача отображать в окне данные от трех одинаковых устройств. Табличка modbus:  Мой код: | Код | package modbusSerial; import net.wimpi.modbus.net.*; import net.wimpi.modbus.procimg.*; import net.wimpi.modbus.ModbusCoupler; import net.wimpi.modbus.util.SerialParameters;
/*импорт системных библиотек библиотек*/ import javax.swing.*; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.SystemColor; import java.awt.event.*; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List;
public class modbusSerial extends JFrame {
private JFrame frame; private JButton btnPoll, btnClose; //private Task task; //private JTextArea textArea; public modbusSerial() { createAndShowGUI(); }; private void createAndShowGUI() { frame = new JFrame("ИЦ ИОН"); frame.setBounds(700, 200, 260, 500); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new GridLayout(0, 1, 0, 0)); JPanel panel = new JPanel(); panel.setBackground(SystemColor.info); frame.getContentPane().add(panel); panel.setLayout(null);
JTextArea textArea = new JTextArea(); textArea.setBounds(4, 32, 244, 395); textArea.setColumns(50); textArea.setRows(16); panel.add(textArea); btnPoll = new JButton("Опросить"); btnPoll.setFont(new Font("Tahoma", Font.BOLD, 11)); btnPoll.setBackground(new Color(60, 179, 113)); btnPoll.setBounds(4, 439, 89, 23); btnPoll.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { btnPoll.setEnabled(false); btnClose.setEnabled(true); //task = new Task(textArea); //task.execute(); } }); btnClose = new JButton("Отмена"); btnClose.setBackground(new Color(240, 128, 128)); btnClose.setBounds(159, 439, 89, 23); btnClose.setEnabled(false); btnClose.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //task.cancel(true); //btnClose.setEnabled(false); //btnPoll.setEnabled(true); System.exit(0); } }); panel.add(btnPoll); panel.add(btnClose);
JLabel label = new JLabel("Данные объекта"); label.setFont(new Font("Tahoma", Font.BOLD, 14)); label.setHorizontalAlignment(SwingConstants.CENTER); label.setBounds(35, 5, 160, 20); panel.add(label); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { modbusSerial testMast = new modbusSerial(); testMast.frame.setVisible(true); } }); try { /* The important instances and variables */ ModbusSerialListener listener = null; SimpleProcessImage spi = null; String portname = "COM2"; //the portname of the serial port to listen to String message = ""; System.out.println("Установка соединения..."); //выводим в консоль message = "Установка соединения..."; //publish(message); //1. Prepare a process image spi = new SimpleProcessImage(); spi.addDigitalOut(new SimpleDigitalOut(true)); spi.addDigitalOut(new SimpleDigitalOut(false)); spi.addDigitalIn(new SimpleDigitalIn(false)); spi.addDigitalIn(new SimpleDigitalIn(true)); spi.addDigitalIn(new SimpleDigitalIn(false)); spi.addDigitalIn(new SimpleDigitalIn(true)); spi.addRegister(new SimpleRegister(251)); spi.addInputRegister(new SimpleInputRegister(45));
//2. Create the coupler and set the slave identity ModbusCoupler.getReference().setProcessImage(spi); ModbusCoupler.getReference().setMaster(false); ModbusCoupler.getReference().setUnitID(2); //3. Set up serial parameters SerialParameters params = new SerialParameters(); params.setPortName(portname); params.setBaudRate(9600); params.setDatabits(8); params.setParity("None"); params.setStopbits(1); params.setEncoding("ascii"); params.setEcho(false); //4. Set up serial listener listener = new ModbusSerialListener(params); listener.setListening(true);
} catch (Exception ex) { ex.printStackTrace(); } }//main }//class modbusSerial
|
Хочу из этого сделать работающее. Готов отблагодарить.
|