将字节发送到串行端口

时间:2016-05-19 21:57:12

标签: c++ windows api

我正在尝试制作一个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()之外还有其他功能可以做到吗?我该怎么办?

2 个答案:

答案 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)

问题是您正在使用旨在停在零字节的strlenWriteFile很好;它只需要你告诉它要写入正确的字节数。