簡體   English   中英

Libserial Open()在我的C ++程序中凍結

[英]Libserial Open() freezes in my C++ program

基本上,我有一個非常簡單的C ++程序,試圖打開一個串行端口(實際上是USB-> RS232轉換器,應該由libserial支持),但是代碼會凍結在Open()上。 沒有錯誤,沒有例外,什么也沒有,它什么都不做。 除此特定端口外,它似乎可以在其他串行端口上運行。 串行端口也可以與cutecom和其他終端一起使用(並且任何其他程序都不保留)。 我嘗試在打開端口之前和之后進行配置,但這似乎無關緊要。 在libserial的(相當糟糕的)文檔或標頭中,我也看不到任何有關握手的信息,也許它正在等待握手之類的東西,我不知道... Libserial0版本0.6.0和Ubuntu 10.10。 怎么了,還是我該怎么調試...? 是否有其他建議的庫/方式將串行端口與C ++一起使用?

#include <SerialStream.h>
#include <iostream>

int main() {

 LibSerial::SerialStream device_;

 device_.SetBaudRate(LibSerial::SerialStreamBuf::BAUD_9600);
 device_.SetCharSize(LibSerial::SerialStreamBuf::CHAR_SIZE_8);
 device_.SetNumOfStopBits(1);
 device_.SetParity(LibSerial::SerialStreamBuf::PARITY_NONE);
 device_.SetFlowControl(LibSerial::SerialStreamBuf::FLOW_CONTROL_NONE);

 device_.Open("/dev/ttyUSB1");

}

幾年前,當我不得不將控制接口寫入調制解調器以允許通過RS-232進行遠程控制時,我看着libserial。 最后,我使用了Boost的ASIO實現來利用串行端口。

不知道Boost.ASIO是否會為您工作。 但是根據我的經驗,我還沒有掛在我身上。

我還使用USB串行轉換器(pl2303)發現了此問題。 看來設置VTime可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM