c++ - 从标头开始读取串行数据
问题描述
我正在读取作为 29 字节数组发送的连续串行数据,其中第一个字节是标头作为 oxD1 的值。
如何从 Header 开始选择缓冲区中的数据。
这是我的代码。
int SerialPort::readSerialPortFreedPacket(BYTE *buffer, unsigned int
buf_size)
{
DWORD bytesRead;
int timeout = 500;
OVERLAPPED ovread = { 0 };
ovread.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (ovread.hEvent == NULL) {
// Error creating overlapped event; abort.
return FALSE;
}
if (!ReadFile( this->handler , (void*)buffer, 29, &bytesRead, &ovread)) {
if (GetLastError() != ERROR_IO_PENDING) {
// Handle error in communications
std::cout << "Error reading data " << std::endl;
}
else {
DWORD ret = WaitForSingleObject(ovread.hEvent, timeout);
switch (ret) {
case WAIT_OBJECT_0:
// HandleASuccessfulRead(buf, bytesRead);
std::cout << buffer << std::endl;
break;
case WAIT_TIMEOUT:
// Handle timeout
break;
case WAIT_FAILED:
// Handle failure
break;
default:
// what else to handle?
break;
}
}
}
else {
// read completed immediately
//HandleASuccessfulRead(buf,bytesRead);
}
return 0;
}
解决方案
推荐阅读
- visual-studio-code - 无法使用挂载卷在 WSL 中构建 .Net Core
- google-chrome-extension - 从 Chrome 扩展程序调用 API 时无响应
- tdd - 如何使用公开 API 并与数据库对话的应用程序练习高效的 TDD
- android - 我不能使用颜色值来设置布局的背景
- c++ - 如何从输入字符串中提取特定位置的字符?
- pdf - PDF Unicode 文本编码不正确
- javascript - 为什么 create-react-app 不使用箭头函数组件?
- android - 这是什么Android视图?
- java - 如何在java控制台程序中初始化字符串变量?
- python - IndexError:列表分配索引超出范围。我该如何解决这个问题?