我正在尝试使用 readfile 函数读取 C++ 中的串口。我设法打开并读取 C++ 中的串口。我现在面临的问题是从串口读取数据后的解码。以下是我的代码。当我运行我的代码时,我的解码循环无法检测到 ((*&szChar == '$')),它通过打印错误退出循环。我可以知道如何解码从串行端口读取的 gps 数据吗?谢谢
char szChar[100];
int nRet;
DWORD dwBytesRead = 10;
char ReadBuffer[BUFFERSIZE] = {0};
nRet = ReadFile(hCom,&szChar,BUFFERSIZE-1,&dwBytesRead,NULL);
if((*&szChar == '$'))
{
printf("%s\n", &szChar);
}
else
{
printf("error\n");
最佳答案
我不得不说,我发现您的代码相当令人困惑。例如,您将 szChar
创建为 100 个 char
的数组,将 ReadBuffer
创建为 BUFFERSIZE
的数组> 字符
。但是,当您调用 ReadFile
时,您将传递大小为 BUFFERSIZE
的 szChar 的基址。除非出于某种巧合,BUFFERSIZE
恰好等于 100,否则这看起来很像潜在的缓冲区溢出。
然后我们到达*&szChar
。这也没有多大意义。从外观上看,您可能需要 szChar[0]
—— 但即便如此,这也不是一个好主意,因为您可能无法以精确的行大小的片段接收数据。因此,您可能想要扫描数据以找到“$”。
int Ret;
DWORD BytesRead;
char ReadBuffer[BUFFERSIZE] = {0};
Ret = ReadFile(hCom,ReadBuffer,sizeof(ReadBuffer)-1,&BytesRead,NULL);
ReadBuffer[BytesRead] = '\0';
if (ReadBuffer[0] == '$')
printf(%s\n", ReadBuffer);
else
printf("error\n");
关于c++ - 使用读取文件功能解码串行 GPS 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4181871/