陈拓 2021/01/04-2021/01/09
1. 概述
在《Win10启用Linux子系统安装Ubuntu》
https://zhuanlan.zhihu/p/341394468
https://blog.csdn/chentuo2000/article/details/112131624
一文中我们已经在Win10上安装了Ubuntu,本文中我们要在Ubuntu中使用串口。
Windows的Linux子系统Windows Subsystem for Linux 简称WSL。
Win10的串口,可以直在WSL中接使用。从windows COM端口到Linux tty接口之间有一个简单的映射,即COMx映射到ttySx,例如COM3对应WSL中的设备名称/dev/ttyS3。
在WSL2版本中,硬件访问支持将受到限制,例如:您将无法访问GPU、串行或USB设备。所以要使用串行或USB设备要用WSL。
查看当前wsl版本:
Win+R > cmd
输入wsl -l -v
2. 连接USB-Serial串口设备
- 硬件连接
笔记本上没有串口,我们用CH340G USB-Serial转接板。为进行串口回环测试,用跳线帽短接TXD和RXD。
Win10可以自动识别CH340,在我的电脑上识别为COM3。
3. Win10使用CH340 USB-SERIAL串口
见《Win10使用CH340USB-SERIAL串口》
https://zhuanlan.zhihu/p/342339132
4. WSL Ubuntu使用程序访问USB-SERIAL串口
参考文档《WSL: Working with COM ports on Windows/Linux》
https://icircuit/wsl-working-with-com-ports-on-windows-linux/2866
4.1 从Python访问COM端口
通过WSL,我们可以从Linux程序访问windows COM端口。下面我们将从Python和NodeJS程序访问COM端口。
ls /dev | grep ttyS3
- 创建一个目录wsl-python-sp
mkdir wsl-python-sp
cd wsl-python-sp
- 安装python串口模块
pip install pyserial
需要先安装Python2包管理工具pip。
参考《Win10的Linux子系统Ubuntu安装pip》https://zhuanlan.zhihu/p/342750610
重新启动Ubuntu再安装:
- 复制下面的代码到hello.py
import serial
ser = serial.Serial('/dev/ttyS3') # open serial port
print(ser.name) # check which port was really used
ser.write(b'serail port on wsl \n') # write a string
s = ser.readline()
print(s)
ser.close()
- 测试
python hello.py
4.2 从NodeJs访问COM端口
- 回到家目录
- 创建一个目录wsl-sp
mkdir wsl-sp
cd wsl-sp
- 换源
为了加快下载速度先换源,请参考《Win10的Linux子系统Ubuntu换源》
https://zhuanlan.zhihu/p/342771976
- 安装npm
安装Nodejs的包管理器npm:
sudo apt-get update
sudo apt-get install npm
查看NodeJS和npm的版本:
- 初始化NodeJS项目
npm init
不知道怎么填写就一路回车。
- 安装serialport
npm install serialport
- 复制下面的代码到index.js
const SerialPort = require('serialport')
const Readline = require('@serialport/parser-readline')
const port = new SerialPort('/dev/ttyS3', { baudRate: 9600})
const parser = new Readline()
port.pipe(parser)
parser.on('data', line => console.log(`> ${line}`))
port.write('serailport on wsl\n')
- 运行NodeJS脚本
node index.js
5. Ubuntu使用串口工具访问USB-SERIAL串口
5.1 minicom
- 安装
sudo apt-get install minicom
- 查看版本
- 串口设置
sudo minicom -s
按照下图设置:
设置串口3;8位数据为;1位停止位;无奇偶校验位;波特率115200;无硬件流和软件流控。
回车
保存Save setup as df1,退出Exit from Minicom。
- 运行sudo minicom
Ctrl+A 按下E选择回显。
成功!
常用命令:
Ctrl+A W:当显示的内容超过一行之后自动换行
Ctrl+A C:清屏
Ctrl+A O:打开配置选项
Ctrl+A X:退出minicom
6. 用stty命令设置终端的通信参数
《stty 命令说明及使用讲解》https://blog.csdn/boyemachao/article/details/50394592
为了使用Shell命令操作串口,我们需要用stty命令对当前终端的通信参数进行一些设置。
stty(set tty,设置tty)命令用于检查和修改当前注册的终端的通信参数。UNIX系统为键盘的输入和终端的输出提供了重要的控制手段,可以通过stty命令对特定终端或通信线路设置选项。
可以在stty命令中使用-a查看当前注册终端的设置情况。
- 检查串口当前设置
stty -F /dev/ttyS3
-F指定设备/dev/ttyS3。
查看详细信息stty -F /dev/ttyS3 -a
- 串口设置115200 8n1
stty -F /dev/ttyS3 speed 115200 cs8 -parenb -cstopb
7. 用Shell命令行读写串口数据
- 查看/dev/ttyS3权限
ls -l /dev/ttyS3
- 修改权限/dev/ttyS3权限
- 打开一个Ubuntu窗口
在终端显示接收的信息cat /dev/ttyS3
等待接收数据。
- 再打开一个Ubuntu窗口
发送数据:
echo "hello!" > /dev/ttyS3
在前一个Ubuntu窗口中可以看到接收的数据:
Ctyl+Z退出。
- 将接收的数据存入文件
在一个窗口输入Shell命令
while [ 1 -eq 1 ]
do
cat /dev/ttyS3 >> "tmpFile"
done
等待输入。
在另一个窗口输入:
echo "hello!" > /dev/ttyS3
echo "This is a ttyS3 test." > /dev/ttyS3
查看接收的信息:
8. 用busybox microcom命令读串口数据
- 在一个Ubuntu窗口中输入命令
busybox microcom -t 60000 -s 115200 /dev/ttyS3
参数:
-s 波特率
-t 无操作自动退出时间,单位是毫秒,不加-t就是一直等待接收
- 在另一个Ubuntu窗口中发送数据
echo "hello! This is a ttyS3 test." > /dev/ttyS3
在前一个Ubuntu窗口中可以看到接收的数据:
如果遇到错误:microcom: can't create '/var/lock/LCK..ttyS3': File exists
只要把/var/lock/LCK..ttyS3删除就好了:
按ctrl+x可以退出microcom。
更多推荐
Win10的Linux子系统Ubuntu使用串口
发布评论