真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

boost-串口通信

備忘使用。

你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事網(wǎng)站制作、成都網(wǎng)站制作、企業(yè)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)建站擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺設(shè)計(jì)專才。

  1. #include  
  2. #include  
  3. #include  
  4. using boost::asio::io_service; 
  5. using boost::system::error_code; 
  6. using boost::asio::serial_port; 
  7. using boost::asio::deadline_timer; 
  8. using boost::asio::buffer; 
  9.  
  10. class MyCom 
  11. public: 
  12.     MyCom(void) 
  13.     { 
  14.         _pSerialPort= new serial_port(_ios); 
  15.      _pTimer = new deadline_timer(_ios); 
  16.     } 
  17.     ~MyCom(void) 
  18.     { 
  19.         if (_pTimer != NULL) 
  20.         { 
  21.          delete _pTimer; 
  22.          _pTimer = NULL; 
  23.         } 
  24.         if (_pSerialPort != NULL) 
  25.         { 
  26.          delete _pSerialPort; 
  27.          _pSerialPort = NULL; 
  28.         } 
  29.     } 
  30.     void Open(const string& comName); 
  31.     { 
  32.         _pSerialPort->open(comName); 
  33.         _pSerialPort->set_option(serial_port::flow_control(serial_port::flow_control::none));   //流量控制為none 
  34.         _pSerialPort->set_option(serial_port::parity(serial_port::parity::none));   //奇偶檢驗(yàn)為none 
  35.         _pSerialPort->set_option(serial_port::stop_bits(serial_port::stop_bits::one));  //停止位為1 
  36.         _pSerialPort->set_option(serial_port::character_size(8));   //字符大小(數(shù)據(jù)位)為8 
  37.         _pSerialPort->set_option(serial_port::baud_rate(115200));//波特率 
  38.     } 
  39.     void Send(const string& data) 
  40.     {//同步發(fā)數(shù)據(jù) 
  41.         _mutex.lock(); 
  42.         _pSerialPort->write_some(buffer(data, data.size())); 
  43.         _mutex.unlock(); 
  44.     } 
  45.     string Recv() 
  46.     {//異步收數(shù)據(jù) 
  47.         _mutex.lock(); 
  48.         memset(_buf, 0, sizeof(_buf)); 
  49.         _pSerialPort->async_read_some(buffer(_buf, 256),  
  50.          boost::bind(&MyCom::RecvHandle, this,  
  51.          boost::asio::placeholders::error,//傳送錯(cuò)誤碼 
  52.          boost::asio::placeholders::bytes_transferred//傳送字節(jié)數(shù) 
  53.             )); 
  54.         _mutex.unlock(); 
  55.         _pTimer->expires_from_now(boost::posix_time::millisec(SLEEP_TIME)); 
  56.         _pTimer->async_wait(boost::bind(&serial_port::cancel, _pSerialPort)); 
  57.         _ios.run();//異步情況下使用詞句才開始執(zhí)行 
  58.         _ios.reset();//還原狀態(tài) 
  59.         return string(_buf, _ret); 
  60.     } 
  61.     void Close() 
  62.     { 
  63.         _mutex.lock(); 
  64.         if (_pSerialPort->is_open()) 
  65.          _pSerialPort->close(); 
  66.         _mutex.unlock(); 
  67.     } 
  68.  
  69. protected: 
  70.     void RecvHandle(const error_code& error, size_t bytes_transferred) 
  71.     { 
  72.         if (!error) 
  73.          _pTimer->cancel();//沒有錯(cuò)誤就結(jié)束定時(shí)器 
  74.         _ret = bytes_transferred; 
  75.     } 
  76.  
  77. private: 
  78.     boost::asio::io_service _ios; 
  79.     serial_port* _pSerialPort; 
  80.     deadline_timer* _pTimer; 
  81.     char _buf[256]; 
  82.     size_t _ret; 
  83.     boost::mutex _mutex; 
  84. }; 

 

 

 

 


本文標(biāo)題:boost-串口通信
文章來源:http://weahome.cn/article/jgccis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部