[英]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.