[Ttssh2-commit] [8204] コマンドラインオプション /CDATABIT=, /CPARITY=, /CSTOPBIT=, /CFLOWCTRL= の指定方法を

Zurück zum Archiv-Index
scmno****@osdn***** scmno****@osdn*****
2019年 9月 20日 (金) 22:47:26 JST


Revision: 8204
          https://osdn.net/projects/ttssh2/scm/svn/commits/8204
Author:   yutakapon
Date:     2019-09-20 22:47:26 +0900 (Fri, 20 Sep 2019)
Log Message:
-----------
コマンドラインオプション /CDATABIT=, /CPARITY=, /CSTOPBIT=, /CFLOWCTRL= の指定方法を
teraterm.ini と合わせるようにした。

Modified Paths:
--------------
    branches/serial_port_improved/doc/en/html/commandline/teraterm.html
    branches/serial_port_improved/doc/ja/html/commandline/teraterm.html
    branches/serial_port_improved/teraterm/common/ttlib.h
    branches/serial_port_improved/teraterm/teraterm/ttsetup.h
    branches/serial_port_improved/teraterm/teraterm/vtwin.cpp
    branches/serial_port_improved/teraterm/ttpset/ttpset.def
    branches/serial_port_improved/teraterm/ttpset/ttset.c

-------------- next part --------------
Modified: branches/serial_port_improved/doc/en/html/commandline/teraterm.html
===================================================================
--- branches/serial_port_improved/doc/en/html/commandline/teraterm.html	2019-09-20 11:09:12 UTC (rev 8203)
+++ branches/serial_port_improved/doc/en/html/commandline/teraterm.html	2019-09-20 13:47:26 UTC (rev 8204)
@@ -79,8 +79,8 @@
   <dt id="cdatabit">/CDATABIT=<value></dt>
   <dd>Data bit of serial port
       <ul>
-        <li><span class="syntax">/CDATABIT=1</span> 7bit</li>
-        <li><span class="syntax">/CDATABIT=2</span> 8bit</li>
+        <li><span class="syntax">/CDATABIT=7</span> 7bit</li>
+        <li><span class="syntax">/CDATABIT=8</span> 8bit</li>
       </ul>
       </dd>
 
@@ -87,11 +87,11 @@
   <dt id="cparity">/CPARITY=<value></dt>
   <dd>Parity of serial port
       <ul>
-        <li><span class="syntax">/CPARITY=1</span> none</li>
-        <li><span class="syntax">/CPARITY=2</span> odd</li>
-        <li><span class="syntax">/CPARITY=3</span> even</li>
-        <li><span class="syntax">/CPARITY=4</span> mark</li>
-        <li><span class="syntax">/CPARITY=5</span> space</li>
+        <li><span class="syntax">/CPARITY=none</span> none</li>
+        <li><span class="syntax">/CPARITY=odd</span> odd</li>
+        <li><span class="syntax">/CPARITY=even</span> even</li>
+        <li><span class="syntax">/CPARITY=mark</span> mark</li>
+        <li><span class="syntax">/CPARITY=space</span> space</li>
       </ul>
       </dd>
 
@@ -99,8 +99,8 @@
   <dd>Stop bit of serial port
       <ul>
         <li><span class="syntax">/CSTOPBIT=1</span> 1bit</li>
-        <li><span class="syntax">/CSTOPBIT=2</span> 1.5bit</li>
-        <li><span class="syntax">/CSTOPBIT=3</span> 2bit</li>
+        <li><span class="syntax">/CSTOPBIT=1.5</span> 1.5bit</li>
+        <li><span class="syntax">/CSTOPBIT=2</span> 2bit</li>
       </ul>
       </dd>
 
@@ -107,10 +107,11 @@
   <dt id="cflowctrl">/CFLOWCTRL=<value></dt>
   <dd>Flow control of serial port
       <ul>
-        <li><span class="syntax">/CFLOWCTRL=1</span> Xon/Xoff</li>
-        <li><span class="syntax">/CFLOWCTRL=2</span> RTS/CTS</li>
-        <li><span class="syntax">/CFLOWCTRL=3</span> none</li>
-        <li><span class="syntax">/CFLOWCTRL=4</span> DSR/DTR</li>
+        <li><span class="syntax">/CFLOWCTRL=x</span> Xon/Xoff</li>
+        <li><span class="syntax">/CFLOWCTRL=hard</span> RTS/CTS</li>
+        <li><span class="syntax">/CFLOWCTRL=rtscts</span> RTS/CTS</li>
+        <li><span class="syntax">/CFLOWCTRL=none</span> none</li>
+        <li><span class="syntax">/CFLOWCTRL=dsrdtr</span> DSR/DTR</li>
       </ul>
       </dd>
 

