diff --git a/src/main/java/info/istlab/IoTP/ScriptRunner.java b/src/main/java/info/istlab/IoTP/ScriptRunner.java index 0f4b59e..8b0e684 100644 --- a/src/main/java/info/istlab/IoTP/ScriptRunner.java +++ b/src/main/java/info/istlab/IoTP/ScriptRunner.java @@ -118,7 +118,7 @@ thread = null; // runB.setText("Run"); if (scriptfile_base.startsWith("Upload")){ - SerialWindow.disposeAll(); + SerialWindow.disposeByName(App.serialName); SerialWindow.invoke(false); // no serial connectionsのとき、メッセージ表示しない } if (App.isWindows) { diff --git a/src/main/java/info/istlab/IoTP/SerialChecker.java b/src/main/java/info/istlab/IoTP/SerialChecker.java index fd663fd..8f64154 100644 --- a/src/main/java/info/istlab/IoTP/SerialChecker.java +++ b/src/main/java/info/istlab/IoTP/SerialChecker.java @@ -49,7 +49,17 @@ launcher.updateSerialMenu(validSerialNames); if (last_connections.length() > currentString.length()){ - SerialWindow.closeAll("切断されました"); + //どれが減ったか調べて、なくなったものを切断する + String sep[] = last_connections.split(" "); + Hashtable currentHash = new Hashtable(); + for(String t: validSerialNames) currentHash.put(t,t); + for(String s: sep){ //過去の接続リスト + if (currentHash.get(s) == null){ + SerialWindow deadWin = SerialWindow.hash.get(s); + deadWin.disposeWin(); + } + } + // SerialWindow.closeAll("切断されました"); } else { String key = currentString; if (SerialWindow.hash.get(key)!= null){ diff --git a/src/main/java/info/istlab/IoTP/SerialSelector.java b/src/main/java/info/istlab/IoTP/SerialSelector.java index 90a3176..84e7196 100644 --- a/src/main/java/info/istlab/IoTP/SerialSelector.java +++ b/src/main/java/info/istlab/IoTP/SerialSelector.java @@ -1,16 +1,6 @@ package info.istlab.IoTP; -import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JPanel; - -import com.fazecast.jSerialComm.SerialPort; - +/* public class SerialSelector extends JPanel implements ActionListener { SerialPort[] options; public static JFrame frame; @@ -50,3 +40,4 @@ } } +*/ \ No newline at end of file diff --git a/src/main/java/info/istlab/IoTP/SerialWindow.java b/src/main/java/info/istlab/IoTP/SerialWindow.java index 1415e46..bc6bee3 100644 --- a/src/main/java/info/istlab/IoTP/SerialWindow.java +++ b/src/main/java/info/istlab/IoTP/SerialWindow.java @@ -75,14 +75,16 @@ } public static void invoke(boolean popup_if_zero) { - if (serialChecker == null) serialChecker = Launcher.theapp.serialChecker; + 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."); + return; } SerialWindow swin = hash.get(App.serialName); - if (swin == null){ + if (swin == null) { SerialPort sp = serialChecker.portHash.get(App.serialName); swin = new SerialWindow(sp); } else { @@ -91,23 +93,24 @@ // 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); - // } + // 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); + // SerialPort sp = splist_valid.get(0); + // new SerialWindow(sp); // } else if (splist_valid.size() == 0) { - // JOptionPane.showMessageDialog(Launcher.theapp, "No available serial ports."); + // 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); + // 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; @@ -193,7 +196,8 @@ } else if (evt == SerialPort.LISTENING_EVENT_PORT_DISCONNECTED) { System.out.println("Port disconnected."); // System.out.println(event.toString()); - SerialWindow.closeAll("切断されました"); + closeSerialPort("切断されました"); + // SerialWindow.closeAll("切断されました"); } } catch (Exception ex) { @@ -308,17 +312,28 @@ SerialWindow.hash.clear(); } - public static void closeAll(String mes) { + public static void disposeByName(String serialName) { for (String key : SerialWindow.hash.keySet()) { + if (!key.equals(serialName)) + continue; SerialWindow swin = SerialWindow.hash.get(key); if (swin != null) { - if (mes == null) - mes = "Uploadに備え、切断しました"; - swin.closeSerialPort(mes); + swin.disposeWin(); } } } + // public static void closeAll(String mes) { + // for (String key : SerialWindow.hash.keySet()) { + // SerialWindow swin = SerialWindow.hash.get(key); + // if (swin != null) { + // if (mes == null) + // mes = "Uploadに備え、切断しました"; + // swin.closeSerialPort(mes); + // } + // } + // } + /** * シリアルポート接続を閉じる *