gpt4 book ai didi

c++ - 从串行设备读取数据到数组 C++

转载 作者:行者123 更新时间:2023-11-28 06:39:37 25 4
gpt4 key购买 nike

我有一个设备/dev/ACMTTY0 可以传输数据;或者更确切地说,现在是随机整数 0 - 100。

设备/dev/ACMTTY0 持续流式传输。

但是,我仍然不知道如何在 C++ 中将串行数据流读入数组(正确地)现在,我正在尝试将它发送到屏幕上,以便我可以看到发生了什么。当我运行我的程序时,会发生以下情况,我得到一些可能有效的数字,我得到一些 -1,然后程序在随机点退出。我打算它在 EOF 时退出,但它在此之前退出? EOF 适用于流吗?

sudo ./getc /dev/ttyACM0 
53
50
10
56
-1
-1

无论如何,我不应该得到 -1,所以我不知道那是什么。此外,数字仍在流式传输。所以我不明白为什么程序退出。对于更奇怪的行为,程序可能会在退出前流式传输数百个数字,或者可能流式传输 2。

我这里有什么地方做错了吗?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>
#include <iostream>
int main (int argc, char ** argv)
{
using namespace std;

FILE * pFile = NULL;
int c = 0;
pFile = fopen(argv[1], "r");
// pFile=fopen ("fake.dat","r");
if ( !(pFile = fopen(argv[1], "r")) ) {
std::cout << argv[1] << " Couldn't open serial port for communication.\n";
exit(EXIT_FAILURE);
}

if (pFile == NULL) perror ("Error opening file");
else
{
do {
c = getc (pFile);
std::cout << c << "\n";
} while (c != EOF);
fclose (pFile);
std::cout << c << "\n";
//sleep(2);
}
return 0;
}

我可以很好地读取我的假数据(文件)。

最佳答案

您像读取文件一样读取设备并解析它。让我们假设流:

$1,2,3,4...$4,5,6,7

$ 是你的哨兵角色。在看到 $ 之前您不能做任何事情,所以只需丢弃任何前导数字。然后你会反复寻找下一个逗号,找出数字并自动生成它们。自然地,您会在 $ 处将热电偶编号重置为零,并在每个逗号处递增它。如果你幸运的话,atoi 不会提示逗号,所以你甚至不需要在 atoi-ing 之前将数字复制到其他任何地方,但我不确定。

关于c++ - 从串行设备读取数据到数组 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com