雷电等基于VirtualBox的Android模拟器映射串口和测试CSerialPort串口功能

发布于:2025-02-10 ⋅ 阅读:(37) ⋅ 点赞:(0)

雷电等基于VirtualBox的Android模拟器映射串口和测试CSerialPort串口功能

1. 修改VirtualBox配置文件映射串口

模拟器配置文件vms/leidian0/leidian.vbox

在UART标签下增加(修改完成后需要将leidian.vbox修改为只读)

<Port slot="1" enabled="true" IOBase="0x2f8" IRQ="3" path="COM2" hostMode="HostDevice"/>
<UART>
    <Port slot="0" enabled="false" IOBase="0x3f8" IRQ="4" path="C:\Users\Administrator\AppData\Roaming\ChangZhi2\kernel.log" hostMode="RawFile"/>
    <Port slot="1" enabled="true" IOBase="0x2f8" IRQ="3" path="COM2" hostMode="HostDevice"/>
</UART>

参数配置可参考VirtuaBox User Manual的Serial Ports章节。
Port:

COM1: I/O base 0x3F8, IRQ 4
COM2: I/O base 0x2F8, IRQ 3
COM3: I/O base 0x3E8, IRQ 4
COM4: I/O base 0x2E8, IRQ 3

Mode:

Disconnected
Host Device
Host Pipe
Raw File
TCP

2. 重启模拟器,检查串口是否可用

重启模拟器后,通过命令查看是否生效

  • dmesg查看内核串口初始化信息
$ dmesg | grep ttyS1
<6>[    0.837015] 00:05: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
  • setserial查询串口信息
# setserial -g /dev/ttyS1
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
  • stty打开串口
# stty -F /dev/ttyS1
speed 9600 baud; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-brkint -imaxbel
  • echo写入数据测试
echo "test" > /dev/ttyS1

3. 编译CSerialPort的android测试程序

$ git clone --depth=1 https://github.com/itas109/CSerialPort.git
$ cd CSerialPort/example/CommAndroid
$ gradlew assembleDebug

> Task :app:externalNativeBuildDebug
Build cserialport_arm64-v8a
Build cserialport_x86

BUILD SUCCESSFUL in 28s
28 actionable tasks: 28 executed

4. 模拟器运行CommAndroid

  • 修改串口权限
# chmod 666 /dev/ttyS1
  • 运行CommAndroid测试串口收发

选择可用串口 - open - send


网站公告

今日签到

点亮在社区的每一天
去签到