前提・実現したいこと
c#でシリアル通信のFormアプリを作成しています。
(シリアルポートはUSB接続しています。)
接続でうまくいかないことがあり困っています。
・必ず初回のみエラーが出て接続不可
・TeraTermでは接続できることは確認済み
・2回目以降の接続に関しては問題なく接続可
お力添え宜しくお願いします。
発生している問題・エラーメッセージ
初回接続時に下記のエラーが発生します。
システムに接続されたデバイスが機能していません。
該当のソースコード
c#
1private void btnConnect_clicked(object sender, EventArgs e) 2{ 3 // COMポートをOPEN 4 serialPort = new SerialPort(); 5 serialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort1_DataReceived); 6 serialPort.PortName = "COM4"; 7 serialPort.BaudRate = 19200; 8 serialPort.DataBits = 8; 9 serialPort.Parity = Parity.None; 10 serialPort.StopBits = StopBits.One; 11 serialPort.Encoding = Encoding.UTF8; 12 serialPort.DtrEnable = true; 13 serialPort.RtsEnable = true; 14 15 // 接続開始 16 try 17 { 18 serialPort.Open(); ←ここでエラー発生し、catchへ 19 this.Invoke(new Action<string>(this.appendText), DateTime.Now + " 接続開始" + Environment.NewLine); 20 } 21 catch (Exception ex) ←ex.messageに上記のエラーメッセージがはいります 22 { 23 this.Invoke(new Action<string>(this.appendText), DateTime.Now + " " + ex.Message + Environment.NewLine); 24 } 25} 26 27// 画面上にログとして出力 28private void appendText(string _sLog) 29{ 30 this.txtLog.AppendText(_sLog); 31} 32 33// データ受信トリガー 34private void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) 35{ 36 if (serialPort != null && serialPort.IsOpen) 37 { 38 try 39 { 40 // 受信データを読み込む 41 SerialPort sp = (SerialPort)sender; 42 string sChildData = sp.ReadExisting(); 43 44 // 受信データをDBへ格納などの処理 ※省略 45 } 46 catch (Exception ex) 47 { 48 this.Invoke(new Action<string>(this.appendText), DateTime.Now + " 受信データ読込に失敗しました。" + Environment.NewLine); 49 } 50 } 51}
試したこと
・TeraTermにて接続確認後にFormアプリで接続すると接続できることは確認できました。
・エラー発生前にデバイスマネージャーにてデバイス認識できていることは確認しました。
補足情報(FW/ツールのバージョンなど)
C#/Visual Studio 2017
.NetFramework 4.7.1

回答1件
あなたの回答
tips
プレビュー