如何使 an/a(API 或驱动程序)处理 Linux 中 USB 设备端的所有 USB 串行请求?
How to make an/a (API or driver) to handle all the USB serial request on the USB-device side in Linux?
这两天我一直在寻找一种方法来编写程序或制作驱动程序来处理我的 USB 设备端的 USB 串行请求。我有特制的 USB 设备,连接它的唯一方法是通过 USB 串行端口,在我的 PC 上,我使用 Google 的 Webusb API 访问设备上的终端控制台。所以我可以发送 Linux 命令(即 ifconfig),所以我想做的是在设备上构建一些可以 运行 的东西来监听来自 USB 串行的请求并发送正确的响应.例如,我有一个 C 代码,Arduino 上的 运行s 完全符合我的要求,但问题是该代码仅适用于 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 OS,
我试过 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")
希望对您有所帮助。
这两天我一直在寻找一种方法来编写程序或制作驱动程序来处理我的 USB 设备端的 USB 串行请求。我有特制的 USB 设备,连接它的唯一方法是通过 USB 串行端口,在我的 PC 上,我使用 Google 的 Webusb API 访问设备上的终端控制台。所以我可以发送 Linux 命令(即 ifconfig),所以我想做的是在设备上构建一些可以 运行 的东西来监听来自 USB 串行的请求并发送正确的响应.例如,我有一个 C 代码,Arduino 上的 运行s 完全符合我的要求,但问题是该代码仅适用于 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 OS,
我试过 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")
希望对您有所帮助。