シリアル ポートを備えた GPS があり、シリアルから USB への転送ケーブルが付いています。USB 経由でラップトップに接続され、16 進数でデータを送信しています。このデータを Ubuntu の C++ コードで使用したいと考えています。どこから始めて、どうすればデータを読み取ることができるのでしょうか?
2 に答える
まず、ファイル (fstream、FILE *、または OS ハンドル) を「/dev/ttySn」 (n
はデバイスの番号) に開き、読み取ります。
#include <string>
#include <fstream>
#include <iostream>
std::string str;
std::fstream f;
f.open("/dev/ttyS0");
while (f >> str)
{
std::cout << str;
}
それは ttyS0 の内容を「エコー」するはずです - もちろん、それはあなたのデバイスの「間違った」ポートかもしれませんが、それがどこに接続されているかを知っていれば、それは仕事をするはずです. ポートの構成を設定する必要がある場合もあります。たとえば、stty
コマンドを使用すると、ボーレートが最も重要になるためstty -F /dev/ttyS0 19200
、ボーレート (実際にはビットレート) を 19200 ビット/秒に設定します。他のほとんどのパラメーターはおそらく問題ありません。
#include <iostream>
#include <fstream>
int main () {
std::string str;
std::fstream f;
f.open("/dev/ttyS0");
while (f >> str)
{
std::cout << str;
}
}
ここに作業スニペットがあります。この質問をしたとき、必要なinclude
ステートメントと正しい名前空間を見つけるのに苦労しました。
この回答は、Mats Petersson の回答に基づいています
編集:これは、Mats Peterssonの回答へのコメントとしてより適切です。コメントは次のようになります。
"
#include fstream
forfstream
and#include iostream
forstring
and . andcout
の名前空間は."fstream
cout
std