- - PR -
AxMsCommを使用してのバイトデータ(1byte)送信
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-01-20 16:03
現在RS232Cでのマイコンとの通信ソフトをVB.Netにて作成中なのですが、どうやってもうまくいかない箇所があります。
概略としてマイコン側が指定のコマンド(1byteのデータ)を受け取りそれに対してマイコンが指定処理を行うというものなのです。.Net移行前でのVB6.0の時は下記の様なコードで動作させていました。 Private Sub POWER_ON() Dim bytOutByte() As Byte Dim strPower_On_Cmd as String strPower_On_Cmd="83" bytOutByte() = ChrB(Val("&h" & strPower_On_Cmd)) MSComm1.Output = bytOutByte() End Sub しかし、VB.NetではChrB関数が使えないと言う制限もあり試行錯誤した結果 下記の様なコードにたどり着きました。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim strCmd As String Dim byt() As Byte strCmd = "83" byt = System.Text.Encoding.Unicode.GetBytes(ChrW(Val("&H" & strCmd))) AxMSComm1.Output = byt End Sub しかし、ここで問題が発生しました。仕様として1byteのコマンド83を送信したいにも関わらず 送信ラインをモニタすると8300と2byte送出されており、インデックスを指定して AxMSComm1.Output = byt(0) とすると"'System.Runtime.InteropServices.COMException' のハンドルされていない例外が axinterop.mscommlib.dll で発生しました。"と言うエラーが出てしまいます。 どなたか1byteのバイトを送出する方法を教えて下さいませんでしょうか? | ||||
|
投稿日時: 2005-01-20 16:29
Unicodeだからです。Asciiコードにしたいなら↓ byt = System.Text.Encoding.Default.GetBytes(ChrW(Val("&H" & strCmd))) ついでに言うと、こんな変換を繰り返す必要なんて何処にも無いですよね。 素直に↓じゃ駄目なんですか? Dim byt(0) As Byte byt(0) = 83 AxMSComm1.Output = byt _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ [ メッセージ編集済み 編集者: mikahosi@abox9.so-ne 編集日時 2005-01-20 16:32 ] | ||||
|
投稿日時: 2005-01-20 18:14
ありがとうございました。早速試してみましたが、1byteデータは確認出来ました。
しかし、ライン(TxD)を同様にモニタしてみたところ、 byt = System.Text.Encoding.Default.GetBytes(ChrW(Val("&H" & strCmd))) AxMSComm1.Output = byt は、→ 53(オシロ上は3,5の順) Dim byt(0) As Byte byt(0) = 83 AxMSComm1.Output = byt は、→ 3F((オシロ上は3,Fの順) が送出されていました。やっぱり、83をそのまま送出させるような事は出来ないの でしょうか....。 | ||||
|
投稿日時: 2005-01-20 18:37
byt(0)=val("&H" & strcmd)では。
| ||||
|
投稿日時: 2005-01-20 18:44
byt(0) = 83
の代わりに byt(0) = 131 だとどうでしょう? 83と書いてましたけど、送りたいのは16進数ですよね? 10進数の131なら16進で83になります。 (追加) byt(0) = &H83 でもいいですね。 文字列からの変換が要件であれば駄目ですが。 [ メッセージ編集済み 編集者: すなめり 編集日時 2005-01-20 18:48 ] | ||||
|
投稿日時: 2005-01-21 07:46
ご返信頂いたみなさまありがとうございます。
byt(0)=131,=val(&h83),=&h83 でうまく送出できました。 本当にありがとうございました。 |
1