【发布时间】:2021-12-27 00:18:45
【问题描述】:
从串口接收到的数据,不正确,有时变了!
if (WaitCommEvent(hSerial, &eventMask, NULL))
{
if (ReadFile(hSerial, &input, 14, &bytesRead, NULL) !=0)
{
for (int i = 0; i < sizeof(input); i++)
{
cout << hex <<(int)input[i]<<endl;
}
}
else
{
cout << "error reading file\n";
}
}
else
{
cout << "error waiting for comm event\n";
}
数据是:
50
ffffffaf
0
e
2
42
2
b
d
0
1
1
50
ffffffe5
当我使用 Pyserial 获取数据时,数据是:
50AF000E0242020B0D00010150E5
如您所见,我得到了额外的 'ffffff' 并错过了一些 '0'!而且因为遗漏了数据,有时'af'变成了'2f'!
我的代码有什么问题吗?
【问题讨论】:
-
你为什么忽略
bytesRead? -
猜猜当你把一个值为0xAF的
char转换成(int)时会发生什么?不,您不会获得带有 0xAF 的int值。 -
如果
input是char数组,请尝试将其声明为unsigned char数组。例如:unsigned char input[32]; -
bytesRead 应该怎么做?永远是 14 岁!
-
我使用 (int) 使其可读,否则显示的数据类似于 »♫☻
标签: c++ winapi serial-port