2013-04-30 33 views
1

我有一個具有串行端口的GPS,並且具有從串口到USB的傳輸線,並且知道它通過USB連接到筆記本電腦。它以十六進制發送日期。我想在ubuntu C++的代碼中使用這個日期。任何想法,我可以開始,我怎麼可以設法讀取數據?使用C++在Ubuntu中將數據從串口讀取到USB中

+1

看到這個堆棧溢出設置連接http://stackoverflow.com/questions/5347962/how-to-connect-to-a-terminal-to-serial-usb-device-on-ubuntu- 10-10 – 2013-04-30 13:18:34

+0

然後這一個在閱讀和寫設備http://stackoverflow.com/questions/5014451/reading-and-writing-to-from-serial-device-via-usb-on-linux-with- perl-or-php – 2013-04-30 13:19:19

+0

您可以通過發佈GPS的確切製造商和型號來幫助我們。 – dbasnett 2013-04-30 13:30:50

回答

3

通過打開文件(fstream,FILE *或OS句柄)到「/ dev/ttySn」開始,其中n是設備的編號。然後閱讀。

std::string str; 
fstream f; 
f.open("/dev/ttyS0"); 
while (f >> str) 
{ 
    cout << str; 
} 

應該「回聲」走出ttyS0形式的內容 - 當然,可能是「錯誤」的端口爲您的設備,但如果你知道它連接,是應該做的工作。您可能還需要設置端口的配置,例如使用stty命令 - 波特率將是最重要的,因此像stty -F /dev/ttyS0 19200這樣的設置將波特率(實際上是比特率)設置爲每秒19200位。大多數其他參數是可能的。

+0

編輯我的答案... – 2013-05-02 11:18:03

+0

謝謝。我有第二個問題,我怎麼知道設備的端口? – Zeyad 2013-05-05 00:02:56

+0

我不知道。嘗試查看'dmesg'或其他內容來查找當你插入USB串行端口時內核給出的端口。 – 2013-05-05 07:21:13

0
#include <iostream> 
#include <fstream> 

int main() { 
    std::string str; 
    std::fstream f; 
    f.open("/dev/ttyS0"); 
    while (f >> str) 
    { 
     std::cout << str; 
    } 
} 

這是一個工作片段。當我有這個問題時,我努力尋找所需的include語句和正確的名稱空間。

這個答案是基於墊皮特森的回答

編輯:這將是作爲墊皮特森的回答評論更合適。註釋可以是:

#include fstreamfstream#include iostreamstringcoutfstream的命名空間和coutstd」。