树莓派相关,下使用虚拟串口进行开发测试

1.  python 工具

OS: ubuntu 16.04

山抛子派的串口默感觉串口终端调节和测量检验使用,如要没有难点使用串口则需求修改沙窝窝派设置。关闭串口终端调节和测验功效后则无法再通过串口登入拜会龙船泡派,需从新开启后本领经过串口调整欧洲红树莓派。

转:

#coding = utf-8

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)
            print "read %d data." %len(data)
            if master == master1:
                os.write(master2, data)
            else:
                os.write(master1, data)

ROS:kinetic

意气风发、设置串口

 

选取办法:

1.安装arduino  sudo apt-get install arduino

要运用那么些串口,必得先实行安装:

地仙泡派是不是可以利用串口呢,答案是自然的 ,以下是具体方法

 

1.木莓派的首先排的第三,四,五个分级,也正是下图的6,8,10八个端口分别是地,TX与ENCOREX,与被接连装置连接起来。注意欧洲红树莓派的TX要连接从设备的凯雷德X,高脚波派的WranglerX要一连欧洲红树莓派的TX图片 1

 

2.三月泡派上独有叁个串口,系统暗中认可将它看作调试口,所以不可能平素当成普通串口举办编制程序和动用,需要先将调节和测量试验口的布置去掉,再利用。此处供给修正两处文件

  2.1  改进      在终极输入如下指令 

[plain] view plaincopyprint?图片 2图片 3

  1. sudo nano /boot/cmdline.txt  

    sudo nano /boot/cmdline.txt

      展开后将革命部分删除

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

      删除后,形成如下结果保存退出

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

 

 2.2  修改 /etc/inittab

   在终点输入如下指令 

[plain] view plaincopyprint?图片 4图片 5

  1. sudo nano /etc/inittab  

    sudo nano /etc/inittab

  张开后将最终大器晚成行注释掉 在前边加上二个#号即可

 #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

 

 

3.矫正完结后,须求在欧洲红树莓派上设置多个minicom,这里的minicom是Linux平台的串口调节和测量检验工具,也正是Windows上的串口调节和测量检验帮手

   3.1  安装minicom,输入以下命令

 

[plain] view plaincopyprint?图片 6图片 7

  1. sudo apt-get install minicom  

    sudo apt-get install minicom

 

   

  3.2  安装收尾后需求对minicom举办安排,此处配置文件必要root权限,不然不能保存配置的参数,那么在命令行中输入如下命令

 

[plain] view plaincopyprint?图片 8图片 9

  1. sudo passwd root  

    sudo passwd root

   实行此命令后系统会提示输入一遍的root密码,输入你想设的密码就可以,然后在奉行

 

 

[plain] view plaincopyprint?图片 10图片 11

  1. sudo passwd --unlock root  

    sudo passwd --unlock root

   那样就解锁了root账户

 

 

  3.3  切换成root账户,再度展开命令行,输入minicom参数配置命令

 

[plain] view plaincopyprint?图片 12图片 13

  1. minicom -s  

    minicom -s

    在主菜单的第三项Serial Port Setup,进入下一流菜单,依照菜单项的升迁字母选取,按A将串口设备纠正为  /dev/ttyAMA0

 

   ,按E将Porter率修改为9600要么本身须要的数值,设置好现在回到主菜单,选择Save Setup as Dfl 

    然后选用Exit,此时只要不奇怪的话就能够展开串口收发了,这里自个儿的欧洲糙莓派是接连到风姿洒脱台PC上去的,作者动用PC的串口调节和测验软件成功进行了收发

 

   tips: 按CT奥德赛L A,接着按Z能够查阅minicom的帮带

  运转:在尖峰里运营“python mkptych.py&”,那样就能够生成叁个依据pty(伪终端)的设想端口对,七个器材名会展现在极端里。然后就能够使用那五个设备名在本机上扩充假造串口之类的调度。

2.安装ros包  sudo apt-get install ros-kinetic-rosserial-arduino

1.推行如下命令步向悬钩子派配置

  关闭:使用完后用ps查看那几个python进度的pid号,然后kill掉就可以。

sudo apt-get install ros-kinetic-rosserial

sudo raspi-config

图片 14

3.设置arduino的SketchBook,将ros_lib弄进来,关于SketchBook的文件目录,在File->Preferences

慎选Advanced Options->Serial ->no关闭串口调节和测量试验功用

 

图片 15

2.修改/boot/cmdline.txt

