# 串口测试
1、获取串口号
一般串口都是以 /dev/ttyS#
的格式显示,所以第一个连接的串口就是 /dev/ttyS0
,第二个连接的串口就是 /dev/ttyS1
… 以此类推。
USB 转串口适配,没有额外驱动,它们会显示为 /dev/ttyUSB#
,如 /dev/ttyUSB0
。
可以通过如下命令获取:
ls -l /dev/ttyS* |
note:
一般来说,通过 ls -l /dev/ttyS*
获取出来的串口是包含虚拟串口和存在但未连接的串口,这时候可以通过 cat /proc/tty/driver/serial
来获取真实连接的串口,或者使用 dmesg | grep ttyS*
来查看, eg:
root@debian:/# ls -l /dev/ttyS* | |
crw-rw---- 1 root dialout 4, 64 Oct 25 19:29 /dev/ttyS0 | |
crw-rw---- 1 root dialout 4, 65 Oct 25 19:29 /dev/ttyS1 | |
crw-rw---- 1 root dialout 4, 66 Oct 25 19:29 /dev/ttyS2 | |
crw-rw---- 1 root dialout 4, 67 Oct 25 19:29 /dev/ttyS3 | |
root@debian:/# cat /proc/tty/driver/serial | |
serinfo:1.0 driver revision: | |
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0 | |
1: uart:unknown port:000002F8 irq:3 | |
2: uart:unknown port:000003E8 irq:4 | |
3: uart:unknown port:000002E8 irq:3 | |
root@debian:/# | |
root@debian:/# dmesg | grep ttyS* | |
[ 0.095756] printk: console [tty0] enabled | |
[ 2.520985] 00:01: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A | |
[ 11.074576] systemd[1]: Created slice system-getty.slice. | |
root@debian:/# |
串口 0 的 uart 值时 16550A,tx 值为 0,rx 值也为 0,因此我们断定本机只有一个串口,是串口 0,即 ttyS0。
2、配置属性
使用 stty
命令来更改配置串口属性(详情查看 man stty
),比如我们设置串口 /dev/ttyS0
波特率为 115200
和 odd parity
,命令如下:
stty -F /dev/ttyS0 115200 parodd |
3、读写操作
使用 echo
向串口发送数据,如:
echo “command” > /dev/ttyS0 |
利用 cat
来监听串口中的数据,如:
cat /dev/ttyS0 |
监听数据并保存到 txt 文本中,如:
cat /dev/ttyS0 > file.txt |
note:接受信息的时候,对方发送需要加入换行符才能真正收到,否则只是存在接收缓冲区中而并未显示。
# CAN 测试
1、获取 CAN 设备
ip a |
通常 CAN 设备以 can#
的格式显示,eg: can0
。
2、配置属性
使用 ip link set
对 CAN 设备进行配置,这里设置 can0
波特率为 500Kbps
,自动重启时间为 10ms
,其中 up
表示打开该端口。
ip link set can0 up type can bitrate 500000 restart-ms 10 |
常见可选:
triple-sampling on
:表示打开 3 次采样,在较低波特率下,建议使用该参数。 如果波特率较高,例如高达到 500Kbps 以上,建议将其关闭。
restart-ms
:自动重启的频率。
note:
使用 ip -details link show can#
可以获取详细的参数。
3、读写操作
使用 cansend
发送数据,如:
cansend can0 123#1122334455667788 |
其中, can0
表示要使用的 CAN 接口, 123
表示 CAN ID, #
后面的数字表示发送的数据,这里是 16 进制格式的数据。
利用 candump
来监听 CAN 总线上的数据,如:
candump can0 |
4、自动使能 CAN 总线
Linux 上 CAN 总线接口总是以网络设备形式呈现的,默认系统启动时 CAN 总线处于 down 模式,需要手动使用 ip
命令等配置并使能 up
。但也可以使用系统 network 的 interfaces 文件来实现 CAN 总线自动化配置和激活:
auto can0 | |
iface can0 inet manual | |
pre-up /sbin/ip link set $IFACE type can bitrate 500000 restart-ms 10 | |
up /sbin/ip link set $IFACE up | |
down /sbin/ip link set $IFACE down |
# 无线连接
1、获取无线网卡
iw dev | |
# or | |
ip a |
通常无线设备名字以 wl#
开头的格式显示,eg: wlan0
。
2、检查网卡状态
ip link show wlan0 |
如果在 <> 中没有 UP
的字样,表示网卡没有激活;可以尝试启动:
ip link set wlan0 up |
3、检查无线连接状态
iw wlan0 link |
如果没有连接会显示 Not connected
。
4、扫描可连接的无线网络
iw wlan0 scan | grep SSID |
找到你需要的连接的无线网络名 <wifi_name>
。
5、无线连接
一般有两种连接方式:
对于没有密码的连接最为简单,直接连接即可:
iw dev wlan0 connect <wifi_name>
而如果网络是有密码,使用的是 WPA 或 WPA2 协议的话,连接就稍微复杂点,需要用到
wpa_supplicant
工具:# <wifi_name> 即需要连接的无线网络名
# <password> 即 WPA 或 WPA2 协议的验证密码
wpa_supplicant -B -i wlan0 -c<(wpa_passphrase "<wifi_name>" "<password>")
6、为无线网卡分配 IP 地址
dhclient wlan0 |
note:
如果之前为该网卡分配过 IP,可能会出现错误,只需要把 dhclient 信息后面 () 里的进程杀掉,再重新执行即可。