diff --git a/src/main/java/info/istlab/IoTP/MqttWindow.java b/src/main/java/info/istlab/IoTP/MqttWindow.java index cea5fe6..65a33fa 100644 --- a/src/main/java/info/istlab/IoTP/MqttWindow.java +++ b/src/main/java/info/istlab/IoTP/MqttWindow.java @@ -57,10 +57,14 @@ super("MQTT TestApp"); brokerjtf = new JTextField("192.168.11.11", 30); + brokerjtf.addKeyListener(this); // brokerjtf = new JTextField("10.104.91.19", 30); brokerportjtf = new JTextField("1883", 10); + brokerportjtf.addKeyListener(this); topicjtf = new JTextField("+"); + topicjtf.addKeyListener(this); connectB = new JButton("Connect"); + connectB.addKeyListener(this); connectB.addActionListener(e -> connect(e)); JPanel settingP = new JPanel(); @@ -78,6 +82,7 @@ settingP.add(v02p); jtf = new JTextField("(ここをクリックして、入力して、Enterを押すと、publishします)"); + jtf.addKeyListener(this); jtf.setForeground(Color.GRAY); jtf.addFocusListener(new FocusListener() { @Override @@ -101,6 +106,7 @@ getContentPane().add(settingP, BorderLayout.NORTH); jta = new JTextArea(); + jta.addKeyListener(this); jta.setBackground(Color.lightGray); getContentPane().add(new JScrollPane(jta), BorderLayout.CENTER); diff --git a/src/main/java/info/istlab/IoTP/ScriptRunner.java b/src/main/java/info/istlab/IoTP/ScriptRunner.java index 7f76250..0f4b59e 100644 --- a/src/main/java/info/istlab/IoTP/ScriptRunner.java +++ b/src/main/java/info/istlab/IoTP/ScriptRunner.java @@ -60,14 +60,15 @@ comlist.add(srcfile); } - // シリアルコンソールをすべて閉じる + // 現在選択しているシリアルコンソールを閉じる for(String key : SerialWindow.hash.keySet()){ + if (!key.equals(App.serialName)) continue; // 選択していないものだったら閉じない。 SerialWindow swin = SerialWindow.hash.get(key); if (swin != null) { swin.closeSerialPort(null); } } - // 既存のコンソールをすべて閉じる + // 既存のコンパイルコンソールをすべて閉じる while (!JTAConsole.winStack.isEmpty()){ JTAConsole jcon = JTAConsole.winStack.pop(); jcon.closeWin(); diff --git a/src/main/java/info/istlab/IoTP/SerialWindow.java b/src/main/java/info/istlab/IoTP/SerialWindow.java index 5c3e796..1415e46 100644 --- a/src/main/java/info/istlab/IoTP/SerialWindow.java +++ b/src/main/java/info/istlab/IoTP/SerialWindow.java @@ -13,7 +13,6 @@ import java.awt.event.KeyListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; -import java.util.ArrayList; import java.util.Hashtable; import javax.swing.JFrame; @@ -34,6 +33,8 @@ JTextArea jta; Thread thread; + static SerialChecker serialChecker; + public static Hashtable hash; static { hash = new Hashtable(); @@ -43,47 +44,70 @@ * チェックして、App.serialName にポート名をセットするだけ。 */ public static void check(boolean popup_if_zero) { - SerialPort[] ports = SerialPort.getCommPorts(); - ArrayList splist_valid = new ArrayList(); - for (SerialPort sp : ports) { - String name = sp.getSystemPortName(); - if (name.startsWith("cu.usbserial") || name.startsWith("COM")) { - splist_valid.add(sp); - } + if (App.serialName == null) { + if (serialChecker == null) + serialChecker = Launcher.theapp.serialChecker; + serialChecker.updateSerialNames(); } - if (splist_valid.size() == 1) { - SerialPort sp = splist_valid.get(0); - App.serialName = sp.getSystemPortName(); - - } else if (splist_valid.size() == 0) { + if (serialChecker.validSerialNames.size() == 0) { if (popup_if_zero) JOptionPane.showMessageDialog(Launcher.theapp, "No available serial ports."); - } else { - if (App.serialName == null) SerialSelector.show(splist_valid.toArray(new SerialPort[] {})); } + // SerialPort[] ports = SerialPort.getCommPorts(); + // ArrayList splist_valid = new ArrayList(); + // for (SerialPort sp : ports) { + // String name = sp.getSystemPortName(); + // if (name.startsWith("cu.usbserial") || name.startsWith("COM")) { + // splist_valid.add(sp); + // } + // } + // if (splist_valid.size() == 1) { + // SerialPort sp = splist_valid.get(0); + // App.serialName = sp.getSystemPortName(); + + // } else if (splist_valid.size() == 0) { + // if (popup_if_zero) + // JOptionPane.showMessageDialog(Launcher.theapp, "No available serial ports."); + // } else { + // if (App.serialName == null) SerialSelector.show(splist_valid.toArray(new + // SerialPort[] {})); + // } } public static void invoke(boolean popup_if_zero) { - SerialPort[] ports = SerialPort.getCommPorts(); - ArrayList splist_valid = new ArrayList(); - for (SerialPort sp : ports) { - String name = sp.getSystemPortName(); - if (name.startsWith("cu.usbserial") || name.startsWith("COM")) { - splist_valid.add(sp); - } + if (serialChecker == null) serialChecker = Launcher.theapp.serialChecker; + serialChecker.updateSerialNames(); + if (serialChecker.validSerialNames.size() == 0) { + if (popup_if_zero) + JOptionPane.showMessageDialog(Launcher.theapp, "No available serial ports."); } - if (splist_valid.size() == 1) { - SerialPort sp = splist_valid.get(0); - new SerialWindow(sp); - } else if (splist_valid.size() == 0) { - JOptionPane.showMessageDialog(Launcher.theapp, "No available serial ports."); + SerialWindow swin = hash.get(App.serialName); + if (swin == null){ + SerialPort sp = serialChecker.portHash.get(App.serialName); + swin = new SerialWindow(sp); } else { - if (App.serialName == null) SerialSelector.show(splist_valid.toArray(new SerialPort[] {})); - SerialPort sp = Launcher.theapp.serialChecker.portHash.get(App.serialName); - new SerialWindow(sp); + swin.setVisible(true); } + // SerialPort[] ports = SerialPort.getCommPorts(); + // ArrayList splist_valid = new ArrayList(); + // for (SerialPort sp : ports) { + // String name = sp.getSystemPortName(); + // if (name.startsWith("cu.usbserial") || name.startsWith("COM")) { + // splist_valid.add(sp); + // } + // } + // if (splist_valid.size() == 1) { + // SerialPort sp = splist_valid.get(0); + // new SerialWindow(sp); + // } else if (splist_valid.size() == 0) { + // JOptionPane.showMessageDialog(Launcher.theapp, "No available serial ports."); + // } else { + // if (App.serialName == null) SerialSelector.show(splist_valid.toArray(new SerialPort[] {})); + // SerialPort sp = Launcher.theapp.serialChecker.portHash.get(App.serialName); + // new SerialWindow(sp); + // } } - + public SerialWindow(SerialPort _sp) { super("SerialMonitor " + _sp.getSystemPortName() + " (ボーレート:115200)"); sp = _sp; @@ -91,7 +115,8 @@ sp.addDataListener(this); System.out.println(sp.getSystemPortName()); if (!sp.openPort()) { - JOptionPane.showMessageDialog(Launcher.theapp, "他のウィンドウまたはプログラムがシリアルポート " + sp.getSystemPortName() + " を使用しています。"); + JOptionPane.showMessageDialog(Launcher.theapp, + "他のウィンドウまたはプログラムがシリアルポート " + sp.getSystemPortName() + " を使用しています。"); System.out.println("Unable to open the port."); return; }