两天来,我一直在寻找一种方法来编写程序或制作驱动程序来处理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设备。
预先谢谢你。
答案 0 :(得分:0)
我认为您可以使用类似的方法(如果可以使用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")
希望有帮助。