[Ttssh2-commit] [7825] シリアル接続のハードウェアフロー制御に DSR/DTR を追加した。

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2019年 6月 30日 (日) 19:34:03 JST


Revision: 7825
          https://osdn.net/projects/ttssh2/scm/svn/commits/7825
Author:   yutakapon
Date:     2019-06-30 19:34:03 +0900 (Sun, 30 Jun 2019)
Log Message:
-----------
シリアル接続のハードウェアフロー制御に DSR/DTR を追加した。
4つの選択項目が一度に表示されるように、シリアルポート設定ダイアログのコンボボックスの高さを調整した。
#39365

Ticket Links:
------------
    https://osdn.net/projects/ttssh2/tracker/detail/39365

Modified Paths:
--------------
    branches/flowctrl_dsrdtr/teraterm/common/tttypes.h
    branches/flowctrl_dsrdtr/teraterm/teraterm/commlib.c
    branches/flowctrl_dsrdtr/teraterm/teraterm/ttdde.c
    branches/flowctrl_dsrdtr/teraterm/ttpdlg/ttdlg.c
    branches/flowctrl_dsrdtr/teraterm/ttpdlg/ttpdlg.rc
    branches/flowctrl_dsrdtr/teraterm/ttpset/ttset.c

-------------- next part --------------
Modified: branches/flowctrl_dsrdtr/teraterm/common/tttypes.h
===================================================================
--- branches/flowctrl_dsrdtr/teraterm/common/tttypes.h	2019-06-30 08:39:49 UTC (rev 7824)
+++ branches/flowctrl_dsrdtr/teraterm/common/tttypes.h	2019-06-30 10:34:03 UTC (rev 7825)
@@ -802,9 +802,11 @@
 #define IdStopBit2  3
   /* Flow control ID */
 #define IdFlowX 1
-#define IdFlowHard 2
+#define IdFlowHard 2    // RTS/CTS(hardware flow)
 #define IdFlowNone 3
+#define IdFlowHardDsrDtr 4  // DSR/DTR(hardware flow)
 
+
 /* GetHostName dialog record */
 typedef struct {
 	PCHAR SetupFN; // setup file name

Modified: branches/flowctrl_dsrdtr/teraterm/teraterm/commlib.c
===================================================================
--- branches/flowctrl_dsrdtr/teraterm/teraterm/commlib.c	2019-06-30 08:39:49 UTC (rev 7824)
+++ branches/flowctrl_dsrdtr/teraterm/teraterm/commlib.c	2019-06-30 10:34:03 UTC (rev 7825)
@@ -224,10 +224,14 @@
 			dcb.XonChar = XON;
 			dcb.XoffChar = XOFF;
 			break;
-		case IdFlowHard:
+		case IdFlowHard:  // RTS/CTS
 			dcb.fOutxCtsFlow = TRUE;
 			dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
 			break;
+		case IdFlowHardDsrDtr:  // DSR/DTR
+			dcb.fOutxDsrFlow = TRUE;
+			dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;
+			break;
 	}
 
 	switch (ts->DataBit) {
@@ -1182,7 +1186,8 @@
 	}
 	if ((cv->PortType==IdTCPIP) ||
 	    (cv->PortType==IdSerial) &&
-	    (ts->Flow!=IdFlowHard)) {
+			(!(ts->Flow == IdFlowHard || ts->Flow == IdFlowHardDsrDtr)) 
+			) { 
 		if (Lock) {
 			b = XOFF;
 		}
@@ -1192,12 +1197,17 @@
 		CommBinaryOut(cv,&b,1);
 	}
 	else if ((cv->PortType==IdSerial) &&
-	         (ts->Flow==IdFlowHard)) {
+	         (ts->Flow == IdFlowHard || ts->Flow == IdFlowHardDsrDtr)) {
+		// \x83n\x81[\x83h\x83E\x83F\x83A\x83t\x83\x8D\x81[\x82̐ݒ\xE8\x82ɉ\x9E\x82\xB6\x82Ċg\x92\xA3\x8B@\x94\\x83R\x81[\x83h\x82\xF0\x90؂\xE8\x91ւ\xA6\x82\xE9\x81B
 		if (Lock) {
 			Func = CLRRTS;
+			if (ts->Flow == IdFlowHardDsrDtr)
+				Func = CLRDTR;
 		}
 		else {
 			Func = SETRTS;
+			if (ts->Flow == IdFlowHardDsrDtr)
+				Func = SETDTR;
 		}
 		EscapeCommFunction(cv->ComID,Func);
 	}