2.  Ubuntu下 cutecom 图像分界面串口调节和测验工具(参照他事他说加以侦察:

也得以和谐定义该目录.

输入上边发号施令:

  (1)终端下载命令:sudo apt-get install cutecom 

cd <sketchbook>/libraries 如果没有libraries目录,自己创建这个目录就可以啦,如果里面已经包含ros_lib目录,请使用rm -rf ros_lib ,防止发生冲突.

rosrun rosserial_arduino make_libraries.py .   用来生成ros_lib库,(注意使用.,当前目录)

sudo nano /boot/cmdline.txt

  (2)通过极端展开软件:sudo cutecom (供给root权限,不然不能展开串口)

图片 16

删去划线斜体部分:

  (3)在 Device 中填入上目生成的设想串口号  /dev/pts/24   和   /dev/pts/25,  Input  中输入文字 ,点击回车发送测量试验

 

dwc_otg.lpm_enable=0console=ttyAMA0,115200 kgdboc=ttyAMA0,115200console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

图片 17

 由于ubuntu下截图不怎么好用,就用了官方网站的图,道理是相像的。能够依据那么些demo来构建ardunio下的节点,和劳动。

聊起底产生

 

至于arduino IDE的串口链接,在 Tools->Serial Port下,选材/dev/ttyACM×(× 大概是0,1,2,3...卡塔尔(英语:State of Qatar)

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

3.  python 编写测验程序

关于brltty和Arduino之间冲突,但在unbuntu 16.04下没什么影响,在Tools->Serial Port 依旧得以见到/dev/ttyACM*,何况成功烧入。

3.修改/etc/inittab

  (参考   ,

实际不是自然要卸载brltty,这一个自家感到要实际试过才方可如此说.

输入下边发号出令:

  (1)1.安装pyserial(安装 serial module)

rosrun rosserial_python serial_node.py /dev/ttyACM* 用来启动rosserial节点。

跑的时候,如果arduino 串口监听,rosserial一起启动,经常导致串口异常,导致串口插拔,才可以重新使用。
这个问题,比较不好理解,linux串口非独占的。目前还在解决中。

由于linux串口的跳动,必须固定串口。

sudo nano /etc/inittab

     这里分别python2和 python3:

图片 18

讲解掉最终风度翩翩行内容:

    

 

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

1 sudo apt install python-pip //python2
2 sudo apt install python3-pip    //python3
lsusb 可以查看当前的usb口。

当然也可以用dmesg

OK、重启下raspberry pi今后就足以团结编写程序测试串口了。笔者是把TXD与本田CR-VXD短接,实现自然自收的。

  (2)然后通过:

图片 19

二、使用minicom调节和测量试验串口

1 pip install pyserial    //python2
2 pip3 install pyserial   //python3

能够查阅具体的装置。小编觉着用arduino 的serial port看起来更合理点。

安装完今后串口便能够健康使用了,便可测验一下沙窝窝派的UART是或不是正规干活,Pioneer600扩大板带有USB转UART功用,用USB线连接到计算机。minicom正是多个简单易行好用的工具。minicom是linux平台串口调节和测量检验工具,也正是windows上的串口调节和测量试验帮手。

  (3)测验程序

假如当前arduino的串口好是/dev/ttyACM0,

1、minicom安装

 1 import serial
 2 from time import sleep
 3 
 4 def recv(serial):
 5     while True:
 6         data = serial.read_all()
 7         if data == '':
 8             continue
 9         else:
10             break
11         sleep(0.02)
12     return data
13 
14 if __name__ == '__main__':
15     serial = serial.Serial('COM5', 9600, timeout=0.5)  #/dev/ttyUSB0
16     if serial.isOpen() :
17         print("open success")
18     else :
19         print("open failed")
20 
21     while True:
22         data =recv(serial)
23         if data != b'' :
24             print("receive : ",data)
25             serial.write(data) #数据写回

动用udevadm info /dev/ttyACM0 查看串口的绘声绘色消息。

sudo apt-get install minicom

 

图片 20

2、minicom启动

  

这中艺术查看本身感觉不是很好,就使用lsusb -vv

minicom -D /dev/ttyAMA0

  

可以看得更明亮

私下认可Porter率为115200,如需安装波特率为9600加参数 -b 9600,-D代表端口,/dev/ttyAMA0相似于windows中的COM1,

 

图片 21

再便是在windows也张开串口帮手。设置Porter率为115200,选取相应的串口号

参照小说:  

能够知晓的看看 idVendor 和idpProduct,这多个是自定义串口的重要参数。

3、串口数据传输

       

 

直白在minicom调控高雄输入内容就能够通过串口发送数据,在windows串口帮手中会收到到输入的剧情。同理,在windows串口帮手中发送数据会在minicom调整台上展现。若是minicom打开了回显(先Ctrl A,再E)可在调整台北观看到输出内容,假若回显关闭minicom调整台不会显得你输入的开始和结果。先Ctrl A,再Q,退出minicom。

       

基于那几个新闻重写串口设施命名法则,接收Linux的udev来自定义法则来管理设施名称

三、串口编制程序

 

(1)

1、wiringPi

注:解决 ImportError: No module named 'serial' 问题

  

具体步骤如下。

编写翻译并实施,在window下张开串口帮手会接纳到” Hello World!!!”,发送数据会再次来到到体现窗口。

/etc/udev/rules.d/10-local.rules

gcc –Wall uart.c –o uart –lwiringPi

改良这一个文件,小编开掘不设有这一个文件(ubuntu 16.04卡塔尔,那么自身 touch 10-local.rules (其实那些文件名能够不管定义,不过终究不是太领会,所以遵照Q&A来做,防止不或者复现)

sudo ./uart

紧接着 依据查询的idVendor 和idpProduct

#include<stdio.h>

ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK ="MyAruduino"添加到10-local.rules文件中
`udevadm info -a -p $(udevadm info -q path -n /dev/ttyACM0) `

#include<wriingpi.h>

接下来重启计算机。

#include<fcntl.h>

图片 22

int main()

但意识Arduino IDE中显得的要么/dev/ttyACM0,所以自个儿感觉直接选拔cutecom串口调节和测量检验工具来使用.

{

cutecom -> sudo apt-get install cutecom(安装)

int fd;

图片 23

if(wiringPiSetup() < 0)return 1;

Device:直接写/dev/MyArduino ,下拉是心有余而力不足采用的,

if((fd = serialOpen("/dev/ttyAMA0",115200)) < 0)return 1;

自家在Arduino中写serial.write("ggg"卡塔尔国; 在cutecom中已经显得数据,表明可用。

printf("serial test start ...");

有几许要验证,当你直连Arduino的烧入线的时候,/dev/ttyACM0,当您用扩张板的是/dev/ttyUSB*.(那么些是有分别的)。

serialPrintf(fd,"Hello World!!!");

 

while(1)

至于ROSSerial其余的主题素材,必得在深切应用中国和东瀛益积存。

{

 

serialPutchar(fd,serialGetchar(fd));

(2接下来详细的施用ROSSerial

}

开启 一个console  : roscore

serialClose(fd);

再另行开起叁个console

return 0;

 图片 24

}

再开起叁个console :

二、python

rostopic pub [topic] [msg_type] [args]

先是运转如下命令安装python serial扩充库。

图片 25

sudo apt-get install python-serial

当跑后生可畏段时间,Serial_node就能报错(不能够同盟),关于这一个标题,

编写程序

自己觉的是本身展开来Ardunio IDE 的Serial Monitor.所以笔者关闭Ardunio IDE的Serial Monitor,开掘并未现身那几个荒谬。(大致测验来半小时)

#!/usr/bin/python

即便说linux 串口是非操纵的,但与此同时利用只怕会以致心有余而力不足同步的难题,这样的话对于调节和测验认为很费劲。

# -*- coding:utf-8 -*-

所以在Arduino 中加来发表代码,在rostopic中看是或不是选用科学,以下是Arduino代码:

import serial

#include <ros.h>
#include <std_msgs/String.h>

ser = serial.Serial("/dev/ttyAMA0",115200)

ros::NodeHandle  nh;
std_msgs::String str_msg;
ros::Publisher ServoPub("ServoPub", &str_msg);
void servo_cb( const std_msgs::String &cmd_msg)
{
  str_msg =cmd_msg;
  ServoPub.publish(&str_msg);
  nh.spinOnce();
  delay(1);
}

print('serial test start ...')

ros::Subscriber<std_msgs::String> sub("ServoControl", servo_cb);

ser.write("Hello Wrold !!!n")

void setup()
{

try:

  nh.initNode();
  nh.advertise(ServoPub);
  nh.subscribe(sub);
}

while True:

void loop()
{
  nh.spinOnce();
  delay(1);

ser.write(ser.read())

}

except KeyboardInterrupt:

随着运营 :  rosrun rosserial_python serial_node.py /dev/MyArduino

if ser != None:

接着: rostopic echo ServoPub
任何时候发布音讯:rostopic pub ServoControl std_msgs/String 'gg'

ser.close()

下图是接纳到的数据:

实践顺序,实验结果和方面雷同。

图片 26

sudo python uart.py

接受到publish 的String消息.

注:(1卡塔尔(قطر‎ser = serial.Serial("/dev/ttyAMA0",115200卡塔尔(قطر‎张开串口,Porter率为115200

 以上就是rosserial的生机勃勃部分中坚选拔,即使有新的源委继续立异。

(2卡塔尔ser.write(ser.read(卡塔尔(قطر‎卡塔尔国选用字符并回传

 

(3卡塔尔 ser.close(卡塔尔(قطر‎ 关闭串口

 

计算:通过上边多个程序我们得以窥见和i2c同样,wiringPi,python程序都以读写串口设施文件/dev/ttyAMA0操作串口,故大家也能够由此sysfs的款式编制程序操作串口,在这里间本人就不详细介绍了。

 

 

 

 

 

 

 

 

 

 

 

本文由星彩网app下载发布于星彩网app下载,转载请注明出处:树莓派相关,下使用虚拟串口进行开发测试

TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。