簡體   English   中英

如何使用boost :: asio :: serial_port支持硬件流控制?

[英]How do I use boost::asio::serial_port support for hardware flow control?

我正在使用Boost的asio :: serial_port庫與虛擬串行端口(FTDI芯片)進行通信。 我想使用硬件流控制(即RTS / CTS),但我似乎找不到關於如何將它與Boost一起使用的文檔。 我得到的代碼是:

serialPort.set_option(boost::asio::serial_port::
flow_control(boost::asio::serial_port::flow_control::hardware));

有了這條線,程序將無法運行。 它說:

libc++abi.dylib: terminate called throwing an exception
Abort trap: 6

如果我將...flow_control::hardware更改為...flow_control::software...flow_control::none ,串口工作正常(但顯然沒有硬件流控制)。 我花了很多時間尋找關於此的任何文檔,但沒有找到任何文檔。 有誰知道如何使用Boost進行流量控制,或者知道記錄的位置? 我在Mac OS 10.8.2上使用Fink的Boost。 謝謝!

這是一個舊的鏈接,但考慮到它是谷歌搜索串行數據的兩個不同的搜索項目,我覺得它需要一個答案。

這條線本身不是問題。 由於在錯誤的時間調用函數,問題可能是拋出的異常。

信不信由你,你需要先打開端口,然后設置流量控制。 上面的行不能全面了解何時相對於其他行調用行。 將設置選項放在端口打開后,它應該可以工作。

還有一個set_option版本,它將boost :: system_error作為參數。 如果由於某種原因它不起作用,該版本將返回錯誤。 如果你不使用帶有system_error參數的版本,那么你應該包裝一個能夠並且將在try / catch塊中拋出異常的函數。

此外,終止是由於未處理的異常(編碼問題),因此終止時的神秘異常。 如果您處理異常,異常本身將指向串行配置問題(運行時問題),可能缺少設置它的權限或端口未打開,因此RTS可用性驗證失敗等。

暫無
暫無

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

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