Modified: branches/serial_port_improved/doc/ja/html/commandline/teraterm.html
===================================================================
--- branches/serial_port_improved/doc/ja/html/commandline/teraterm.html	2019-09-20 11:09:12 UTC (rev 8203)
+++ branches/serial_port_improved/doc/ja/html/commandline/teraterm.html	2019-09-20 13:47:26 UTC (rev 8204)
@@ -83,8 +83,8 @@
   <dt id="cdatabit">/CDATABIT=<value></dt>
   <dd>\x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x82̃f\x81[\x83^\x83r\x83b\x83g
       <ul>
-        <li><span class="syntax">/CDATABIT=1</span> 7bit</li>
-        <li><span class="syntax">/CDATABIT=2</span> 8bit</li>
+        <li><span class="syntax">/CDATABIT=7</span> 7bit</li>
+        <li><span class="syntax">/CDATABIT=8</span> 8bit</li>
       </ul>
       </dd>
 
@@ -91,11 +91,11 @@
   <dt id="cparity">/CPARITY=<value></dt>
   <dd>\x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x82̃p\x83\x8A\x83e\x83B
       <ul>
-        <li><span class="syntax">/CPARITY=1</span> none</li>
-        <li><span class="syntax">/CPARITY=2</span> odd</li>
-        <li><span class="syntax">/CPARITY=3</span> even</li>
-        <li><span class="syntax">/CPARITY=4</span> mark</li>
-        <li><span class="syntax">/CPARITY=5</span> space</li>
+        <li><span class="syntax">/CPARITY=none</span> none</li>
+        <li><span class="syntax">/CPARITY=odd</span> odd</li>
+        <li><span class="syntax">/CPARITY=even</span> even</li>
+        <li><span class="syntax">/CPARITY=mark</span> mark</li>
+        <li><span class="syntax">/CPARITY=space</span> space</li>
       </ul>
       </dd>
 
@@ -103,8 +103,8 @@
   <dd>\x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x82̃X\x83g\x83b\x83v\x83r\x83b\x83g
       <ul>
         <li><span class="syntax">/CSTOPBIT=1</span> 1bit</li>
-        <li><span class="syntax">/CSTOPBIT=2</span> 1.5bit</li>
-        <li><span class="syntax">/CSTOPBIT=3</span> 2bit</li>
+        <li><span class="syntax">/CSTOPBIT=1.5</span> 1.5bit</li>
+        <li><span class="syntax">/CSTOPBIT=2</span> 2bit</li>
       </ul>
       </dd>
 
@@ -111,10 +111,11 @@
   <dt id="cflowctrl">/CFLOWCTRL=<value></dt>
   <dd>\x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x82̃t\x83\x8D\x81[\x90\xA7\x8C\xE4
       <ul>
-        <li><span class="syntax">/CFLOWCTRL=1</span> Xon/Xoff</li>
-        <li><span class="syntax">/CFLOWCTRL=2</span> RTS/CTS</li>
-        <li><span class="syntax">/CFLOWCTRL=3</span> none</li>
-        <li><span class="syntax">/CFLOWCTRL=4</span> DSR/DTR</li>
+        <li><span class="syntax">/CFLOWCTRL=x</span> Xon/Xoff</li>
+        <li><span class="syntax">/CFLOWCTRL=hard</span> RTS/CTS</li>
+        <li><span class="syntax">/CFLOWCTRL=rtscts</span> RTS/CTS</li>
+        <li><span class="syntax">/CFLOWCTRL=none</span> none</li>
+        <li><span class="syntax">/CFLOWCTRL=dsrdtr</span> DSR/DTR</li>
       </ul>
       </dd>
 

Modified: branches/serial_port_improved/teraterm/common/ttlib.h
===================================================================
--- branches/serial_port_improved/teraterm/common/ttlib.h	2019-09-20 11:09:12 UTC (rev 8203)
+++ branches/serial_port_improved/teraterm/common/ttlib.h	2019-09-20 13:47:26 UTC (rev 8204)
@@ -136,6 +136,16 @@
 #define	get_OPENFILENAME_SIZE() get_OPENFILENAME_SIZEA()
 #endif
 
+/*
+ * \x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x8A֘A\x82̐ݒ\xE8\x92\xE8\x8B`
+ */
+enum serial_port_conf {
+	COM_DATABIT, 
+	COM_PARITY,
+	COM_STOPBIT,
+	COM_FLOWCTRL,
+};
+
 #ifdef __cplusplus
 }
 #endif

Modified: branches/serial_port_improved/teraterm/teraterm/ttsetup.h
===================================================================
--- branches/serial_port_improved/teraterm/teraterm/ttsetup.h	2019-09-20 11:09:12 UTC (rev 8203)
+++ branches/serial_port_improved/teraterm/teraterm/ttsetup.h	2019-09-20 13:47:26 UTC (rev 8204)
@@ -27,6 +27,8 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include "ttlib.h"
+
 /* TERATERM.EXE, TTSET interface */
 #ifdef __cplusplus
 extern "C" {
@@ -62,6 +64,8 @@
 BOOL LoadTTSET();
 void FreeTTSET();
 
+int PASCAL SerialPortConfconvertId2Str(enum serial_port_conf type, WORD id, PCHAR str, int strlen);
+
 #ifdef __cplusplus
 }
 #endif

Modified: branches/serial_port_improved/teraterm/teraterm/vtwin.cpp
===================================================================
--- branches/serial_port_improved/teraterm/teraterm/vtwin.cpp	2019-09-20 11:09:12 UTC (rev 8203)
+++ branches/serial_port_improved/teraterm/teraterm/vtwin.cpp	2019-09-20 13:47:26 UTC (rev 8204)
@@ -4672,6 +4672,7 @@
 {
 	BOOL Ok;
 	char Command[MAXPATHLEN + HostNameMaxLength];
+	char Temp[MAX_PATH], Str[MAX_PATH];
 
 	HelpId = HlpSetupSerialPort;
 	if (! LoadTTDLG()) {
@@ -4688,13 +4689,27 @@
 		 * New connection\x82\xA9\x82\xE7\x83V\x83\x8A\x83A\x83\x8B\x90ڑ\xB1\x82\xB7\x82铮\x8D\xEC\x82Ɗ\xEE\x96{\x93I\x82ɓ\xAF\x82\xB6\x93\xAE\x8D\xEC\x82ƂȂ\xE9\x81B
 		 */
 		if ( cv.Ready && (cv.PortType != IdSerial) ) {
-
 			_snprintf_s(Command, sizeof(Command), 
-				"ttermpro /C=%u /SPEED=%lu /CDATABIT=%u /CPARITY=%u "
-				"/CSTOPBIT=%u /CFLOWCTRL=%u /CDELAYPERCHAR=%u /CDELAYPERLINE=%u",
-				ts.ComPort, ts.Baud, ts.DataBit, ts.Parity, 
-				ts.StopBit, ts.Flow, ts.DelayPerChar, ts.DelayPerLine);
+				"ttermpro /C=%u /SPEED=%lu /CDELAYPERCHAR=%u /CDELAYPERLINE=%u ",
+				ts.ComPort, ts.Baud, ts.DelayPerChar, ts.DelayPerLine);
 
+			if (SerialPortConfconvertId2Str(COM_DATABIT, ts.DataBit, Temp, sizeof(Temp))) {
+				_snprintf_s(Str, sizeof(Str), _TRUNCATE, "/CDATABIT=%s ", Temp);
+				strncat_s(Command, sizeof(Command), Str, _TRUNCATE);
+			}
+			if (SerialPortConfconvertId2Str(COM_PARITY, ts.Parity, Temp, sizeof(Temp))) {
+				_snprintf_s(Str, sizeof(Str), _TRUNCATE, "/CPARITY=%s ", Temp);
+				strncat_s(Command, sizeof(Command), Str, _TRUNCATE);
+			}
+			if (SerialPortConfconvertId2Str(COM_STOPBIT, ts.StopBit, Temp, sizeof(Temp))) {
+				_snprintf_s(Str, sizeof(Str), _TRUNCATE, "/CSTOPBIT=%s ", Temp);
+				strncat_s(Command, sizeof(Command), Str, _TRUNCATE);
+			}
+			if (SerialPortConfconvertId2Str(COM_FLOWCTRL, ts.Flow, Temp, sizeof(Temp))) {
+				_snprintf_s(Str, sizeof(Str), _TRUNCATE, "/CFLOWCTRL=%s ", Temp);
+				strncat_s(Command, sizeof(Command), Str, _TRUNCATE);
+			}
+
 			WinExec(Command,SW_SHOW);
 			return;
 		}

Modified: branches/serial_port_improved/teraterm/ttpset/ttpset.def
===================================================================
--- branches/serial_port_improved/teraterm/ttpset/ttpset.def	2019-09-20 11:09:12 UTC (rev 8203)
+++ branches/serial_port_improved/teraterm/ttpset/ttpset.def	2019-09-20 13:47:26 UTC (rev 8204)
@@ -7,3 +7,4 @@
   ParseParam @6
   CopySerialList @7
   AddValueToList @8
+  SerialPortConfconvertId2Str @9

Modified: branches/serial_port_improved/teraterm/ttpset/ttset.c
===================================================================
--- branches/serial_port_improved/teraterm/ttpset/ttset.c	2019-09-20 11:09:12 UTC (rev 8203)
+++ branches/serial_port_improved/teraterm/ttpset/ttset.c	2019-09-20 13:47:26 UTC (rev 8204)
@@ -60,6 +60,148 @@
 	{ "Windows", "KOI8-R", "CP-866", "ISO-8859-5", NULL };
 static PCHAR far RussList2[] = { "Windows", "KOI8-R", NULL };
 
+
+/*
+ * \x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x8A֘A\x82̐ݒ\xE8\x92\xE8\x8B`
+ */
+#define IDENDMARK 0xFFFF
+
+typedef struct id_str_pair {
+	WORD id;
+	char *str;
+} id_str_pair_t;
+
+static id_str_pair_t serial_conf_databit[] = {
+	{IdDataBit7, "7"},
+	{IdDataBit8, "8"},
+	{IDENDMARK, NULL},
+};
+
+static id_str_pair_t serial_conf_parity[] = {
+	{IdParityNone, "none"},
+	{IdParityOdd, "odd"},
+	{IdParityEven, "even"},
+	{IdParityMark, "mark"},
+	{IdParitySpace, "space"},
+	{IDENDMARK, NULL},
+};
+
+static id_str_pair_t serial_conf_stopbit[] = {
+	{IdStopBit1, "1"},
+	{IdStopBit15, "1.5"},
+	{IdStopBit2, "2"},
+	{IDENDMARK, NULL},
+};
+
+static id_str_pair_t serial_conf_flowctrl[] = {
+	{IdFlowX, "x"},
+	{IdFlowHard, "hard"},
+	{IdFlowHard, "rtscts"},
+	{IdFlowNone, "none"},
+	{IdFlowHardDsrDtr, "dsrdtr"},
+	{IDENDMARK, NULL},
+};
+
+
+/*
+ * \x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x8A֘A\x82̐ݒ\xE8
+ * Id\x82\xA9\x82當\x8E\x9A\x97\xF1\x82ɕϊ\xB7\x82\xB7\x82\xE9\x81B
+ *
+ * return
+ *    TRUE: \x95ϊ\xB7\x90\xAC\x8C\xF7
+ *    FALSE: \x95ϊ\xB7\x8E\xB8\x94s
+ */
+int PASCAL SerialPortConfconvertId2Str(enum serial_port_conf type, WORD id, PCHAR str, int strlen)
+{
+	id_str_pair_t *conf;
+	int ret = FALSE;
+	int i;
+
+	switch (type) {
+		case COM_DATABIT:
+			conf = serial_conf_databit;
+			break;
+		case COM_PARITY:
+			conf = serial_conf_parity;
+			break;
+		case COM_STOPBIT:
+			conf = serial_conf_stopbit;
+			break;
+		case COM_FLOWCTRL:
+			conf = serial_conf_flowctrl;
+			break;
+		default:
+			conf = NULL;
+			break;
+	}
+	if (conf == NULL)
+		goto error;
+
+	for (i = 0 ;  ; i++) {
+		if (conf[i].id == IDENDMARK)
+			goto error;
+		if (conf[i].id == id) {
+			strncpy_s(str, strlen, conf[i].str, _TRUNCATE);
+			break;
+		}
+	}
+
+	ret = TRUE;
+
+error:
+	return (ret);
+}
+
+/*
+ * \x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x8A֘A\x82̐ݒ\xE8
+ * \x95\xB6\x8E\x9A\x97񂩂\xE7Id\x82ɕϊ\xB7\x82\xB7\x82\xE9\x81B
+ *
+ * return
+ *    TRUE: \x95ϊ\xB7\x90\xAC\x8C\xF7
+ *    FALSE: \x95ϊ\xB7\x8E\xB8\x94s
+ */
+static int SerialPortConfconvertStr2Id(enum serial_port_conf type, PCHAR str, WORD *id)
+{
+	id_str_pair_t *conf;
+	int ret = FALSE;
+	int i;
+
+	switch (type) {
+		case COM_DATABIT:
+			conf = serial_conf_databit;
+			break;
+		case COM_PARITY:
+			conf = serial_conf_parity;
+			break;
+		case COM_STOPBIT:
+			conf = serial_conf_stopbit;
+			break;
+		case COM_FLOWCTRL:
+			conf = serial_conf_flowctrl;
+			break;
+		default:
+			conf = NULL;
+			break;
+	}
+	if (conf == NULL)
+		goto error;
+
+	for (i = 0 ;  ; i++) {
+		if (conf[i].id == IDENDMARK)
+			goto error;
+		if (_stricmp(conf[i].str, str) == 0) {
+			*id = conf[i].id;
+			break;
+		}
+	}
+
+	ret = TRUE;
+
+error:
+	return (ret);
+}
+
+
 WORD str2id(PCHAR far * List, PCHAR str, WORD DefId)
 {
 	WORD i;
@@ -1034,48 +1176,30 @@
 	/* Parity */
 	GetPrivateProfileString(Section, "Parity", "",
 	                        Temp, sizeof(Temp), FName);
-	if (_stricmp(Temp, "even") == 0)
-		ts->Parity = IdParityEven;
-	else if (_stricmp(Temp, "odd") == 0)
-		ts->Parity = IdParityOdd;
-	else if (_stricmp(Temp, "mark") == 0)
-		ts->Parity = IdParityMark;
-	else if (_stricmp(Temp, "space") == 0)
-		ts->Parity = IdParitySpace;
-	else
+	if (!SerialPortConfconvertStr2Id(COM_PARITY, Temp, &ts->Parity)) {
 		ts->Parity = IdParityNone;
+	}
 
 	/* Data bit */
 	GetPrivateProfileString(Section, "DataBit", "",
 	                        Temp, sizeof(Temp), FName);
-	if (_stricmp(Temp, "7") == 0)
-		ts->DataBit = IdDataBit7;
-	else
+	if (!SerialPortConfconvertStr2Id(COM_DATABIT, Temp, &ts->DataBit)) {
 		ts->DataBit = IdDataBit8;
+	}
 
 	/* Stop bit */
 	GetPrivateProfileString(Section, "StopBit", "",
 	                        Temp, sizeof(Temp), FName);
-	if (_stricmp(Temp, "2") == 0)
-		ts->StopBit = IdStopBit2;
-	else if (_stricmp(Temp, "1.5") == 0)
-		ts->StopBit = IdStopBit15;
-	else
+	if (!SerialPortConfconvertStr2Id(COM_STOPBIT, Temp, &ts->StopBit)) {
 		ts->StopBit = IdStopBit1;
+	}
 
 	/* Flow control */
 	GetPrivateProfileString(Section, "FlowCtrl", "",
 	                        Temp, sizeof(Temp), FName);
-	if (_stricmp(Temp, "x") == 0)
-		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
+	if (!SerialPortConfconvertStr2Id(COM_FLOWCTRL, Temp, &ts->Flow)) {
 		ts->Flow = IdFlowNone;
+	}
 
 	/* Delay per character */
 	ts->DelayPerChar =
@@ -2593,59 +2717,25 @@
 	WritePrivateProfileString(Section, "BaudRate", Temp, FName);
 
 	/* Parity */
-	switch (ts->Parity) {
-	case IdParityEven:
-		strncpy_s(Temp, sizeof(Temp), "even", _TRUNCATE);
-		break;
-	case IdParityOdd:
-		strncpy_s(Temp, sizeof(Temp), "odd", _TRUNCATE);
-		break;
-	case IdParityMark:
-		strncpy_s(Temp, sizeof(Temp), "mark", _TRUNCATE);
-		break;
-	case IdParitySpace:
-		strncpy_s(Temp, sizeof(Temp), "space", _TRUNCATE);
-		break;
-	default:
+	if (!SerialPortConfconvertId2Str(COM_PARITY, ts->Parity, Temp, sizeof(Temp))) {
 		strncpy_s(Temp, sizeof(Temp), "none", _TRUNCATE);
 	}
 	WritePrivateProfileString(Section, "Parity", Temp, FName);
 
 	/* Data bit */
-	if (ts->DataBit == IdDataBit7)
-		strncpy_s(Temp, sizeof(Temp), "7", _TRUNCATE);
-	else
+	if (!SerialPortConfconvertId2Str(COM_DATABIT, ts->DataBit, Temp, sizeof(Temp))) {
 		strncpy_s(Temp, sizeof(Temp), "8", _TRUNCATE);
-
+	}
 	WritePrivateProfileString(Section, "DataBit", Temp, FName);
 
 	/* Stop bit */
-	switch (ts->StopBit) {
-	case IdStopBit2:
-		strncpy_s(Temp, sizeof(Temp), "2", _TRUNCATE);
-		break;
-	case IdStopBit15:
-		strncpy_s(Temp, sizeof(Temp), "1.5", _TRUNCATE);
-		break;
-	default:
+	if (!SerialPortConfconvertId2Str(COM_STOPBIT, ts->StopBit, Temp, sizeof(Temp))) {
 		strncpy_s(Temp, sizeof(Temp), "1", _TRUNCATE);
-		break;
 	}
-
 	WritePrivateProfileString(Section, "StopBit", Temp, FName);
 
 	/* Flow control */
-	switch (ts->Flow) {
-	case IdFlowX:
-		strncpy_s(Temp, sizeof(Temp), "x", _TRUNCATE);
-		break;
-	case IdFlowHard:
-		strncpy_s(Temp, sizeof(Temp), "hard", _TRUNCATE);
-		break;
-	case IdFlowHardDsrDtr:
-		strncpy_s(Temp, sizeof(Temp), "dsrdtr", _TRUNCATE);
-		break;
-	default:
+	if (!SerialPortConfconvertId2Str(COM_FLOWCTRL, ts->Flow, Temp, sizeof(Temp))) {
 		strncpy_s(Temp, sizeof(Temp), "none", _TRUNCATE);
 	}
 	WritePrivateProfileString(Section, "FlowCtrl", Temp, FName);
@@ -4048,48 +4138,20 @@
 				ParamCom = 0;
 		}
 		else if (_strnicmp(Temp, "/CDATABIT=", 10) == 0) {	/* COM data bit */
-			WORD val = 0;
-
 			ParamPort = IdSerial;
-			val = atoi(&Temp[10]);
-			if (val == IdDataBit7 || 
-				val == IdDataBit8
-				) {
-				ts->DataBit = val;
-			}
+			SerialPortConfconvertStr2Id(COM_DATABIT, &Temp[10], &ts->DataBit);
 		}
 		else if (_strnicmp(Temp, "/CPARITY=", 9) == 0) {	/* COM Parity */
-			WORD val = 0;
-
 			ParamPort = IdSerial;
-			val = atoi(&Temp[9]);
-			if (val >= IdParityNone &&
-				val <= IdParitySpace
-				) {
-				ts->Parity = val;
-			}
+			SerialPortConfconvertStr2Id(COM_PARITY, &Temp[9], &ts->Parity);
 		}
 		else if (_strnicmp(Temp, "/CSTOPBIT=", 10) == 0) {	/* COM Stop bit */
-			WORD val = 0;
-
 			ParamPort = IdSerial;
-			val = atoi(&Temp[10]);
-			if (val >= IdStopBit1 &&
-				val <= IdStopBit2
-				) {
-				ts->StopBit = val;
-			}
+			SerialPortConfconvertStr2Id(COM_STOPBIT, &Temp[10], &ts->StopBit);
 		}
 		else if (_strnicmp(Temp, "/CFLOWCTRL=", 11) == 0) {	/* COM Flow control */
-			WORD val = 0;
-
 			ParamPort = IdSerial;
-			val = atoi(&Temp[11]);
-			if (val >= IdFlowX &&
-				val <= IdFlowHardDsrDtr
-				) {
-				ts->Flow = val;
-			}
+			SerialPortConfconvertStr2Id(COM_FLOWCTRL, &Temp[11], &ts->Flow);
 		}
 		else if (_strnicmp(Temp, "/CDELAYPERCHAR=", 15) == 0) {	/* COM Transmit delay per character (in msec) */
 			WORD val = 0;


Ttssh2-commit メーリングリストの案内
Zurück zum Archiv-Index