投稿日 | : 2005/04/27(Wed) 14:35 |
投稿者 | : なまごん |
URL | : |
タイトル | : Re^4: MSCommについて |
Starfish様 助言有難う御座います。
> &HE0は、シフトJISでは、全角文字の1バイト目のコードですので、テキスト
> モードだと、2バイト目がくるのをしばらく待っているのでしょう。
アスキーしか使用したことがなかったので、シフトJIS&テキストモードの件
知りませんでした。
> バイナリーモードの場合は、バイト配列を使います。
はい。
> STXからETXまでの間のデータを、取り出して文字列に変換するコードを
> 書いてみました。コンパイルエラーは落としてありますが、デバッグはしていません、
> こんな感じでやればできるということで参考にしてください。STXとETXが
> 分かれて受信するところまでは考慮はしています。
>
> Private Sub MSComm1_OnComm()
> Dim bytBuffer() As Byte
> Dim strData As String
> Static bytData() As Byte
> Static blnRecieve As Boolean ' 受信中
>
> Select Case MSComm1.CommEvent
> Case comEvReceive
> bytBuffer = MSComm1.Input
> If blnRecieve = False Then ' STXを受信していない
> If InStrB(bytBuffer, ChrB(2)) > 0 Then ' STX受信?
> blnRecieve = True
> bytData = ""
> bytBuffer = MidB(bytBuffer, InStrB(bytBuffer, ChrB(2)) + 1)
> End If
> End If
> If blnRecieve Then ' STX受信済
> If InStrB(bytBuffer, ChrB(3)) > 0 Then ' ETX受信?
> If InStrB(bytBuffer, ChrB(3)) > 1 Then
> bytData = CStr(bytData) & LeftB(bytBuffer, InStrB(bytBuffer, Chr
B(3)) -
> 1)
> End If
> blnRecieve = False
> strData = StrConv(bytData, vbUnicode)
> ' strData に、文字列に変換したデータが入ります。ここに受信処理を入れてく
ださい
> Else
> bytData = CStr(bytData) & CStr(bytBuffer)
> End If
> End If
> End Select
>
> End Sub
コードを参考にしたところ正常に受信することが出来ました。
(お恥ずかしい話しですが「StrConv」知りませんでした・・・)
至れり尽くせりで参考のコードまで作成して頂き、有難う御座いました。
参考コードは保管して今後も参考にさせて頂きます。
本当に有難う御座いました。(助かりました・・・)