91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Boost串口通信 boost::asio::serial_port基本使用

發布時間:2020-07-08 22:25:13 來源:網絡 閱讀:4754 作者:fengyuzaitu 欄目:編程語言

boost庫有一個asio,支持串口通信。
步驟:
  1、產生一個boost::asio::io_service(前攝模式,類似于完成端口,不過,可以針對不同IO對象)
  2、構造一個boost::asio::serial_port,有兩種方法:
      (一)boost::asio::serial_port m_serialPort(m_IoService, "COM1");
      (二)boost::asio::serial_port m_serialPort(m_IoService);
         m_serialPort.open("COM1"); 
注意這種方式打開,如果串口沒有準備好,會導致程序拋異常,導致程序崩潰,所以應該要try{} catch包含,或者使用如下的方式
?boost::system::error_code ec;
?serial_port sp(iosev);
?m_serialPort.open("COM1", ec);
?if (ec)?return;
或者
?try
?{
???????????? boost::asio::serial_port m_serialPort(m_IoService);
         m_serialPort.open("COM1"); s
?}
?catch (exception& err)
?{
?}

  3、設置串口參數:波特率、奇偶校驗 位、停止位、字符大小和流量控制,通過set_option方法 
boost::asio::serial_port::baud_rate   ?? 波特率
boost::asio::serial_port::parity   ???????? 奇偶校驗,可以為serial_port::parity::none / odd / even。
boost::asio::serial_port::flow_control????? 流量控制, 可以為serial_port::flow_control::type,enum類型,可以是none software hardware
boost::asio::serial_port::stop_bits????????? 停止位,??? 可以為serial_port::stop_bits::one /onepointfive /two
boost::asio::serial_port::character_size?? 字符大小
  4、數據讀寫
    read_some
    write_some
   ?? async_read_some
    async_write_some
????? 5、同步讀取例子

?io_service iosev;
?boost::system::error_code ec;
?serial_port sp(iosev);
?sp.open("COM1", ec);
?
?if (ec)?return;
?sp.set_option(serial_port::baud_rate(9600));
?sp.set_option(serial_port::flow_control(serial_port::flow_control::none));
?sp.set_option(serial_port::parity(serial_port::parity::none));
?sp.set_option(serial_port::stop_bits(serial_port::stop_bits::one));
?sp.set_option(serial_port::character_size(8));

?std::string strCompleteMsg;
?boost::asio::streambuf content_sb;
?int bytes = 0;

?while (1)
?{
??strCompleteMsg = "";
??bytes = 0;
??while (strCompleteMsg.find("\r\n") == std::string::npos)
??{
???bytes += boost::asio::read(sp, content_sb, boost::asio::transfer_exactly(1), ec);
???if (ec) break;

???boost::asio::streambuf::const_buffers_type cont_bufs = content_sb.data();
???strCompleteMsg = std::string(boost::asio::buffers_begin(cont_bufs), boost::asio::buffers_begin(cont_bufs) + bytes);
??}
?}


問題

??????? 按照提供的代碼,在阻塞等待時間的過程中,會導致Win10系統崩潰,崩潰的信息如下:
1)第一種情形 終止代碼:DRIVER_IRQL_NOT_LESS_EQUAL
2)第二種情形? wdf01000sys藍屏

解決
1)通過串口轉網卡,連接到串口服務器解決
2)采用Windows的原生接口解決


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南丰县| 十堰市| 新乐市| 醴陵市| 长寿区| 云和县| 伊金霍洛旗| 马尔康县| 安吉县| 阿城市| 措美县| 九台市| 太白县| 固阳县| 岳池县| 连山| 湖州市| 宁乡县| 灌阳县| 石首市| 九寨沟县| 静宁县| 阿合奇县| 石景山区| 金溪县| 鞍山市| 阳泉市| 香港| 外汇| 乐亭县| 兴海县| 监利县| 前郭尔| 华容县| 石楼县| 自治县| 合川市| 阜平县| 壤塘县| 武强县| 新昌县|