Mac下使用Boost通過程式與stm32通訊

2021-10-05 13:32:49 字數 1965 閱讀 2727

mac系統下使用boost通過程式與stm32通訊

簡單來說:

下面的**實際上是乙個例子,但是你不一定能跑通,因為

寫這篇部落格的重點是

boost庫很簡單,完全理解下面的幾行**,你可以自己編寫整個工作

完成通訊所需步驟就三步:

開啟串列埠

讀取串列埠返回的資料

向串列埠寫下固定資料

上**

#include #include #include int main(int argc, char** ar**)

sp.set_option(boost::asio::serial_port::baud_rate(115200)); // 設定波特率

sp.set_option(boost::asio::serial_port::flow_control(boost::asio::serial_port::flow_control::none));

sp.set_option(boost::asio::serial_port::parity(boost::asio::serial_port::parity::none));

sp.set_option(boost::asio::serial_port::stop_bits(boost::asio::serial_port::stop_bits::one));

sp.set_option(boost::asio::serial_port::character_size(8));

std::string strcompletemsg;

boost::asio::streambuf content_sb;

int bytes = 0;

int readstart = 0;

int status = 0;

int turn_times = 0;

while(turn_times < 3) // 一共轉3次

{bytes += boost::asio::read(sp, content_sb, boost::asio::transfer_exactly(1), ec); // 每次唯讀乙個位元組

boost::asio::streambuf::const_buffers_type cont_bufs = content_sb.data();

strcompletemsg = std::string(boost::asio::buffers_begin(cont_bufs)+readstart, boost::asio::buffers_end(cont_bufs));

if (strcompletemsg.find("please input angle to turn") != std::string::npos && status ==0)

{std::cout<程式輸出(此內容會重複三次)

please input angle to turn

10.000000

your order angle is:

10.000000

turn over! success!

**解釋

stm32會傳送「please input angle to turn」,等待上位機傳送角度

上位機傳送角度後,stm32會列印這個角度,表示收到命令

上位機控制電機旋轉成功後,會列印「turn over! success!」,並會再次傳送「please input angle to turn」

執行報錯

libc++abi.dylib: terminating with uncaught exception of type boost::wrapexcept: open: no such file or directory

abort trap: 6

原因:你要使用的串列埠,正在被另外乙個程式占用

解決方案:關掉占用串列埠的程式

Mac下安裝並使用Boost 解決方案

2 安裝好後,開啟終端 sudo port install boost 會幫你安裝好最新版本的boost 當前是1.58版本最新 3 建立乙個a.cpp檔案,寫上如下 include include include include int main 4 在終端編譯這個c 檔案 g i opt loc...

Mac下通過Homebrew安裝MySQL

安裝完成之後,安裝其他的軟體就特別方便了。執行 brew install mysql等成功安裝完成,結果想要登入的時候報了個錯誤 error 2002 hy000 can not connect to local mysql server through socket tmp mysql.sock ...

Mac下通過Homebrew安裝MySQL

安裝完成之後,安裝其他的軟體就特別方便了。執行 brew install mysql等成功安裝完成,結果想要登入的時候報了個錯誤 error 2002 hy000 can not connect to local mysql server through socket tmp mysql.sock ...