Android ch340 中的 UsbSerial 库问题

问题描述 投票:0回答:1

我正在尝试将开源Python项目esptool.py转换为Android(java)项目。
在android中,对于串行通信,我使用USB Serial库。
我只需要 esptoo.py 中的

esp8266
功能,所以我只转换了 esp8266 函数。

UsbSerial 库,我使用 synchronous api,因为 esptool.py 使用同步命令进行串行 read/write
当前项目与 esp8266/FTDI、esp8266/cp2102 运行良好,与

esptool.py
相同。
我的问题是无法使用
esp8266/ch340

当然,esptool.py 与
esp8266/ch340
配合得很好。
但是,我的 Android 项目无法使用它。
在 android 中,esptool.py 中使用的主要命令是
setDTR
setRTS
serial Read
serial Write
。 尽管在正常模式(不是引导加载程序模式)下,每个命令都运行良好。
另外,我确认了 esp8266 可以通过 setDTR、setRTS 的组合正确进入引导加载程序模式。

更正确地确认bootloader模式,我可以使用esp8266的

esp8266/ch340

Flash button

使用 esp8266/ch340,我无法通过 android 项目的第一步。 第一步是同步操作。enter image description here 从 android 中,使用

https://github.com/espressif/esptool/wiki/Serial-Protocol#initial-synchronization

调用 write 命令,然后 esp8266 是字节响应。 主要问题是无法从 esp8266 读取响应命令。 从 UsbSerial 中,有
RST button

syncRead
命令,还有用于串行操作的异步命令。
syncWrite
是用同步API制作的,所以,我在android项目中使用同步API。
另外,当前项目与esp8266/FTDI、esp8266/cp2102完美配合。
所以,我认为,主要算法是从 esptool.py 成功转换的

但是,esp8266/ch340,当前项目无法运行。

通过调试,我确认无法在引导加载程序模式下从 esp8266/ch340 读取任何字节。

为了调试,我使用
asynchronous api
创建了新项目。 使用esp8266的按钮,使

esptool.py

引导加载程序模式,我正在将同步命令写入esp8266。


flash button, rst button

https://github.com/espressif/esptool/wiki/Serial-Protocol

,esp8266正在发送响应命令,但无法读取esp8266/ch340中的响应。

但是,我发现了奇怪的事情。

启动加载模式后,写入同步命令并断开USB与Android的连接,然后,我可以在esp8266/ch340
中看到正确的响应命令。

如果我写3次同步命令,那么第3次响应命令会在断开时刻到达。

我该如何解决这个问题?
如何在 Bootloader 模式下调试 esp8266?

从调试来看,

this

Disconnecting moment

bootloader模式
)的主要问题。

android serial-port
1个回答
0
投票
https://github.com/xCarlost/FirmwareFlasher

),它使用 esptool 和分叉的 pyserial 依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.