【发布时间】:2014-10-04 13:31:04
【问题描述】:
我有一个设备 /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;
}
我可以很好地读取我的假数据(文件)。
【问题讨论】:
-
你需要从写代码开始。如果您对该代码遇到具体问题,请在此处发布。
-
除此之外,您的协议没有充分指定。以什么格式浮动?我怀疑是 ASCII 文本表示,但这并不清楚。打开设备并尝试从中读取,即。按照@JohnZwinck 的建议编写一些代码。
-
“有争议地”还是“持续地”?
标签: c++ arrays stream serial-port