Modified: branches/flowctrl_dsrdtr/teraterm/teraterm/ttdde.c
===================================================================
--- branches/flowctrl_dsrdtr/teraterm/teraterm/ttdde.c	2019-06-30 08:39:49 UTC (rev 7824)
+++ branches/flowctrl_dsrdtr/teraterm/teraterm/ttdde.c	2019-06-30 10:34:03 UTC (rev 7825)
@@ -884,9 +884,10 @@
 
 		val = atoi(ParamFileName);
 		switch(val) {
-			case 1:
-			case 2:
-			case 3:
+			case 1: // Xon/Xoff 
+			case 2: // RTS/CTS
+			case 3: // none
+			case 4: // DSR/DTR
 				ts.Flow = val;
 				break;
 		}

Modified: branches/flowctrl_dsrdtr/teraterm/ttpdlg/ttdlg.c
===================================================================
--- branches/flowctrl_dsrdtr/teraterm/ttpdlg/ttdlg.c	2019-06-30 08:39:49 UTC (rev 7824)
+++ branches/flowctrl_dsrdtr/teraterm/ttpdlg/ttdlg.c	2019-06-30 10:34:03 UTC (rev 7825)
@@ -1101,7 +1101,7 @@
 static PCHAR DataList[] = {"7 bit","8 bit",NULL};
 static PCHAR ParityList[] = {"none", "odd", "even", "mark", "space", NULL};
 static PCHAR StopList[] = {"1 bit", "1.5 bit", "2 bit", NULL};
-static PCHAR FlowList[] = {"Xon/Xoff","hardware","none",NULL};
+static PCHAR FlowList[] = {"Xon/Xoff","RTS/CTS","none", "DSR/DTR", NULL};
 
 static INT_PTR CALLBACK SerialDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {

Modified: branches/flowctrl_dsrdtr/teraterm/ttpdlg/ttpdlg.rc
===================================================================
--- branches/flowctrl_dsrdtr/teraterm/ttpdlg/ttpdlg.rc	2019-06-30 08:39:49 UTC (rev 7824)
+++ branches/flowctrl_dsrdtr/teraterm/ttpdlg/ttpdlg.rc	2019-06-30 10:34:03 UTC (rev 7825)
@@ -141,7 +141,7 @@
     CONTROL         "&Stop bits:",IDC_SERIALSTOP_LABEL,"Static",SS_LEFTNOWORDWRAP,15,69,54,8
     COMBOBOX        IDC_SERIALSTOP,75,67,48,40,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
     CONTROL         "&Flow control:",IDC_SERIALFLOW_LABEL,"Static",SS_LEFTNOWORDWRAP,15,84,54,8
-    COMBOBOX        IDC_SERIALFLOW,75,82,48,40,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_SERIALFLOW,75,82,48,53,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
     GROUPBOX        "Transmit delay",IDC_SERIALDELAY,19,104,152,32
     LTEXT           "msec/&char",IDC_SERIALDELAYCHAR_LABEL,53,118,42,10
     EDITTEXT        IDC_SERIALDELAYCHAR,29,116,20,12,ES_AUTOHSCROLL | ES_NUMBER

Modified: branches/flowctrl_dsrdtr/teraterm/ttpset/ttset.c
===================================================================
--- branches/flowctrl_dsrdtr/teraterm/ttpset/ttset.c	2019-06-30 08:39:49 UTC (rev 7824)
+++ branches/flowctrl_dsrdtr/teraterm/ttpset/ttset.c	2019-06-30 10:34:03 UTC (rev 7825)
@@ -1070,6 +1070,10 @@
 		ts->Flow = IdFlowX;
 	else if (_stricmp(Temp, "hard") == 0)
 		ts->Flow = IdFlowHard;
+	else if (_stricmp(Temp, "rtscts") == 0)  // hard\x82\xC6rtscts\x82͓\xAF\x82\xB6\x88Ӗ\xA1
+		ts->Flow = IdFlowHard;
+	else if (_stricmp(Temp, "dsrdtr") == 0)
+		ts->Flow = IdFlowHardDsrDtr;
 	else
 		ts->Flow = IdFlowNone;
 
@@ -2636,6 +2640,9 @@
 	case IdFlowHard:
 		strncpy_s(Temp, sizeof(Temp), "hard", _TRUNCATE);
 		break;
+	case IdFlowHardDsrDtr:
+		strncpy_s(Temp, sizeof(Temp), "dsrdtr", _TRUNCATE);
+		break;
 	default:
 		strncpy_s(Temp, sizeof(Temp), "none", _TRUNCATE);
 	}


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