树莓派4:2x UART器件+显示触摸;我看不到TOUCH设备



我有相当具体的SW/HW问题,可能与串行通信有关…

我的项目是基于树莓派4 + 7"触摸屏+ ESP32单片机,我有屏幕触摸功能的问题。

项目详细架构:

  1. 在树莓派上运行我用Python 3 (+Kivy框架)编写的应用程序,并使用pySerial库读取数据(源代码如下)
  2. 触摸屏连接HDMI(视频)+ USB(触摸),
  3. 到下一个USB连接带有ESP32微控制器的开发板,并通过UART将数据推送到树莓派

从ESP32 UART读取数据:

import serial
uart = serial.Serial(port="/dev/ttyUSB0", bytesize=8, baudrate=9600,
stopbits=1, timeout=0.2, parity='N')

好的,这是我的问题:

只连接USB <->UART数据线(触摸屏没有连接),一切都很好:我从ESP32微控制器(通过UART)发送数据,然后用pySerial库在树莓派上读取数据(反之亦然:当我连接了触摸屏,我没有连接USB <->UART电缆,触摸也可以)。

但是当USB触摸屏和USB <->UART连接在一起,我看不到ESP32的任何数据微控制器,当然,触摸功能不工作…

根据上面的信息,问题可能是串行通信,USB <->UART和USB触摸接口,但我没有经验如何修复或重建它。

请问,谁有经验/知道如何解决这个问题?(如果我忘了写一些重要的信息,当然,我可以把它添加到这里)

更新12/22/2022:

lsusb - plugged in 2x UART dev + 1x Touch USB

1 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
2 Bus 001 Device 006: ID 0bda:3036 Realtek Semiconductor Corp. 
3 Bus 001 Device 005: ID 0bda:3036 Realtek Semiconductor Corp. 
4 Bus 001 Device 004: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family] # UART 1
5 Bus 001 Device 003: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family] # UART 2
6 Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
7 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

我看不到Display USB TOUCH

lsusb - plugged in 1x UART dev + 1x Touch USB

1 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
2 Bus 001 Device 006: ID 0bda:3036 Realtek Semiconductor Corp.
3 Bus 001 Device 005: ID 0bda:3036 Realtek Semiconductor Corp.
4 -> Bus 001 Device 004: ID 0eef:0005 D-WAV Scientific Co., Ltd     # Display USB TOUCH
5 Bus 001 Device 003: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family]    # UART 1
6 Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
7 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

我有外部电源(5V 4A)的树莓派4 + ESP32 + 7"液晶触摸屏,我没有看到稳定性问题(但也许这是一个问题)。

/dev/ttyUSB0可能根据每次堵漏顺序发生变化。对于较新的Linux发行版,您插入的每个设备也在/dev/serial/by-id//dev/serial/by-path下创建一个唯一的可识别符号链接。

所以,我建议在python中使用其中一个。如果符号链接不能直接访问,您可以使用os.path.realpath(path)来检索真正的串行设备。

最新更新