[Ttssh2-commit] [6347] シリアルポートの切断・接続処理の修正

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2016年 3月 15日 (火) 22:43:16 JST


Revision: 6347
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6347
Author:   salarm
Date:     2016-03-15 22:43:15 +0900 (Tue, 15 Mar 2016)
Log Message:
-----------
シリアルポートの切断・接続処理の修正
・/C=でシリアルポートを指定して起動する場合にポートがなければポートの接続を待つようにした。
・一部の機器でUSBシリアルポートの接続・切断が検出できない不具合を修正した。

Modified Paths:
--------------
    trunk/doc/ja/html/about/history.html
    trunk/teraterm/teraterm/vtwin.cpp

-------------- next part --------------
Modified: trunk/doc/ja/html/about/history.html
===================================================================
--- trunk/doc/ja/html/about/history.html	2016-03-13 11:06:08 UTC (rev 6346)
+++ trunk/doc/ja/html/about/history.html	2016-03-15 13:43:15 UTC (rev 6347)
@@ -39,10 +39,21 @@
       <li></li>
     </ul>
   </li -->
+  <li>\x95ύX
+    <ul>
+      <li>/C=\x82ŃV\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x82\xF0\x8Ew\x92肵\x82ċN\x93\xAE\x82\xB7\x82\xE9\x8Fꍇ\x82Ƀ|\x81[\x83g\x82\xAA\x82Ȃ\xAF\x82\xEA\x82΃|\x81[\x83g\x82̐ڑ\xB1\x82\xF0\x91҂‚悤\x82ɂ\xB5\x82\xBD\x81B
+        <ul>
+          <li><a href="../setup/teraterm-com.html#AutoComPortReconnect">AutoComPortReconnect</a>=on\x82̎\x9E\x82ɗL\x8C\xF8</li>
+          <li>\x90ڑ\xB1\x82\xF0\x91҂ꍇ\x81A\x90ڑ\xB1\x83G\x83\x89\x81[\x83\x81\x83b\x83Z\x81[\x83W\x82͕\\x8E\xA6\x82\xB3\x82\xEA\x82܂\xB9\x82\xF1\x81B</li>
+        </ul>
+      </li>
+    </ul>
+  </li>
 
   <li>\x83o\x83O\x8FC\x90\xB3
     <ul>
       <li>\x83}\x83N\x83\x8D\x83R\x83}\x83\x93\x83h\x82\xCC 1 \x8Ds\x8C`\x8E\xAE\x82\xCC <a href="../macro/command/ifthenelseif.html">if</a> \x95\xB6\x82ŁA\x83p\x83\x89\x83\x81\x81[\x83^\x82̖\xB3\x82\xA2\x83}\x83N\x83\x8D\x83R\x83}\x83\x93\x83h\x82\xAA\x83G\x83\x89\x81[\x82ƂȂ\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li>
+      <li>\x88ꕔ\x82̋@\x8A\xED\x82\xC5USB\x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x82̐ڑ\xB1\x81E\x90ؒf\x82\xAA\x8C\x9F\x8Fo\x82ł\xAB\x82Ȃ\xA2\x95s\x8B\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li>
     </ul>
   </li>
 

Modified: trunk/teraterm/teraterm/vtwin.cpp
===================================================================
--- trunk/teraterm/teraterm/vtwin.cpp	2016-03-13 11:06:08 UTC (rev 6346)
+++ trunk/teraterm/teraterm/vtwin.cpp	2016-03-15 13:43:15 UTC (rev 6347)
@@ -351,6 +351,11 @@
 	pUnregisterDeviceNotification(hDevNotify);
 }
 
+void SetAutoConnectPort(int port)
+{
+	AutoDisconnectedPort = port;
+}
+
 //
 // \x97\xE1\x8AO\x83n\x83\x93\x83h\x83\x89\x82̃t\x83b\x83N\x81i\x83X\x83^\x83b\x83N\x83g\x83\x8C\x81[\x83X\x82̃_\x83\x93\x83v\x81j
 //
@@ -3110,25 +3115,29 @@
 
 BOOL CVTWindow::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
 {
-	PDEV_BROADCAST_PORT pDevPort;
+	PDEV_BROADCAST_HDR pDevHdr;
 #ifdef DEBUG
 	char port_name[8]; /* COMxxxx + NULL */
 #endif
 
-	pDevPort = (PDEV_BROADCAST_PORT)dwData;
+	pDevHdr = (PDEV_BROADCAST_HDR)dwData;
 
 	switch (nEventType) {
 	case DBT_DEVICEARRIVAL:
 #ifdef DEBUG
-		OutputDebugPrintf("DBT_DEVICEARRIVAL devicetype=%d PortType=%d AutoDisconnectedPort=%d\n", pDevPort->dbcp_devicetype, ts.PortType, AutoDisconnectedPort);
+		OutputDebugPrintf("DBT_DEVICEARRIVAL devicetype=%d PortType=%d AutoDisconnectedPort=%d\n", pDevHdr->dbch_devicetype, ts.PortType, AutoDisconnectedPort);
 #endif
-		if (pDevPort->dbcp_devicetype == DBT_DEVTYP_PORT &&
+		if ((pDevHdr->dbch_devicetype == DBT_DEVTYP_PORT || pDevHdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) &&
 		    ts.PortType == IdSerial &&
 		    ts.AutoComPortReconnect &&
 		    AutoDisconnectedPort == ts.ComPort) {
 #ifdef DEBUG
-			strncpy_s(port_name, sizeof(port_name), pDevPort->dbcp_name, _TRUNCATE);
-			OutputDebugPrintf("%s\n", port_name);
+			if (pDevHdr->dbch_devicetype == DBT_DEVTYP_PORT) {
+				PDEV_BROADCAST_PORT pDevPort;
+				pDevPort = (PDEV_BROADCAST_PORT)pDevHdr;
+				strncpy_s(port_name, sizeof(port_name), pDevPort->dbcp_name, _TRUNCATE);
+				OutputDebugPrintf("%s\n", port_name);
+			}
 #endif
 			if (!cv.Open) {
 				/* Tera Term \x96\xA2\x90ڑ\xB1 */
@@ -3144,15 +3153,19 @@
 		break;
 	case DBT_DEVICEREMOVECOMPLETE:
 #ifdef DEBUG
-		OutputDebugPrintf("DBT_DEVICEREMOVECOMPLETE devicetype=%d PortType=%d AutoDisconnectedPort=%d\n", pDevPort->dbcp_devicetype, ts.PortType, AutoDisconnectedPort);
+		OutputDebugPrintf("DBT_DEVICEREMOVECOMPLETE devicetype=%d PortType=%d AutoDisconnectedPort=%d\n", pDevHdr->dbch_devicetype, ts.PortType, AutoDisconnectedPort);
 #endif
-		if (pDevPort->dbcp_devicetype == DBT_DEVTYP_PORT &&
+		if ((pDevHdr->dbch_devicetype == DBT_DEVTYP_PORT || pDevHdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) &&
 		    ts.PortType == IdSerial &&
 		    ts.AutoComPortReconnect &&
 		    AutoDisconnectedPort == -1) {
 #ifdef DEBUG
-			strncpy_s(port_name, sizeof(port_name), pDevPort->dbcp_name, _TRUNCATE);
-			OutputDebugPrintf("%s\n", port_name);
+			if (pDevHdr->dbch_devicetype == DBT_DEVTYP_PORT) {
+				PDEV_BROADCAST_PORT pDevPort;
+				pDevPort = (PDEV_BROADCAST_PORT)pDevHdr;
+				strncpy_s(port_name, sizeof(port_name), pDevPort->dbcp_name, _TRUNCATE);
+				OutputDebugPrintf("%s\n", port_name);
+			}
 #endif
 			if (cv.Open) {
 				/* Tera Term \x90ڑ\xB1\x92\x86 */
@@ -3712,6 +3725,12 @@
 	else {
 		Connecting = TRUE;
 		ChangeTitle();
+		if (ts.AutoComPortReconnect && ts.PortType == IdSerial) {
+			if (CheckComPort(ts.ComPort) == 0) {
+				SetAutoConnectPort(ts.ComPort);
+				return 0;
+			}
+		}
 		CommOpen(HVTWin,&ts,&cv);
 	}
 	return 0;



Ttssh2-commit メーリングリストの案内
Back to archive index