Revision: 8205 https://osdn.net/projects/ttssh2/scm/svn/commits/8205 Author: yutakapon Date: 2019-09-20 23:16:59 +0900 (Fri, 20 Sep 2019) Log Message: ----------- ・シリアルポート設定ダイアログからNew connectionする際、全設定をコマンドラインに渡すようにした。 ・コマンドラインオプション /CDATABIT=, /CPARITY=, /CSTOPBIT=, /CFLOWCTRL=, /CDELAYPERCHAR=, /CDELAYPERLINE=を追加した。 branches/serial_port_improvedからリビジョン8172, 8204をマージ: ・シリアルポート設定ダイアログからNew connectionする際、全設定をコマンドラインに渡すようにした。 ・コマンドラインオプション /CDATABIT=, /CPARITY=, /CSTOPBIT=, /CFLOWCTRL=, /CDELAYPERCHAR=, /CDELAYPERLINE=を追加した。 ........ コマンドラインオプション /CDATABIT=, /CPARITY=, /CSTOPBIT=, /CFLOWCTRL= の指定方法を teraterm.ini と合わせるようにした。 ........ Modified Paths: -------------- trunk/doc/en/html/about/history.html trunk/doc/en/html/commandline/teraterm.html trunk/doc/ja/html/about/history.html trunk/doc/ja/html/commandline/teraterm.html trunk/teraterm/common/ttlib.h trunk/teraterm/teraterm/ttsetup.h trunk/teraterm/teraterm/vtwin.cpp trunk/teraterm/ttpset/ttpset.def trunk/teraterm/ttpset/ttset.c Property Changed: ---------------- trunk/ trunk/teraterm/ -------------- next part -------------- Index: trunk =================================================================== --- trunk 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk 2019-09-20 14:16:59 UTC (rev 8205) Property changes on: trunk ___________________________________________________________________ Modified: svn:mergeinfo ## -2,7 +2,7 ## /branches/flowctrl_dsrdtr:7825-7827 /branches/openssl_1_1_1_v2:7888 /branches/portfwd_memleak:7732,7736-7737,7764 -/branches/serial_port_improved:8119,8140-8141,8144,8150,8158-8160,8163,8170-8171,8183,8185 +/branches/serial_port_improved:8119,8140-8141,8144,8150,8158-8160,8163,8170-8172,8183,8185,8204 /branches/ssh_ed25519:5495-5544 /branches/ttproxy_improved:8041,8055-8056 /branches/ttssh_improved:8027,8036,8040,8044,8053-8054,8058,8060,8063,8081,8085 Modified: trunk/doc/en/html/about/history.html =================================================================== --- trunk/doc/en/html/about/history.html 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk/doc/en/html/about/history.html 2019-09-20 14:16:59 UTC (rev 8205) @@ -52,6 +52,7 @@ <li>The tooltip of the speed setting is added on the <a href="../menu/setup-serialport.html#Information">[Setup]-[Serial port]</a> dialog.</li> <li>The OK button notation in the <a href="../menu/setup-serialport.html#OK">[Setup]-[Serial port]</a> dialog is changed refering to the connection state. </li> <li>The OK button can not be pressed in the <a href="../menu/setup-serialport.html#OK">[Setup]-[Serial port]</a> dialog when no COM ports are available.</li> + <li>Added <a href="../commandline/teraterm.html#cdatabit">/CDATABIT=</a>, <a href="../commandline/teraterm.html#cparity">/CPARITY=</a>, <a href="../commandline/teraterm.html#cstopbit">/CSTOPBIT=</a>, <a href="../commandline/teraterm.html#cflowctrl">/CFLOWCTRL=</a>, <a href="../commandline/teraterm.html#cdelayperchar">/CDELAYPERCHAR=</a>, <a href="../commandline/teraterm.html#cdelayperline">/CDELAYPERLINE=</a> command line options.</li> </ul> </li> <li>Bug fixes Modified: trunk/doc/en/html/commandline/teraterm.html =================================================================== --- trunk/doc/en/html/commandline/teraterm.html 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk/doc/en/html/commandline/teraterm.html 2019-09-20 14:16:59 UTC (rev 8205) @@ -76,6 +76,59 @@ By default, maximum serial port number is 256. It is configurable in <a href="../setup/teraterm-com.html#maxport">MaxComPort</a> setting. </dd> + <dt id="cdatabit">/CDATABIT=<value></dt> + <dd>Data bit of serial port + <ul> + <li><span class="syntax">/CDATABIT=7</span> 7bit</li> + <li><span class="syntax">/CDATABIT=8</span> 8bit</li> + </ul> + </dd> + + <dt id="cparity">/CPARITY=<value></dt> + <dd>Parity of serial port + <ul> + <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> + + <dt id="cstopbit">/CSTOPBIT=<value></dt> + <dd>Stop bit of serial port + <ul> + <li><span class="syntax">/CSTOPBIT=1</span> 1bit</li> + <li><span class="syntax">/CSTOPBIT=1.5</span> 1.5bit</li> + <li><span class="syntax">/CSTOPBIT=2</span> 2bit</li> + </ul> + </dd> + + <dt id="cflowctrl">/CFLOWCTRL=<value></dt> + <dd>Flow control of serial port + <ul> + <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> + + <dt id="cdelayperchar">/CDELAYPERCHAR=<value></dt> + <dd>Transmission delay time per character of serial port(msec) + <ul> + <li><span class="syntax">/CDELAYPERCHAR=n</span> n millisecond</li> + </ul> + </dd> + + <dt id="cdelayperline">/CDELAYPERLINE=<value></dt> + <dd>Transmission delay time per line of serial port(msec) + <ul> + <li><span class="syntax">/CDELAYPERLINE=n</span> nmillisecond</li> + </ul> + </dd> + <!-- <dt id="duplicate">/DUPLICATE</dt> <dd>Internal use(must not specify this option)</dd> Modified: trunk/doc/ja/html/about/history.html =================================================================== --- trunk/doc/ja/html/about/history.html 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk/doc/ja/html/about/history.html 2019-09-20 14:16:59 UTC (rev 8205) @@ -52,6 +52,7 @@ <li><a href="../menu/setup-serialport.html">[Setup]-[Serial port]</a> \x83_\x83C\x83A\x83\x8D\x83O\x82̃X\x83s\x81[\x83h\x90ݒ\xE8\x82Ńc\x81[\x83\x8B\x83`\x83b\x83v\x82\xF0\x95\\x8E\xA6\x82\xB7\x82\xE9\x82悤\x82ɂ\xB5\x82\xBD\x81B</li> <li><a href="../menu/setup-serialport.html#OK">[Setup]-[Serial port]</a> \x83_\x83C\x83A\x83\x8D\x83O\x82\xCCOK\x83{\x83^\x83\x93\x82̕\\x8BL\x82\xF0\x90ڑ\xB1\x8F\xF3\x91ԂŐ\xE8\x91ւ\xA6\x82\xE9\x82悤\x82ɂ\xB5\x82\xBD\x81B</li> <li>\x8Eg\x97p\x89\\x82\xC8COM\x83|\x81[\x83g\x82\xAA\x91\xB6\x8D݂\xB5\x82Ȃ\xA2\x8Fꍇ\x81A<a href="../menu/setup-serialport.html#OK">[Setup]-[Serial port]</a> \x83_\x83C\x83A\x83\x8D\x83O\x82\xCCOK\x83{\x83^\x83\x93\x82\xF0\x89\x9F\x82\xB9\x82Ȃ\xA2\x82悤\x82ɂ\xB5\x82\xBD\x81B</li> + <li><a href="../commandline/teraterm.html#cdatabit">/CDATABIT=</a>, <a href="../commandline/teraterm.html#cparity">/CPARITY=</a>, <a href="../commandline/teraterm.html#cstopbit">/CSTOPBIT=</a>, <a href="../commandline/teraterm.html#cflowctrl">/CFLOWCTRL=</a>, <a href="../commandline/teraterm.html#cdelayperchar">/CDELAYPERCHAR=</a>, <a href="../commandline/teraterm.html#cdelayperline">/CDELAYPERLINE=</a> \x83R\x83}\x83\x93\x83h\x83\x89\x83C\x83\x93\x83I\x83v\x83V\x83\x87\x83\x93\x82\xF0\x92lj\xC1\x82\xB5\x82\xBD\x81B</li> </ul> </li> <li>\x83o\x83O\x8FC\x90\xB3 Modified: trunk/doc/ja/html/commandline/teraterm.html =================================================================== --- trunk/doc/ja/html/commandline/teraterm.html 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk/doc/ja/html/commandline/teraterm.html 2019-09-20 14:16:59 UTC (rev 8205) @@ -80,6 +80,59 @@ \x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x94ԍ\x86\x82̍ő\xE5\x92l\x82̓f\x83t\x83H\x83\x8B\x83g\x82\xC5256\x82ƂȂ\xC1\x82Ă\xA2\x82܂\xB7\x81B<a href="../setup/teraterm-com.html#maxport">MaxComPort</a>\x82ōő\xE5\x92l\x82\xF0\x95ύX\x82ł\xAB\x82܂\xB7\x81B </dd> + <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=7</span> 7bit</li> + <li><span class="syntax">/CDATABIT=8</span> 8bit</li> + </ul> + </dd> + + <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=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> + + <dt id="cstopbit">/CSTOPBIT=<value></dt> + <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=1.5</span> 1.5bit</li> + <li><span class="syntax">/CSTOPBIT=2</span> 2bit</li> + </ul> + </dd> + + <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=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> + + <dt id="cdelayperchar">/CDELAYPERCHAR=<value></dt> + <dd>\x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x82̈ꕶ\x8E\x9A\x82\xA0\x82\xBD\x82\xE8\x82̑\x97\x90M\x92x\x89\x84\x8E\x9E\x8A\xD4(\x83~\x83\x8A\x95b) + <ul> + <li><span class="syntax">/CDELAYPERCHAR=n</span> n\x83~\x83\x8A\x95b</li> + </ul> + </dd> + + <dt id="cdelayperline">/CDELAYPERLINE=<value></dt> + <dd>\x83V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x82̈\xEA\x8Ds\x82\xA0\x82\xBD\x82\xE8\x82̑\x97\x90M\x92x\x89\x84\x8E\x9E\x8A\xD4(\x83~\x83\x8A\x95b) + <ul> + <li><span class="syntax">/CDELAYPERLINE=n</span> n\x83~\x83\x8A\x95b</li> + </ul> + </dd> + <!-- <dt id="duplicate">/DUPLICATE</dt> <dd>\x8Eg\x97p\x8B֎~\x81i\x83Z\x83b\x83V\x83\x87\x83\x93\x82̕\xA1\x90\xBB\x82œ\xE0\x95\x94\x82Ŏg\x82\xED\x82\xEA\x82\xE9\x81j</dd> Index: trunk/teraterm =================================================================== --- trunk/teraterm 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk/teraterm 2019-09-20 14:16:59 UTC (rev 8205) Property changes on: trunk/teraterm ___________________________________________________________________ Modified: svn:mergeinfo ## -1,4 +1,4 ## /branches/drag_and_drop/teraterm:7130,7139,7141,7143-7147 /branches/flowctrl_dsrdtr/teraterm:7825-7827 -/branches/serial_port_improved/teraterm:8119,8140-8141,8144,8150,8158-8160,8163,8170,8183,8185 +/branches/serial_port_improved/teraterm:8119,8140-8141,8144,8150,8158-8160,8163,8170,8172,8183,8185,8204 /branches/vs2015_warn/teraterm:6194-6285 \ No newline at end of property Modified: trunk/teraterm/common/ttlib.h =================================================================== --- trunk/teraterm/common/ttlib.h 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk/teraterm/common/ttlib.h 2019-09-20 14:16:59 UTC (rev 8205) @@ -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: trunk/teraterm/teraterm/ttsetup.h =================================================================== --- trunk/teraterm/teraterm/ttsetup.h 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk/teraterm/teraterm/ttsetup.h 2019-09-20 14:16:59 UTC (rev 8205) @@ -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: trunk/teraterm/teraterm/vtwin.cpp =================================================================== --- trunk/teraterm/teraterm/vtwin.cpp 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk/teraterm/teraterm/vtwin.cpp 2019-09-20 14:16:59 UTC (rev 8205) @@ -4672,6 +4672,7 @@ { BOOL Ok; char Command[MAXPATHLEN + HostNameMaxLength]; + char Temp[MAX_PATH], Str[MAX_PATH]; HelpId = HlpSetupSerialPort; if (! LoadTTDLG()) { @@ -4688,9 +4689,26 @@ * 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 /CDELAYPERCHAR=%u /CDELAYPERLINE=%u ", + ts.ComPort, ts.Baud, ts.DelayPerChar, ts.DelayPerLine); - _snprintf_s(Command, sizeof(Command), "ttermpro /C=%u /SPEED=%lu", - ts.ComPort, ts.Baud); + 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: trunk/teraterm/ttpset/ttpset.def =================================================================== --- trunk/teraterm/ttpset/ttpset.def 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk/teraterm/ttpset/ttpset.def 2019-09-20 14:16:59 UTC (rev 8205) @@ -7,3 +7,4 @@ ParseParam @6 CopySerialList @7 AddValueToList @8 + SerialPortConfconvertId2Str @9 Modified: trunk/teraterm/ttpset/ttset.c =================================================================== --- trunk/teraterm/ttpset/ttset.c 2019-09-20 13:47:26 UTC (rev 8204) +++ trunk/teraterm/ttpset/ttset.c 2019-09-20 14:16:59 UTC (rev 8205) @@ -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); @@ -4047,6 +4137,36 @@ if ((ParamCom < 1) || (ParamCom > ts->MaxComPort)) ParamCom = 0; } + else if (_strnicmp(Temp, "/CDATABIT=", 10) == 0) { /* COM data bit */ + ParamPort = IdSerial; + SerialPortConfconvertStr2Id(COM_DATABIT, &Temp[10], &ts->DataBit); + } + else if (_strnicmp(Temp, "/CPARITY=", 9) == 0) { /* COM Parity */ + ParamPort = IdSerial; + SerialPortConfconvertStr2Id(COM_PARITY, &Temp[9], &ts->Parity); + } + else if (_strnicmp(Temp, "/CSTOPBIT=", 10) == 0) { /* COM Stop bit */ + ParamPort = IdSerial; + SerialPortConfconvertStr2Id(COM_STOPBIT, &Temp[10], &ts->StopBit); + } + else if (_strnicmp(Temp, "/CFLOWCTRL=", 11) == 0) { /* COM Flow control */ + ParamPort = IdSerial; + SerialPortConfconvertStr2Id(COM_FLOWCTRL, &Temp[11], &ts->Flow); + } + else if (_strnicmp(Temp, "/CDELAYPERCHAR=", 15) == 0) { /* COM Transmit delay per character (in msec) */ + WORD val = 0; + + ParamPort = IdSerial; + val = atoi(&Temp[15]); + ts->DelayPerChar = val; + } + else if (_strnicmp(Temp, "/CDELAYPERLINE=", 15) == 0) { /* COM Transmit delay per line (in msec) */ + WORD val = 0; + + ParamPort = IdSerial; + val = atoi(&Temp[15]); + ts->DelayPerLine = val; + } else if (_stricmp(Temp, "/WAITCOM") == 0) { /* wait COM arrival */ ts->WaitCom = 1; }