を入力してください。InputMode = comInputModeText
を設定しているので、ASCII部分を読み取ることができます。その代わりにInputMode = comInputModeBinary
と設定します。
は、すでに述べたように、この関数を宣言し、別の答えで述べた:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long)
レッツは、あなたのinput
ような受信バッファを言う:
Dim buf(0 To 10) As Byte
' receiving...
buf(0) = &H62
buf(1) = &H69
buf(2) = &H6E
buf(3) = &H61
buf(4) = &H72
buf(5) = &H79
buf(6) = &H8
buf(7) = &HD0
buf(8) = &HF
buf(9) = &H49
buf(10) = &H40
あなたの最初の値が6バイトの長さとすることができますそれをStringに変換すると、2番目の値は1バイトになります。したがって、バイトに変換できます(整数またはLongに変換できます)。あなたの誕生値は4バイトの長さなので、1つに収まるでしょう。
Dim t as String, b As Byte, s As Single
t = StrConv(LeftB(buf, 6), vbUnicode)
Call CopyMemory(VarPtr(b), VarPtr(buf(6)), 1)
Call CopyMemory(VarPtr(s), VarPtr(buf(7)), 4)
Debug.Print t, b, s ' will print binary 8 3,14159
バイナリとして扱うだけで、ASCIIはバイナリバイト値の一般的なケースです。 Googleの "vb6をシングルバイトに変換する"、たくさんのヒットがあります。 –
'InputMode = comInputModeText'を設定しましたか? – deblocker