# 串口测试
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 信息后面 () 里的进程杀掉,再重新执行即可。