MSCommで受信したデータの一部を変数に格納するには

解決


mmm  2010-04-15 01:36:50  No: 102339

こんにちは、VBはじめたての初心者です。MSCommコマンドを利用してマイコンと
通信するプログラムを作成中なのですが、わからないことがあるので質問させていただきます。

public aub form_load()
MSComm1.CommPort = 3 'ポート番号設定
MSComm1.Settings = "115200,N,8,1" '設定
MSComm1.PortOpen = True  'ポートオープン
MSComm1.Handshaking = comNone    'フロー制御無し
MSComm1.RTSEnable = False        'RTS制御無し
MSComm1.RThreshold = 1      '1バイト受信毎にOnCommイベント発生

Dim txBuffer As String

End sub

'テキストに表示した受信文字列を変数に格納、さらに必要な文字列だけ抽出する
Private Sub botan_Click()

txBuffer = Text2.Text
x = InStr(1, txBuffer, "e" & vbCrLf, 1)
txBuffer = Mid(txBuffer, x + 3, (Len(txBuffer) - (x + 2)))
Text1.Text = txBuffer       'txBufferの内容確認用

End Sub

Private Sub cmdr_Click()

Text2.Text = ""
MSComm1.Output = "r a0 s 00 j ff" & Chr(13) 'マイコンのデータを読み込むコマンド

End Sub

Private Sub MSComm1_OnComm()

Select Case MSComm1.CommEvent
Case comEvReceive
    Buffer = MSComm1.Input
    Text2.Text = Text2.Text & Buffer



End Select
End Sub

おおざっぱですがこのようなプログラムをつくりました。
目的は受信された文字列(テキストに表示)を変数に格納、さらに必要な文字列だけ抽出する
ことなのですが、このプログラムだとデータを読み込むコマンドを送るボタンとそのデータを
変数に格納して必要な部分を抽出するボタンを二回押さなければならず面倒なので、botan_Click()
の中の命令をそのままcmdr_Click()に入れたのですが、そうするとエラーが出てしまいます。
いろいろと試したのですがどうやらtxBufferの中に受信データが入ってくれないみたいです。
原因は何か。何かいい方法がないかアドバイスいただけたら幸いです。
やりたいことは、一回のボタンクリックで変数に受信データのほしいとこだけを格納させることです。
よろしくお願いします。


初心者  2010-04-19 19:12:48  No: 102340

public aub form_load()  は sub ですよね。

Dim txBuffer As Stringをpublic から外して

private txBuffer As String としてはいかが?


mmm  2010-04-23 03:03:42  No: 102341

貴重なご意見ありがとうございました。
なんとか解決できました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加