package main; import java.awt.EventQueue; import javax.swing.JFrame; import java.awt.Cursor; import java.awt.Panel; import java.awt.BorderLayout; import javax.swing.JComboBox; import java.awt.GridLayout; import javax.swing.JPanel; import javax.swing.border.TitledBorder; import javax.swing.filechooser.FileFilter; import javax.swing.JButton; import javax.swing.DefaultComboBoxModel; import javax.swing.JFileChooser; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.Timer; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.Toolkit; import javax.swing.JTextField; import javax.swing.UIManager; import java.awt.Color; import java.io.File; import java.nio.ByteBuffer; import java.util.Date; import java.util.Vector; import javax.swing.JTabbedPane; import javax.swing.JScrollPane; import java.awt.Font; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; import com.Com; import com.LimitedDocument; import com.dev.fbs9100.FBS9100_ComBase; import com.modbus.data.MyModbusMaster; import com.sp_comm.SPCommFBS9100; import com.teechart.TBarChart; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javax.swing.BoxLayout; import javax.swing.JTextArea; public class main_window { public static final int CommDevType_MON = 0; public static final int CommDevType_ZDHJ = 1; public int CommDevType = CommDevType_MON; public int main_TabbedPane_SelIndex = 0; private JFrame frmSerialport; private JButton btn_connet; private JButton btn_break; private JComboBox cb_commport; private SPCommFBS9100 SerialComm_FBS9100; private JTextField tf_target_addr; private JTextField tf_txcnt; private JTextField tf_rxcnt; private Timer mMainFormTimer = null; static private ByteBuffer DataBuffer = ByteBuffer.allocate(256); private JTabbedPane main_TabbedPane; private JButton btn_renew_commport; private JTextField tf_slave_id; private JPanel panel_38; private JPanel panel_39; private JPanel panel_40; private JPanel panel_41; private JTextField tf_group_vol; private JTextField tf_group_curr; private JTextField tf_dev_temp; private JPanel panel_43; private JPanel panel_44; private JComboBox comboBox; private JTabbedPane tab_panel_zdhj; private JPanel panel_ZDHJ; private JPanel panel_ZDHJ_Chart; private JPanel panel_ZDHJ_Param; private JPanel panel_ZDHJ_AutoSaveData; private JPanel panel_47; private JTextField tf_dev_version; private JTextField tf_dev_datetime; private JPanel panel_48; private JTextField tf_dev_moncount; private JPanel panel_49; private JPanel panel_51; private JTextField tf_zdhj_ch1_cnt; private JTextField tf_zdhj_ch2_cnt; private JTextField tf_zdhj_ch3_cnt; private JTextField tf_zdhj_ch4_cnt; private JTextField tf_zdhj_ch5_cnt; private JPanel panel_52; private JPanel panel_53; private JPanel panel_54; private JScrollPane scrollPane_2; private JTable table_zdhj_data; private Vector columnVector; private Vector> dataRow; public TBarChart m_TBarMonVolChart; public TBarChart m_TBarMonTmpChart; public TBarChart m_TBarMonResChart; private JTextField tf_zdhj_devaddr; private JTextField tf_zdhj_curr_range; private JTextField tf_zdhj_volcal_offset; private JTextField tf_zdhj_volcal_slope; private JTextField tf_zdhj_currcal_offset; private JTextField tf_zdhj_currcal_slope; private JButton btn_zdhj_volcal_offset; private JButton btn_zdhj_volcal_slope; private JButton tf_zdhj_volcal_reset; private JButton btn_zdhj_currcal_offset; private JButton btn_zdhj_currcal_slope; private JButton btn_zdhj_currcal_reset; private JButton btn_zdhj_param_read; private JButton btn_zdhj_param_write; private JButton btn_zdhj_restest_discharge; private JButton btn_zdhj_restest_lubo; private JPanel panel_monvol_chart; private JPanel panel_monres_chart; private JPanel panel_montmp_chart; private JTextField tf_zdhj_autores_interval; private JTextField tf_zdhj_wenbo_curr_lev; private JPanel panel_42; private JTextField tf_op_rest_inf; private JButton btn_zdhj_restest_auto; private JComboBox cb_zdhj_res_testtype; private JPanel panel_45; private JTextField tf_param_set_inf; private JPanel panel_46; private JPanel panel_50; private JPanel panel_55; private JPanel panel_56; private JPanel panel_57; private JPanel panel_58; private JPanel panel_59; private JButton btn_zdhj_new_savefile; private JButton btn_zdhj_start_record; private JButton btn_zdhj_stop_record; private JTextField tf_zdhj_dfu_filename; private JFileChooser parseDir = new JFileChooser(); private JPanel panel_60; private JPanel panel_61; private JTextField tf_zdhj_record_state; private JTextField tf_batt_state; private JTextField tf_online_vol; private JScrollPane scrollPane; private JTextArea ta_task_list; public static Logger logger = null; public static MyModbusMaster mymaster = null; static{ System.setProperty("log4j.configurationFile", "log4j2_modbus_tester.xml"); } /** * Launch the application. */ public static void main(String[] args) { logger = LogManager.getLogger(main_window.class); EventQueue.invokeLater(new Runnable() { public void run() { try { main_window window = new main_window(); window.frmSerialport.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public main_window() { initialize(); } /** * Initialize the contents of the frame. */ @SuppressWarnings({ "unchecked", "rawtypes" }) private void initialize() { frmSerialport = new JFrame(); //frmSerialport.setResizable(false); frmSerialport.setTitle("MyModBus-TESTER_V1.00"); frmSerialport.setIconImage(Toolkit.getDefaultToolkit().getImage(main_window.class.getResource("/main/uis.png"))); frmSerialport.setBounds(100, 100, 1105, 770); frmSerialport.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frmSerialport.setLocationRelativeTo(null); Panel panel = new Panel(); frmSerialport.getContentPane().add(panel, BorderLayout.NORTH); panel.setLayout(new GridLayout(0, 4, 0, 0)); JPanel panel_8 = new JPanel(); panel_8.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "IPµØÖ·", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); //panel_8.setFont(arg0); panel_8.setFont(new Font("ËÎÌå", Font.PLAIN, 12)); panel.add(panel_8); panel_8.setLayout(new GridLayout(0, 1, 0, 0)); tf_target_addr = new JTextField(); tf_target_addr.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { if(tf_target_addr.getText().trim().length() < 1) { tf_target_addr.setText("127.0.0.1"); } } }); tf_target_addr.setDocument(new LimitedDocument(15, "0123456789.")); tf_target_addr.setText("127.0.0.1"); panel_8.add(tf_target_addr); tf_target_addr.setColumns(10); comboBox = new JComboBox(); comboBox.setModel(new DefaultComboBoxModel(new String[] {"9600", "19200", "38400", "57600", "115200"})); comboBox.setSelectedIndex(4); //panel_8.add(comboBox); JPanel panel_1 = new JPanel(); panel_1.setBorder(new TitledBorder(null, "Slave ID", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel.add(panel_1); cb_commport = new JComboBox(); if(cb_commport.getItemCount() > 0) { cb_commport.setSelectedIndex(0); } panel_1.setLayout(new GridLayout(0, 1, 0, 0)); //slave ID tf_slave_id = new JTextField(); tf_slave_id.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { if(tf_slave_id.getText().trim().length() < 1) { tf_slave_id.setText("127.0.0.1"); } } }); tf_slave_id.setDocument(new LimitedDocument(1, "123456789")); tf_slave_id.setText("2"); panel_1.add(tf_slave_id); tf_slave_id.setColumns(10); btn_renew_commport = new JButton("\u5237\u65B0"); btn_renew_commport.setFont(new Font("ËÎÌå", Font.PLAIN, 12)); btn_renew_commport.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { SPCommFBS9100.searchCommPort(cb_commport); if(cb_commport.getItemCount() > 0) { cb_commport.setSelectedIndex(0); } } }); //panel_1.add(btn_renew_commport); //panel_1.add(cb_commport); JPanel panel_2 = new JPanel(); panel_2.setBorder(new TitledBorder(null, "²Ù×÷", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel.add(panel_2); btn_connet = new JButton("Á¬½Ó"); btn_connet.setFont(new Font("ËÎÌå", Font.PLAIN, 12)); btn_connet.setEnabled(true); btn_connet.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if(cb_commport.getSelectedIndex() < 0) { Toolkit.getDefaultToolkit().beep(); JOptionPane.showMessageDialog(frmSerialport, "ÕÒ²»µ½Èκδ®¿Ú!"); return; } String str = cb_commport.getSelectedItem().toString(); main_TabbedPane_SelIndex = main_TabbedPane.getSelectedIndex(); boolean comm_open_res = true; int bit_rate = Integer.parseInt((String)comboBox.getSelectedItem()); { SerialComm_FBS9100 = new SPCommFBS9100((short) Integer.parseInt(tf_target_addr.getText().trim()), bit_rate); if(true == SerialComm_FBS9100.OpenCommPort(str)) { CommDevType = CommDevType_ZDHJ; Thread spcommThread = new Thread(SerialComm_FBS9100); spcommThread.start(); } else { comm_open_res = false; } } if(true == comm_open_res) { main_TabbedPane.setEnabled(false); tf_target_addr.setEditable(false); btn_renew_commport.setEnabled(false); cb_commport.setEnabled(false); btn_connet.setEnabled(false); btn_break.setEnabled(true); btn_zdhj_restest_discharge.setEnabled(true); btn_zdhj_restest_lubo.setEnabled(true); btn_zdhj_restest_auto.setEnabled(true); btn_zdhj_param_read.setEnabled(true); btn_zdhj_param_write.setEnabled(true); btn_zdhj_new_savefile.setEnabled(true); btn_zdhj_start_record.setEnabled(true); btn_zdhj_stop_record.setEnabled(true); mMainFormTimer.start(); } else { Toolkit.getDefaultToolkit().beep(); JOptionPane.showMessageDialog(frmSerialport, str + "²»´æÔÚ»ò±»ÆäËûÓ¦ÓóÌÐòÕ¼ÓÃ!"); } } }); panel_2.setLayout(new GridLayout(0, 2, 0, 0)); panel_2.add(btn_connet); btn_break = new JButton("\u65AD\u5F00"); btn_break.setFont(new Font("ËÎÌå", Font.PLAIN, 12)); panel_2.add(btn_break); btn_break.setEnabled(false); btn_break.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.out.println("¹Ø±Õ´®¿Ú"); mMainFormTimer.stop(); if(null != SerialComm_FBS9100) { SerialComm_FBS9100.CloseCommPort(); } tf_target_addr.setEditable(true); btn_renew_commport.setEnabled(true); cb_commport.setEnabled(true); btn_connet.setEnabled(true); btn_break.setEnabled(false); btn_zdhj_restest_discharge.setEnabled(false); btn_zdhj_restest_lubo.setEnabled(false); btn_zdhj_restest_auto.setEnabled(false); btn_zdhj_param_read.setEnabled(false); btn_zdhj_param_write.setEnabled(false); btn_zdhj_new_savefile.setEnabled(false); btn_zdhj_start_record.setEnabled(false); btn_zdhj_stop_record.setEnabled(false); main_TabbedPane.setEnabled(true); } }); JPanel panel_9 = new JPanel(); panel_9.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "\u901A\u4FE1\u8BA1\u6570(TX / RX)", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); panel.add(panel_9); panel_9.setLayout(new GridLayout(0, 2, 0, 0)); tf_txcnt = new JTextField(); panel_9.add(tf_txcnt); tf_txcnt.setColumns(10); tf_rxcnt = new JTextField(); panel_9.add(tf_rxcnt); tf_rxcnt.setColumns(10); tab_panel_zdhj = new JTabbedPane(JTabbedPane.TOP); main_TabbedPane = new JTabbedPane(JTabbedPane.TOP); main_TabbedPane.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent arg0) { /* if(null != SerialComm_Mon) { SerialComm_Mon.setNormalCommState(1!=main_TabbedPane.getSelectedIndex()); } */ } }); frmSerialport.getContentPane().add(main_TabbedPane, BorderLayout.CENTER); /**************************************************************************/ panel_ZDHJ = new JPanel(); main_TabbedPane.add("MODBUS TCP Ä£¿é", tab_panel_zdhj); tab_panel_zdhj.add("01 Coils(0x)", panel_ZDHJ); panel_ZDHJ.setVisible(false); panel_ZDHJ.setLayout(new BorderLayout(0, 0)); panel_43 = new JPanel(); panel_ZDHJ.add(panel_43); panel_43.setLayout(new GridLayout(2, 1, 4, 0)); panel_44 = new JPanel(); panel_44.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Êý¾ÝÇøÓò", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); panel_43.add(panel_44); panel_44.setLayout(new BorderLayout(1, 9)); JScrollPane scrollPane_9 = new JScrollPane(); panel_44.add(scrollPane_9); Vector thead_dataRow = new Vector>(); JTable thead_zdhj_data = new JTable(); thead_zdhj_data.setModel(new DefaultTableModel(thead_dataRow, columnVector)); scrollPane_2 = new JScrollPane(); panel_44.add(scrollPane_2); table_zdhj_data = new JTable(); columnVector = new Vector(); columnVector.add("0"); columnVector.add("1"); columnVector.add("2"); columnVector.add("3"); columnVector.add("4"); columnVector.add("5"); columnVector.add("6"); columnVector.add("7"); columnVector.add("8"); columnVector.add("9"); dataRow = new Vector>(); table_zdhj_data.setModel(new DefaultTableModel(dataRow, columnVector)); MouseAdapter m_a = new MouseAdapter() { public void mouseReleased(MouseEvent e) { if(e.getSource() != table_zdhj_data) { return; } /* int selectColumn = m_JTable.columnAtPoint(e.getPoint()); int selectRow = m_JTable.rowAtPoint(e.getPoint()); if (selectColumn == mCheckBoxColnumIndex) { boolean value = (boolean) m_JTable.getValueAt(selectRow, selectColumn); m_UI_Monit.m_MonLineChart.getSeries(selectRow+1).setVisible(!value); } */ } public void mousePressed(MouseEvent evt) { if (evt.getButton() == MouseEvent.BUTTON3) { JPopupMenu popupMenu = new JPopupMenu(); JMenuItem tableItem_export_data = null; tableItem_export_data = new JMenuItem("¸´ÖƵ½¼ôÌù°å"); tableItem_export_data.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { Clipboard clipboard = frmSerialport.getToolkit().getSystemClipboard(); String temp = ""; for(int c=0; c row = new Vector(); row.addElement(String.format("%03d", n+1)); row.addElement(String.format("%1.3f", SerialComm_FBS9100.m_FBS_VCData.vol[n])); row.addElement(String.format("%1.3f", SerialComm_FBS9100.m_FBS_ResCapData.m_DATA[n])); row.addElement(String.format("%1.1f", 0.0)); dataRow.add(row); } } else { for(int n=0; n 10) { SerialComm_FBS9100.m_TaskList.position(0); byte[] str_b = new byte[SerialComm_FBS9100.m_TaskList.limit()]; /*for(int n=0; n 0) { str_b[n] = tmp; } else { break; } } ta_task_list.setText(new String(str_b, "GB2312")); } } } catch (Exception e) { JOptionPane.showMessageDialog(null, "updateData():" + e.getMessage()); } } }