掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB6にて、MSCommを使用して、サブルーチンを使ってバイナリデータを送信する方法は? (ID:87952)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんばんは、MSCommのエラー処理ではお世話になりました。 プログラムを作成していて、やり方が分からないのでご教授下さい。 ターゲット機器はマイコンで、バイナリで通信します。 例えば、マイコンが制御しているレジスタに書き込みを行う場合、以下のプロトコルになります。 &HA0_&H79_&H00_AddressH_AddressL_DataH_DataL &HA0 + &H79 + &H00 : レジスタライトコマンド AddressH : アドレスHigh-Buye AddressL : アドレスLow-Byte DataH : データHigh-Byte DataL : データLow-Byte つまり、バイナリで7Byte送信します。 コマンドは常に同じで、アドレスとデータだけ違うので、実際の書き込みは サブルーチン化しました。 Public TxBuff As String Private Sub Command1_Click() TxBuff = ChrB$(&H5) + ChrB$(&H1) + ChrB$(&H0) + ChrB$(&H1) ' Address 0501H, Write Data0001H Call WAcc End Sub Public Sub WAcc() TxBuff = ChrB$(&HA0) + ChrB$(&H79) +ChrB$(&H00) + TxBuff MSComm1.Output = TxBuff End Sub このように作ると、何も送信されません。 そこで、以下のような簡単なプログラムを書いてみました。 TxBuff = ChrB$(&HB0) MSComm1.Output = TxBuff これでは送信されませんでした。これを以下のようにすると、送信しました。 TxBuff = ChrB$(&HB0) + ChrB$(&H0) MSComm1.Output = TxBuff ちなみに、MSComm1.InputMode = comInputModeBinary としています。 なお、VB5では問題ないようです(というのも、VB5で動いているコードを参照してコーディングしました)。 現在は、以下のようにしています(力ずくのコーディングですが。。。) Public AdrH As Byte, AdrL As Byte Public DataH As Byte, DataL As Byte Public Sub Command1_Click() AdrH = &H5 AdrL = &H1 DataH = &H0 If Option1.Value = True Then DataL = &H0 ElseIf Option2.Value = True Then DataL = &H1 ElseIf Option3.Value = True Then DataL = &H4 End If Call WAcc End Sun Public Sub WAcc() Dim TxCommand(2) As Byte Dim TxAdrData(3) As Byte MSComm1.OutBufferCount = 0 TxCommand(0) = &HA0 TxCommand(1) = &H79 TxCommand(2) = &H0 TxAdrData(0) = AdrH TxAdrData(1) = AdrL TxAdrData(2) = DataH TxAdrData(3) = DataL MSComm1.Output = TxCommand MSComm1.Output = TxAdrData End Sub ちょっと長くなりましたが、以上です。 アドバイスお待ちしております。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.