ubantu系统中使用ros接受uwb串口数据(基于python)

前言

        这两条在搞基于ros的uwb定位系统,需要在ubantu系统中接受uwb装置的数据,所以写这篇文字记录一下。

在ubantu中查看新加入端口 

我们将uwb的usb接口插入电脑,之后打开ubantu的终端,输入下面的指令,可以查看新增端口口。

dmesg | grep ttyS* 

开放端口权限

打开了端口之后,我们如果使用python直接读取,回报错没有权限,所以我们现在要给他开启权限,需要使用下面的代码。

sudo chmod 777 /dev/ttyUSB0

书写python代码接受端口数据

#! /usr/bin/env python
##指定解释器
import rospy
import serial
import time
if __name__ == '__main__':
    rospy.init_node("Hello")
    #输出日志信息
    rospy.loginfo("Hello World!!!!")

    serial_port = serial.Serial(
    port='/dev/ttyUSB0',
    baudrate=115200,
    bytesize=serial.EIGHTBITS,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
)
    data_list = []
    start_flag = 0
    time.sleep(1)
    while True:
        if serial_port.inWaiting() > 10:
            data = serial_port.read()
            data = data.decode('utf-8')
            if data =='m':
                start_flag = 1
            if start_flag==1:
                data_list.append(data)
            # print(data,end='')
            if data == "\n" and start_flag==1:
                print("".join(data_list))
                start_flag = 0
                data_list.clear()  #清空列表

一些其他收获

1.串口直接读如的数据打印出来前面会带个b,为了清除这个b,我需要使用下面这个代码进行解码,解码之后,读如的就是正常的字符了

data = data.decode('utf-8')

2.我要直接接受一个数据包,之后将这个数据包打印出去,我做法是每收到一个字节,就将这个字节加入到一个列表中,最后打印出来的这个列表并不是我们想要的,他还是一个字符一个字符的,并不是一个字符串,我们需要将列表转换成字符串,代码如下。

data_bao = ''.join(data_list)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值