tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^5: 続きです (通信について)
投稿日: 2008/04/20(Sun) 01:36
投稿者Starfish

> シリアル通信のソフトで、周波数表示のコマンドを送ると、
> データのところに、00 98 89 44 01 と表示されて返ってきます。
> ちなみに、これは144.899MHzをさしています。
> 16進数で来ているだけだと思い、計算するとまったく違いました。
> なにかこちらもご存知の方いらっしゃいましたら、よろしくお願いします。。。

 逆にセットするんですね。この前の、ソースも逆になっています。
    bytData(5) = &H0
    bytData(6) = &H0
    bytData(7) = &H0
    bytData(8) = &H46
    bytData(9) = &H1

 受信データのある場合です。
Private Sub Command1_Click()
Dim bytSendData()       As Byte
Dim bytInputData()      As Byte
Dim bytRecvData()       As Byte

    MSComm1.InputMode = comInputModeBinary
    
    MSComm1.CommPort = 1
    MSComm1.Settings = "1200,N,8,1"
    MSComm1.PortOpen = True
    
    ' 送信処理
    ReDim bytSendData(5) As Byte   ' 送信するデータの長さに合わせてください。
    
    bytSendData(0) = &HFE
    bytSendData(1) = &HFE
    bytSendData(2) = &H60
    bytSendData(3) = &HE0
    bytSendData(4) = &H3
    bytSendData(5) = &HFD
    MSComm1.Output = bytSendData
  
    ' 受信処理
    bytRecvData = ""
    Do
        DoEvents
        bytInputData = MSComm1.Input
        bytRecvData = CStr(bytRecvData) & CStr(bytInputData)
    Loop Until InStrB(bytRecvData, ChrB(&HFD))

    txtDisplay.Text = Byte2Hex(bytRecvData(9)) & _
                      Byte2Hex(bytRecvData(8)) & _
                      Byte2Hex(bytRecvData(7)) & _
                      Byte2Hex(bytRecvData(6)) & _
                      Byte2Hex(bytRecvData(5))
                      
    MSComm1.PortOpen = False
    
End Sub

Function Byte2Hex(bytInputData As Byte) As String

    Byte2Hex = Right("00" & Hex(bytInputData), 2)
    
End Function

 コンパイルエラーは無くしていますが、実機がないので
これでちゃんと動くかどうかはわかりません。

 なお、通常通信を行うプログラムでは、エラー処理が必要です。
上のサンプルには、エラー処理が含めれませんので自分で追加してください。

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

古いスレッドにレスはつけられません。