整理网络_树莓派的串口配置

时间:2024-05-18 19:42:26

(注:文章中的内容来自网络,自行测试整理出来的,当前我的树莓派为:Raspberry Pi 3 Model B)

一、解除串口占用


使用putty的时候神奇的发现树莓派竟然是支持serial进行操作。试了试,和在ssh下使用没有多少区别,速度也很快。 
树莓派的串口主要也就是被这个占用了,配置释放之后才能使用它来进行串口通信。

在命令行里输入如下指令:

sudo raspi-config

 在如下出现的界面中选择 5 
 整理网络_树莓派的串口配置
选择“P6 Serial”,然后把它关闭了,即Disable。  整理网络_树莓派的串口配置

打开/boot/config.txt文件,

Sudo nano /boot/config.txt

找到如下配置语句使能串口,如果没有,可添加在文件最后。

enable_uart = 1

 修改完成后可能无法直接使用,最好重启下树莓派。

二、建立Qt工程


打开Qt Creator,选择新建一个“非Qt项目”,然后选择“纯C++语言项目”,大致指示如下 
 整理网络_树莓派的串口配置
这里我的工程名字是“wiringPi”,选择好保存工程的路径,接下来一路下一步。

wiring.pro里的代码:

TEMPLATE=app

CONFIG += console

CONFIG -= app_bundle

CONFIG -= qt

SOURCES += main.cpp

# 下面这个LIBS很关键

LIBS += -lwiringPi

 

main.cpp里的代码:

#include <string.h>

#include <stdlib.h>

#include <stdio.h>

#include <wiringPi.h>

#include <wiringSerial.h>

#include <iostream>

#include<sys/stat.h>

#include<unistd.h>

using namespace std;

int main(void)

{

int fd;

char str[6],str1[6];

if(wiringPiSetupSys()<0)

{

return 1; //初始化

}

wiringPi sprintf(str,"%s%s%s\n","X","110","R");

sprintf(str1,"%s%s%s\n","Y","220","R");//字符串拼接,%s可替换成int/float变量

while(1)

 {

delay(10);

/*打开串口设备ttyS0,波特率9600*/

if((fd=serialOpen("/dev/ttyS0",9600))<0)

{

int time = millis();//计时函数,从wiringPi初始化开始至今

 printf("serial doesn't open,return -1,time is %d",time);

return 1;

 }

serialPrintf(fd,str); //向串口设备发送数据,整个str字符串

serialPrintf(fd,str1);

serialClose(fd);//发送完之后关闭串口,不然会出现程序运行一段时间后串口自动关闭的情况(serialOpen()返回-1)。

int c = waitKey(10);

if ((char)c == 27)

{

break;

} // escape

}

serialClose(fd);

return 0;

}

 

树莓派连接USB转串口

1命令行使用

lsusb

查看设备能否识别。

整理网络_树莓派的串口配置

2、查看识别成的串口号

ls -l /dev/tty*  

整理网络_树莓派的串口配置

3根据列表看到了识别成了ttyUSB1,查看串口的波特率 stty -F /dev/ttyUSB0

 

 整理网络_树莓派的串口配置

4、查看串口的连接信息 命令行输入

dmesg | grep ttyUSB1

整理网络_树莓派的串口配置

 

 

 

 linux下的usb转串口的使用(修改)

 环境:Ubuntu 10.10 Server

minicom是linux下串口通信的软件,它的使用完全依靠键盘的操作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到它的高效与便利,下面将讲解minicom的安装和配置。

 

一、安装minicom:

使用以下命令:
# sudo apt-get install minicom

