如果我使用VB6通过WriteFile
(串行通信(发送字符串(字符(a
,则接收方将获得97
(读取字节(,这是a
的Dec值。
现在我想让接收方获得0-255的字节值。
这很容易得到一些结果,比如:
发送字符串a
,得到字节97
。发送字符串z
,得到字节122
。但是如何让receive得到字节值CCD_ 9或CCD_?
我怎样才能意识到这一点?我找到了vb6cbyte
函数,但它似乎无法正常工作。非常感谢。
这是我的当前代码:
发送端(vb6(:
'this send the character "a"
call send_string(handle, "a")
Sub send_string(ByVal handle_connect As Long, ByVal s As String)
WriteComm handle_connect, StrConv(s, vbFromUnicode)
End Sub
Function WriteComm(ByVal hComm As Long, BytesBuffer() As Byte) As Long
Dim dwBytesWrite
If SafeArrayGetDim(BytesBuffer) = 0 Then Exit Function
WriteFile hComm, BytesBuffer(0), UBound(BytesBuffer) + 1, dwBytesWrite, 0
WriteComm = dwBytesWrite
End Function
接收端(arduino(:
void setup() {
Serial.begin(115200);
}
void loop() {
if (Serial.available()) {
Serial.println(Serial.read()); //this print the byte received
}
}
如果您真正想要的是发送数值,我不知道为什么代码必须以字符串作为输入。但假设是这种情况,您可能可以使用Chr()
函数将其他值编码为单个字符。
问题是关于0或1…所以你可以这样做:
s = Chr(0)
send_string handle, s
由此,s
将是一个字符串。它不会包含可打印字符(ASCII中的0不代表任何字母、数字、标点符号等(,但这无关紧要。
Chr
对于值0-255应该可以正常工作。
文档