VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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」知りませんでした・・・)

至れり尽くせりで参考のコードまで作成して頂き、有難う御座いました。
参考コードは保管して今後も参考にさせて頂きます。

本当に有難う御座いました。(助かりました・・・)


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -