我正在尝试制作一个Windows程序,通过串口(USB模拟COM端口)将数据发送到微控制器。
到现在为止,我用ASCII字符串制作它,但我必须和同学一起工作,告诉我我不必那样做;我必须向串口发送他需要使用的实际字节(他正在编写微控制器,我正在编写Windows界面)。
我总是使用带有ASCII字符串的WriteFile()
,格式为:
WriteFile(handlePort, bufferPort, strlen(buffer_puerto), &nBytes, NULL);
我必须发送一个字节链,如10000001 10010001 0000000 10100001 11101101
。
问题是当WriteFile()
检测到第三个字节00000000
时,它被解释为空字符'\0'
并且不会发送更多字节。
拜托,有人可以帮帮我吗?有没有办法发送所有字节(在第三个00000000
之后)而不丢失任何信息?
除WriteFile()
之外还有其他功能可以做到吗?我该怎么办?
答案 0 :(得分:3)
它不是WriteFile,它的strlen在0停止。你想要:
...
int len = 5;
char bytes[] = {0x81, 0x91, 0x0, 0xa1, 0xed};
WriteFile(handlePort,bytes,len,&nBytes,NULL);
if (len != nBytes) {
error("Not all bytes written!");
}
...
答案 1 :(得分:1)
问题是您正在使用旨在停在零字节的strlen
。 WriteFile
很好;它只需要你告诉它要写入正确的字节数。