Как сделать / a (API или драйвер) для обработки всего последовательного USB-запроса на стороне USB-устройства в Linux? - PullRequest
0 голосов
/ 11 октября 2018

В течение двух дней я искал способ написания программ или создания драйвера для обработки последовательного USB-запроса на стороне моего USB-устройства.Я специально создал USB-устройство, и единственный способ подключиться к нему - через последовательный USB-порт. На моем компьютере я использую API Webusb от Google для доступа к терминальной консоли на устройстве.Поэтому я могу отправлять команды Linux (например, ifconfig), поэтому я хотел бы создать что-то, что может работать на устройстве для прослушивания запросов, поступающих через последовательный порт USB, и отправки правильного ответа.Например, у меня есть код C , который работает на Arduino и выполняет то, что я хочу, но проблема в том, что код работает только для 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-устройство.Заранее спасибо.

1 Ответ

0 голосов
/ 11 октября 2018

Я думаю, вы могли бы использовать что-то вроде этого (и если вы в порядке с использованием 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")

Надеюсь, это помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...