我有一個設備,/ dev/ACMTTY0它流數據;或者說,現在,隨機整數0 - 100.從串行設備讀取數據到數組C++
設備/ 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;
}
我可以讀取我的假數據(文件)就好。
你需要通過編寫代碼來啓動。如果您使用該代碼提出具體問題,請將其發佈到此處。 – 2014-10-04 13:35:29
除了其他任何事情,你的協議沒有被充分指定。漂浮在什麼格式?我懷疑是ASCII文本表示法,但這並不明確。打開設備並嘗試讀取它,即。按照@JohnZwinck的建議編寫一些代碼。 – 2014-10-04 13:51:50
「有爭議」還是「連續」? – 2014-10-06 16:54:11