# 串口测试

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 波特率为 115200odd 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 信息后面 () 里的进程杀掉,再重新执行即可。

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

夏沫の浅雨 微信支付

微信支付

夏沫の浅雨 支付宝

支付宝