以下为安装的详细信息:
# sudo apt-get install minicom
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会安装下列额外的软件包:
lrzsz
下列【新】软件包将被安装:
lrzsz minicom
共升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 2 个软件未被升级。
需要下载 270kB 的软件包。
解压缩后会消耗掉 1389kB 的额外空间。
您希望继续执行吗?[Y/n]y
获取:1 
http://ubuntu.uestc.edu.cn hardy/universe lrzsz 0.12.21-4.1 [97.0kB]
获取:2 http://ubuntu.uestc.edu.cn hardy/main minicom 2.3~rc1-2 [173kB]
下载 270kB,耗时 1s (184kB/s)
选中了曾被取消选择的软件包 lrzsz。
(正在读取数据库 ... 系统当前总共安装有 101203 个文件和目录。)
正在解压缩 lrzsz (从 .../lrzsz_0.12.21-4.1_i386.deb) ...
选中了曾被取消选择的软件包 minicom。
正在解压缩 minicom (从 .../minicom_2.3~rc1-2_i386.deb) ...
正在处理用于 man-db 的触发器...
正在设置 lrzsz (0.12.21-4.1) ...
正在设置 minicom (2.3~rc1-2) ...

PS:ubuntu 现在做的真是没话说,相当的实用和智能啊,把相关的依赖包(lrzsz)都相互关联并且安装上去了。但是如果使用ubuntu 8.10以前的版本可能就要单独安装lrzsz软件包了(lrzsz包括了x/y/zmodem协议)。也就是说,在通过串口用xmodem协议烧写内核 时会提示没有xmodem协议,所以这时就要安装lrzsz软件包了:
 

# sudo apt-get install lrzsz


然后就可以正常地使用minicom通过串口烧写内核了。

 

二、配置minicom:

1、在使用minicom之前,首先要保证你对串口有读/写的权限。我们知道,Linux的设备对应于/dev/目录中的某个文件,串口COM1对应ttyS0,COM2对应ttyS1,使用以下命令来查看你对COM1的权限:
 

$ ls -l /dev/ttyUSB0


crw-rw---- 1 root dialout 4, 64 2009-08-01 11:05 /dev/ttyS0
可以看到,它的属主是root。

2、正如在Windows中要配置超级终端一样,在使用minicom之前,先要对串口进行配置。
运行

# sudo minicom -s

选择Serial port setup,此时所示光标在"Change which setting"上, 键入"A" ,此时光标移到第A项对应处:串口COM1对应ttyS0,COM2对应ttyS1(注意选择),如果直接用usb转串口则对应ttyUSB0(一般ubuntu下已经安装了usb转串口的驱动了)。

然后对波特率,数据位和停止位进行配置,键入"E",波特率选为115200 8N1(数据位8,奇偶校验无,停止位1),硬/软件流控制分别键入"F"和"G",并且都选No。在确认配置正确之后,可键入回车返回上级配置界面,并 将其保存为默认配置(即save setup as dfl)。最后,选择"Exit from Minicom"命令退出。

具体的配置信息如下所示:
Serial port setup [Enter]
+-------------------------------------------------------------+
| A - Serial Device : /dev/ttyUSB0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program -: |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-------------------------------------------------------------+

注意:如果没有使用USB转串口,而是直接使用串口,那么Serial Device要配置为/dev/ttyS0。

然后重启minicom(即直接在shell下执行minicom命令就可以进入minicom的控制台)使刚才的配置生效,再连上开发板的串口线后,就可以在minicom中打印出正确的串口信息了。在控制台下通过组合键Ctrl+A Z可以进入minicom菜单。

组合键的用法是:先按Ctrl+A组合键,然后松开这两个键,再按Z键。另外还有一些常用的组合键。
(1)S键:发送文件到目标系统中;
(2)W键:自动卷屏。当显示的内容超过一行之后,自动将后面的内容换行。这个功能在查看内核的启动信息时很有用。
(3)C键:清除屏幕的显示内容;
(4)B键:浏览minicom的历史显示;
(5)X键:退出mInicom,会提示确认退出。

3、配置文件所在目录
Ctrl + A --> O
+-----[configuration]------+
| Filenames and paths |
| File transfer protocols -|
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
+--------------------------+

