タイトル : 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 コンパイルエラーは無くしていますが、実機がないので これでちゃんと動くかどうかはわかりません。 なお、通常通信を行うプログラムでは、エラー処理が必要です。 上のサンプルには、エラー処理が含めれませんので自分で追加してください。 |