//-------------------------------------------------- // カード機制御命令 //-------------------------------------------------- #region カード機制御命令 /// <summary>通信ポートオープン</summary> public CardMachineErrorClass OpenPort(OpenPortParamClass Param) { int ret = -1; try { ret = TCSPOS110PWrapperClass.OpenPort(ref port_hndl, Param.ComPort, Param.Baud); } catch { throw; } return(ErrorCodeCheck(ret)); }
//-------------------------------------------------- // コムポート設定系 //-------------------------------------------------- #region コムポート設定系 /// <summary> /// コムポートをスキャンして自動で設定する /// </summary> private void ComPortScan() { try { // COMポートリストを取得 string[] ports = SerialPort.GetPortNames(); // 現在取得したポート数 int PortsLength = ports.Length; if (PortsLength == 0) { throw new Exception("COMポートが見つかりません、USBケーブルが繋がっていることを確認してください。"); } // 数字のみ抜き出すための正規表現 Regex re = new Regex(@"[^0-9]"); // 上記リストから数字のみ抜き出す string[] portnolist = new string[PortsLength]; for (int i = 0; i < PortsLength; i++) { // COMポート名からポート番号を抜き出す portnolist[i] = re.Replace(ports[i], ""); } // ボーレート取得(デバイスのデフォルト値) SerialPort[] PortNames = new SerialPort[PortsLength]; int[] baudList = new int[PortsLength]; for (int i = 0; i < PortsLength; i++) { PortNames[i] = new SerialPort(ports[i]); baudList[i] = PortNames[i].BaudRate; } // ポートオープンに成功したポートを設定保持する OpenPortParamClass ScanComPort = new OpenPortParamClass(); CardMachineErrorClass OpenRet = ErrorCodeCheck(-1); for (int i = 0; i < PortsLength; i++) { // ポート取得 ScanComPort.ComPort = short.Parse(portnolist[i]); ScanComPort.Baud = baudList[i]; // 取得ポートをオープンテスト OpenRet = OpenPort(ScanComPort); // 成否判定 if (OpenRet.ErrorCode == 0) { ComPort.ComPort = ScanComPort.ComPort; ComPort.Baud = ScanComPort.Baud; break; } } if (OpenRet.ErrorCode != 0) { throw new Exception(OpenRet.ErrorMessage); } } catch { throw; } }