选择"Filenames and paths"
+-----------------------------------------------------------------------+
| A - Download directory : /home/crliu |
| B - Upload directory : /tmp |
| C - Script directory : |
| D - Script program : runscript |
| E - Kermit program : |
| F - Logging options |
| |
| Change which setting? |
+-----------------------------------------------------------------------+

(1)A - download 下载文件的存放位置(开发板 ---> PC)
开发板上的文件将被传输到PC机上的/home/crliu目录下。
(2)B - upload 从此处读取上传的文件(PC ---> 开发板)
PC机向开发板发送文件,需要发送的文件在/tmp目录下(PC机上的目录)。做了此项配置后,每次向开发板发送文件时,只需输入文件名即可,无需输入文件所在目录的绝对路径。

 

三、Linux下如何使用USB转串口设备

对没有串口的笔记本持有者来说,做硬件开发经常为没有串口而烦恼,不过现在有了USB转串口设备。但是新的问题又出现了,比如说对于Minicom下的PC机和目标机通信还是存在着一些配置问题,下面就说一下linux下USB转串口的具体配置和问题:

注意:默认情况下ubuntu已经安装了USB转串口驱动(pl2303)。

1、# lsmod | grep usbserial
如果有usbserial,说明系统支持USB转串口。

2、插上USB转串口,在终端输入命令#dmesg | grep ttyUSB0,如果出现连接成功信息,则说明ubuntu系统已经识别该设备了。

注意:虚拟机环境下的ubuntu默认情况下是不能自动识别的,需要在虚拟机窗口右下角点击"Prolific USB-Serial Controller",然后选择"Connect (Disconnect from Host)",这样才能被ubuntu系统识别。

3、在上面minicom的配置中设置Serial Device: /dev/ttyUSB0,重启开发板,这样基本上就可以正常使用minicom来打印串口信息了。

4、问题1
如果虚拟机无法识别加载USB设备,出现如下提示:
VMware Workstation突然出现这种问题:The connection to the VMware USB Arbitration Service was unsuccessful. Please check the status of this service in the Microsoft Management Console.
原因:VMware USB Arbitration Service服务没启动
解决方法为:
(1)方法一:右键我的电脑,点击管理-服务和应用程序-服务,找到VMware USB Arbitration Service,右键点击,启动即可。(Win7下)
(2)方法二:开始->运行,输入:cmd。。输入:net start VMUSBArbService

5、问题2
如果经过上面的步骤minicom还是不能正常工作,出现如下错误提示:
# sudo minicom
minicom: cannot open /dev/ttyUSB0: 没有该文件或目录

这时可以尝试换一个USB口,然后再次操作以上流程。如果还是提示这个错误,那么可以使用下面的方法来解决。

这种方法是在硬件里添加串口设备,将window下的设备添加到虚拟机里。也就是说,要在window获得焦点的时 候加入usb转串口,然后再到虚拟机下将这个设备添加进去,这时就可以在ubuntu下查看添加的这个设备的设备文件,一般是/dev/tty0或者 /dev/ttyS0。
这种方法其实是将window的usb转串口作为虚拟机的串口,所以就是tty0或者ttyS0了,而不是真正在ubuntu下加载的。
具体步骤如下:
(1)打开虚拟机环境,然后选择"VM-->Settings(Ctrl+D)"。
(2)点"Add",进入添加硬件向导,选择"Serial Port",点"Next"。
(3)选择第一项"Use physical port on the host",点"Next"。
(4)选择"Physical serial port"方式为"Auto detect",勾选"Connect at power on",点"Finish"完成。
(5)然后在上面minicom的配置中设置Serial Device: /dev/tty0或者Serial Device: /dev/ttyS0,重启开发板,这样就可以正常运行minicom了。

四、启动串口

启动minicom

 

命令:minicom -D /dev/ttyUSB0

 

minicom 默认波特率为115200,

-D 代表端口,

-b 设置波特率参数 例如 -b 9600

 

ctrl A 按下E选择回显