私は(Linux)QNAP NASで動作する小さなCアプリケーションを作成しています。これはArduinoと通信します(私は、 arduino)。 (arduinoには、USBシリアル経由でテキストコマンドを受け取る信頼できるアプリケーションがあります。)Linux上でUSBシリアルデバイスを見つけて開く必要があります
私は、USBベンダー/製品IDを使用して見つけました。私がこれまでに持っているもの(下記参照)は、デバイスが見つかるという点で非常にうまく機能します。
// runs on NAS
#include <stdio.h>
#include <usb.h>
main() {
struct usb_bus *bus;
struct usb_device *dev;
usb_init();
usb_find_busses();
usb_find_devices();
for (bus = usb_busses; bus; bus = bus->next) {
for (dev = bus->devices; dev; dev = dev->next) {
printf("Trying %s/%s\n", bus->dirname, dev->filename);
printf("\tVendor = 0x%04x\n", dev->descriptor.idVendor);
printf("\tBus = 0x%03x\n", bus->location);
printf("\tFile = %s\n", dev->filename);
if (dev->descriptor.idVendor==0x403) {
printf("\t HEY, THIS IS MINE!\n");
usb_dev_handle *handle = usb_open(dev);
printf("\t HANDLE 0x%08x\n", (int) handle);
//printf(handle, "1,5,62,75\n");
usb_close(handle);
}
}
}
}
問題は、今ではデバイスでテキストを少し送受信したいのですが、その方法はわかりません。
私はusb_device構造体の中の何かからデバイス名を生成し、Windowsのようにファイルのように開く必要があると思いました。
それが正しいなら、私は私がのlibusbを使っていると信じて
...デバイス名を見つけるための正しい方法を知っておく必要があります。
私は、現在設定されている/接続されているので、ttyUSB0ですが、コードを使用していることを知りたいと思います。
ありがとうございました!
このトピックに関する同様のQをお読みください。 '[libusbベンダーID]'を検索すると6つのスレッドが表示されます。がんばろう。 – shellter