精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ROS與STM32串口通信代碼

麥辣雞腿堡 ? 來源:古月居 ? 作者:月照銀海似蛟龍 ? 2023-11-17 18:10 ? 次閱讀

這里以一個智能車代碼工程為例,抽取串口通信部分代碼

在頭文件中,進行串口頭文件的包含

#include < serial/serial.h >

在類的定義中,什么一個 serial 類的實例

serial::Serial Stm32_Serial;  //聲明串口對象

并且在類的定義中,聲明兩個結構體,用來存儲接收和要發送的數據

RECEIVE_DATA Receive_Data; //The serial port receives the data structure //串口接收數據結構體
SEND_DATA Send_Data;       //The serial port sends the data structure //串口發送數據結構體

在類的構造函數中,配置這個串口對象的參數

private_nh.param< std::string >("usart_port_name",  usart_port_name,  "/dev/stm32_controller"); //Fixed serial port number //固定串口號
  private_nh.param< int >        ("serial_baud_rate", serial_baud_rate, 115200); //Communicate baud rate 115200 to the lower machine //和下位機通信波特率115200

這兩個參數是在launch文件中設置的,代碼里進行參數的讀取。

usart_port_name 設置的USB設備別名

serial_baud_rate 串口通信的波特率要和stm32設置的一致

try
  { 
    //Attempts to initialize and open the serial port //嘗試初始化與開啟串口
    Stm32_Serial.setPort(usart_port_name); //Select the serial port number to enable //選擇要開啟的串口號
    Stm32_Serial.setBaudrate(serial_baud_rate); //Set the baud rate //設置波特率
    serial::Timeout _time = serial::Timeout::simpleTimeout(2000); //Timeout //超時等待
    Stm32_Serial.setTimeout(_time);
    Stm32_Serial.open(); //Open the serial port //開啟串口
  }
  catch (serial::IOException& e)
  {
    ROS_ERROR_STREAM("car_robot can not open serial port,Please check the serial port cable! "); //If opening the serial port fails, an error message is printed //如果開啟串口失敗,打印錯誤信息
  }

初始化串口配置,并開啟串口

設置的參數包括:

  • 要開啟的串口號
  • 設置波特率
  • 超時等待

判斷串口是否被打開,打開輸出終端打印信息

if(Stm32_Serial.isOpen())
  {
    ROS_INFO_STREAM("car_robot serial port opened"); //Serial port opened successfully //串口開啟成功提示
  }

ROS主控讀取stm32發送的數據

之后便可以通過

Stm32_Serial.read(Receive_Data_Pr,sizeof(Receive_Data_Pr));

read函數讀取串口接收到的字節,之后通過定義的通信協議再進行和校驗與數據解析即可stm32向ROS主控發送數據。

ROS主控向stm32發送數據

ROS主控向stm32發送數據的代碼如下:

將之前定義的發送數據的結構體 Send_Data的tx 中填入要發送的字節

Send_Data.tx[0]=FRAME_HEADER; //frame head 0x7B //幀頭0X7B
 Send_Data.tx[1] = 0; //set aside //預留位
 Send_Data.tx[2] = 0; //set aside //預留位

填好字節后,直接通過下面代碼發送即可

try
  {
    Stm32_Serial.write(Send_Data.tx,sizeof (Send_Data.tx)); //Sends data to the downloader via serial port //通過串口向下位機發送數據 
  }
  catch (serial::IOException& e)   
  {
    ROS_ERROR_STREAM("Unable to send data through serial port"); //If sending data fails, an error message is printed //如果發送數據失敗,打印錯誤信息
  }
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16212

    瀏覽量

    177455
  • STM32
    +關注

    關注

    2266

    文章

    10875

    瀏覽量

    354898
  • 智能車
    +關注

    關注

    21

    文章

    402

    瀏覽量

    76914
  • ROS
    ROS
    +關注

    關注

    1

    文章

    276

    瀏覽量

    16967
收藏 人收藏

    評論

    相關推薦

    求大佬分享STM32串口通信配置源代碼分享

    求大佬分享STM32串口通信配置源代碼分享
    發表于 12-10 06:46

    如何完成ROSSTM32之間的串口通信

    如何去實現ROSSTM32串口通信測試功能?如何完成ROSSTM32之間的
    發表于 12-10 06:54

    stm32f407串口通信代碼

    stm32f407串口通信代碼 原理圖還有封裝 很清楚自己畫的
    發表于 03-21 17:22 ?0次下載

    STM32串口通信數據亂碼的相關問題

    STM32串口通信以及溫度采集搞定,其中主要遇到STM32系列單片機時鐘樹的問題,串口通信遇到
    發表于 06-22 08:01 ?1.2w次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>數據亂碼的相關問題

    STM32串口通訊

    STM32串口通訊USART串口通信實踐USART串口通信實踐1、實驗環境參考資料 野火官
    發表于 12-06 20:21 ?13次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>通訊

    STM32串口通信

    STM32串口通信串口通信簡介編程代碼注意:本文參考STM3
    發表于 12-07 09:36 ?15次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    Stm32串口通信基礎實驗

    目錄二、stm32串口通信二級目錄三級目錄二、stm32串口通信1.本次實驗使用的是
    發表于 12-07 09:36 ?32次下載
    <b class='flag-5'>Stm32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>基礎實驗

    初步了解STM32串口通訊

    STM32串口通訊一、基于寄存器與基于固件庫的編程方式的差異二、stm32串口通信實戰1、燒錄代碼
    發表于 12-07 09:51 ?13次下載
    初步了解<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>通訊

    "2個STM32串口之間的串口通信(RX,TX)"

    "2個STM32串口之間的串口通信(RX,TX)"
    發表于 12-09 17:21 ?83次下載
    "2個<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>之間的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>(RX,TX)"

    【嵌入式】STM32串口通信

    【嵌入式】STM32串口通信一、串口通信協議1.串口通信
    發表于 12-20 19:29 ?17次下載
    【嵌入式】<b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    stm32串口代碼詳解

    stm32串口
    發表于 12-24 18:38 ?52次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>串口</b><b class='flag-5'>代碼</b>詳解

    STM32串口通信

    STM32串口通信串口通信簡介編程代碼注意:本文參考STM3
    發表于 01-14 13:47 ?12次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    STM32串口通信簡明知識

    STM32串口通信簡明知識
    的頭像 發表于 10-25 15:48 ?1293次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>簡明知識

    利用Simulink自動生成STM32串口代碼

    功能:利用Simulink自動生成STM32串口代碼,在Keil中編譯后直接下載到主芯片,實現串口通訊的功能。
    的頭像 發表于 10-25 17:04 ?1736次閱讀
    利用Simulink自動生成<b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>代碼</b>

    智能車ROSSTM32串口通信代碼

    這里以一個智能車代碼工程為例,抽取串口通信部分代碼 在頭文件中,進行串口頭文件的包含 # include 在類的定義中,什么一個 seria
    的頭像 發表于 11-26 17:47 ?1136次閱讀