虚拟串口的搭建
参考Linux下添加虚拟串口,接收和发送数据
com.py文件代码如下:
import pty
import os
import select
def mkpty():
master1, slave = pty.openpty()
slaveName1 = os.ttyname(slave)
master2, slave = pty.openpty()
slaveName2 = os.ttyname(slave)
print '/nslave device names: ', slaveName1, slaveName2
return master1, master2
if __name__ == "__main__":
master1, master2 = mkpty()
while True:
rl, wl, el = select.select([master1,master2], [], [], 1)
for master in rl:
data = os.read(master, 128)
if master==master1:
print "read %d data:" % len(data)
print data
else:
print "to write %d data:" % len(data)
print data.strip()
os.write(master1, data.strip())
增加两个虚拟串口,一个可以读取串口数据,一个可以写串口数据。
使用下列命令,可以发送数据到串口(20为新增串口号,为随机生产):
mykylin@ubuntu:~/Desktop$ cd /dev/pts/
mykylin@ubuntu:/dev/pts$ echo 123 > 20
图形界面的串口工具安装
$ sudo apt-get install cutecom
$ cutecom
用上面的命令,就可以安装和启动它了。
然后,便可以在图形界面下,选择串口和设置参数(波特率,数据位,校验位);
然后,就可以打开设备(Open Device),然后,就可以收发数据了!Device处选择/dev/pts/串口号。
ROS实现串口通信
import rospy
import std_msgs.msg
from geometry_msgs.msg import Twist
import serial
import time
import threading
ser = serial.Serial(port='/dev/pts/21', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=2,rtscts=True,dsrdtr=True)
time.sleep(1)
pub = rospy.Publisher('serial_data_odom', Twist, queue_size=1)
rospy.init_node('serial_data_contral', anonymous=True)
rate = rospy.Rate(20)
while not rospy.is_shutdown():
ser.write('10086')
rate.sleep()
这里代码并不完整,主要是看下串口的实例化方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)