- - PR -
COMポート番号設定
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-05-21 05:40
COMポート番号の設定に失敗します。原因をご存知のかたおられましたら
お教えください ---------------------------------- 環境 WindowsXPPro sp2 VisualStudio.NET2005(vb) ---------------------------------- Dim ports As String() = IO.Ports.SerialPort.GetPortNames() Dim port As Object Try AxMSComm1.Settings = "38400,E,8,1" (ほかHandShakingなど設定) For Each port In ports If port.Length > 3 Then AxMSComm1.CommPort = CShort(port.Substring(3)) ← ● End If Next port Catch e As Exception End Try ---------------------------------- 実行結果 ports の値 "COM3","COM4","COM5" の配列 for内のportには一番最初に COM3 → ポート番号3 を割り当て 二度目のループでportにはCOM → ポート番号4 と続きますが 一回目の上記●の箇所では問題なく、2回目に ●の箇所でCOMExceptionが発生します --------------------------------- 現象 COMポート番号に4,5が割り当てられない ---------------------------------- その原因と対策をご存知の方おられましたらよろしくお願いいたします。 | ||||
|
投稿日時: 2007-05-21 08:21
追記です
AxMSComm は AxMSCommLib.AxMSComm です。 | ||||
|
投稿日時: 2007-05-21 10:05
このように試してみましたが、再現しませんでした。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-05-21 10:28
じゃんぬねっとさん 試していただいたようでありがとうございます。
キャストする部分を、ご提示のように変更し実行したところCOMExceptionが発生したので、stackTraceをとってみました。以下のとおりです。 場所 MSCommLib.IMSComm.set_CommPort(Int16 psCommPort) 場所 AxMSCommLib.AxMSComm.set_CommPort(Int16 value) 場所 (AxMSComm1.CommPort に ポート番号をセットしている行) この質問を投稿する前にも、この部分のソースを変更しない状態で実行しても 同じExceptionが発生しないときもあり、困っています。 [ メッセージ編集済み 編集者: ひまわり 編集日時 2007-05-21 10:31 ] | ||||
|
投稿日時: 2007-05-21 11:43
PortOpenプロパティをTrueにした状態で、 すでに使用されているポートを設定とすると、COMExceptionがスローされます。 というか…SerialPortクラスを使いつつ、わざわざMSComm OCXを使う理由ってなんなんでしょう? | ||||
|
投稿日時: 2007-05-21 11:58
質問内容と関係あるかわかりませんが、同じプロジェクトの
違うメソッドで Dim Buffer as object Buffer = ap.AxMSComm1.Input この2行目でやはりCOMExceptionが発生します。 2行目実行直後に 'System.InvalidCastException' の初回例外が Microsoft.VisualBasic.dll で発生しました。" が発生し、それから、最後にはCOMExceptionというエラーがかえってきます。 関連あるのでしょうか? |
1