環境:
Visual Studio 2008 VB.NET
Windows 10
VB.NETで、COM通信を行いたいと思います。
Public Class Form1 Delegate Sub DataDelegate(ByVal sdata As String) Public SerialPort1 As System.IO.Ports.SerialPort = New System.IO.Ports.SerialPort() Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try '例外処理のはじまり SerialPort1.Close() If SerialPort1.IsOpen = True Then 'ポートはオープン済み MessageBox.Show("", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If SerialPort1.PortName = TextBox_Com.Text 'オープンするポート名を格納 ' シリアルポートの通信速度指定 SerialPort1.BaudRate = 9600 ' シリアルポートのパリティ指定 SerialPort1.Parity = System.IO.Ports.Parity.None ' シリアルポートのビット数指定 SerialPort1.DataBits = 8 ' シリアルポートのストップビット指定 SerialPort1.StopBits = System.IO.Ports.StopBits.One SerialPort1.Open() 'ポートオープン Catch ex As Exception '例外処理 TextBox_Line.Text = TextBox_Line.Text & ex.ToString & vbCrLf & ex.Message & vbCrLf End Try SerialPort1.RtsEnable = True 'RTSをON End Sub Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Dim ReceivedData As String = " " '受信データ用変数を宣言します Try ReceivedData = SerialPort1.ReadLine 'データを受信します Catch ex As Exception ReceivedData = ex.Message '例外処理を行います End Try 'Invokeメソッドにより実行されるメソッドへのデリゲートの宣言を行い、受信データを表示します Dim adre As New DataDelegate(AddressOf PrintData) Me.Invoke(adre, ReceivedData) End Sub Private Sub PrintData(ByVal sdata As String) TextBox_Line.Text = TextBox_Line.Text & sdata & vbCrLf End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If SerialPort1.IsOpen = True Then 'ポートオープン済み SerialPort1.Close() 'ポートクローズ End If End Sub End Class
送信側からSend()して見ると、
送信には成功しているようなのですが、
受信側の
SerialPort1.Open() 'ポートオープン
の処理で例外が発生します。
通信はUSB接続で行っています。
COMポート番号はあっていることを確認しています。
TeratermでCOMポート受信もできることも確認済みです。
System.IO.IOException: システムに接続されたデバイスが機能していません。 場所 System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str) 場所 System.IO.Ports.SerialStream.InitializeDCB(Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Boolean discardNull) 場所 System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeout, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNull, Byte parityReplace) 場所 System.IO.Ports.SerialPort.Open() 場所 Travel_Car_Register_Recv.Form1.Button1_Click(Object sender, EventArgs e) 場所 c:\Form1.vb:行 23 システムに接続されたデバイスが機能していません。
解決方法が見つからず、苦慮しています。
どなたかわかりませんか?

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。