如何在 Linux 中制作一个/a(API 或驱动程序)来处理 USB 设备端的所有 USB 串行请求?



两天来,我一直在寻找一种编写程序或制作驱动程序的方法来处理USB设备端的USB串行请求。我特意制作了USB设备,连接它的唯一方法是通过USB串行端口,在我的PC上使用Google的Webusb API访问设备上的终端控制台。所以我可以发送 Linux 命令(即 ifconfig(,所以我想做的是构建一些可以在设备上运行的东西来监听来自 USB 串行的请求并发送适当的响应。例如,我有一个在Arduino上运行的C代码完全符合我的意愿,但问题是该代码仅适用于Arduino,而不适用于我的设备,这是c代码:

// Third-party WebUSB Arduino library
#include <WebUSB.h>
WebUSB WebUSBSerial(1 /* https:// */, "webusb.github.io/arduino/demos");
#define Serial WebUSBSerial
void setup() {
Serial.begin(9600);
while (!Serial) {
; // Wait for serial port to connect.
}
Serial.write("WebUSB FTW!");
Serial.flush();
}
void loop()
{
if (webUsbSerial)
{
if (webUsbSerial.available())
{
int byte = webUsbSerial.read();
if (byte == 'h')
{
webUsbSerial.write("hallo from Arduino");
}
else
webUsbSerial.write("sorry not a function yet!!!!");
webUsbSerial.flush();
}
}
}

正如您在此示例中所看到的,我检查命令是否为">h"并发送hello world.我想在具有Linux操作系统的设备上做同样的事情, 我尝试了libusb,但我认为它是一个USB主机API,而不是USB设备。 提前谢谢你。

我认为你可以使用这样的东西(如果你可以使用Python的话(:

import serial
#Assuming you're connecting an Arduino
try:
ser = serial.Serial("/dev/ttyACM0",9600)
except:
ser = serial.Serial("/dev/ttyACM1",9600)
while True:   
print("Start")
print("Waiting...")
command = ser.read()
try: command = str(command, "utf-8")
except: command = str(command, "utf-16")
if (command =="h"): print("Hello")

希望它有帮助。

最新更新