Wie verwende ich die FTDI D2XX-Bibliothek unter OSX?

Ich versuche, mit einem USB-Gerät zu sprechen, das an einen EasySync USB2-H-5004-M-USB-zu-RS485-Konverter mit einer Baudrate von 3750000, jedoch unter OSX angeschlossen ist.

Ich habe etwas C ++ - Code, der unter Windows funktioniert, und habe es gerade geschafft, ihn unter OSX zu kompilieren (unter Verwendung der D2XX-Dylib anstelle der DLL), aber ich habe irgendwo ein Problem mit der Kommunikation und bin nicht sicher, wo ich anfangen soll und wie Beheben Sie dieses Problem.

Ich verwende openFrameworks / c ++ und die Methode zum Auflisten von Geräten sieht folgendermaßen aus:

int FTDI::enumerateDevices(){
    DWORD numDevs;
    FT_STATUS ftStatus = FT_CreateDeviceInfoList(&numDevs);
    numPortsFound = 0;

    if (ftStatus == FT_OK) {
        ofLog(OF_LOG_NOTICE, "Number of FTDI devices is %d",numDevs);
        devicesList = (FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs);
        ftStatus = FT_GetDeviceInfoList(devicesList, &numDevs);
        if (ftStatus == FT_OK) {
            printf("\n");
            for (int i = 0; i < numDevs; i++) {
                ofLog(OF_LOG_VERBOSE, "Dev %d:",i);
                ofLog(OF_LOG_VERBOSE, " Flags=0x%x",devicesList[i].Flags);
                ofLog(OF_LOG_VERBOSE, " Type=0x%x",devicesList[i].Type);
                ofLog(OF_LOG_VERBOSE, " ID=0x%x",devicesList[i].ID);
                ofLog(OF_LOG_VERBOSE, " LocId=0x%x",devicesList[i].LocId);
                ofLog(OF_LOG_VERBOSE, " SerialNumber=%s",devicesList[i].SerialNumber);
                ofLog(OF_LOG_VERBOSE, " Description=%s",devicesList[i].Description);
                ofLog(OF_LOG_VERBOSE, " ftHandle=0x%x\n",devicesList[i].ftHandle);
            }
            numPortsFound = numDevs;
        } else {
            ofLog(OF_LOG_ERROR, "FTD2XX::FT_GetDeviceInfoList() failed");
        }
    } else {
        ofLog(OF_LOG_ERROR, "FTD2XX::FT_CreateDeviceInfoList() failed");
    }

    return numPortsFound;

}

Das Problem ist unter OSX, ich bekomme diese Ausgabe:

[notice ] Number of FTDI devices is 4

[verbose] Dev 0:
[verbose]  Flags=0x1
[verbose]  Type=0x3
[verbose]  ID=0x0
[verbose]  LocId=0x0
[verbose]  SerialNumber=
[verbose]  Description=
[verbose]  ftHandle=0x0

[verbose] Dev 1:
[verbose]  Flags=0x1
[verbose]  Type=0x3
[verbose]  ID=0x0
[verbose]  LocId=0x0
[verbose]  SerialNumber=
[verbose]  Description=
[verbose]  ftHandle=0x0

[verbose] Dev 2:
[verbose]  Flags=0x1
[verbose]  Type=0x3
[verbose]  ID=0x0
[verbose]  LocId=0x0
[verbose]  SerialNumber=
[verbose]  Description=
[verbose]  ftHandle=0x0

[verbose] Dev 3:
[verbose]  Flags=0x1
[verbose]  Type=0x3
[verbose]  ID=0x0
[verbose]  LocId=0x0
[verbose]  SerialNumber=
[verbose]  Description=
[verbose]  ftHandle=0x0

[ error ] failed to register FTDI device with serial FTWVZVEBA in internal register
[ error ] error opening port with serial: FTWVZVEBA

was nicht richtig aussieht. Beispielsweise sehe ich unter Windows an Port A / Kanal 1 / Geräteindex 0 Folgendes:

[verbose] Dev 0:
[verbose]  Flags=0x2
[verbose]  Type=0x7
[verbose]  ID=0x4036011
[verbose]  LocId=0x02111
[verbose]  SerialNumber=FTWVZVEBA
[verbose]  Description=USB2-H-5004-M A
[verbose]  ftHandle=0x0

Einen kurzen Blick in / dev zu werfen, sieht gut aus:

ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port    /dev/tty.usbserial-FTWVZVEBB
/dev/tty.Bluetooth-Modem        /dev/tty.usbserial-FTWVZVEBC
/dev/tty.usbmodemfa131          /dev/tty.usbserial-FTWVZVEBD

und durch Systeminformationen bekomme ich:

USB2-H-5004-M:

  Product ID:   0x6011
  Vendor ID:    0x0403  (Future Technology Devices International Limited)
  Version:   8.00
  Serial Number:    FTWVZVEB
  Speed:    Up to 480 Mb/sec
  Manufacturer: FTDI
  Location ID:  0xfd120000 / 4
  Current Available (mA):   500
  Current Required (mA):    200

Ich habe den D2XX-Treiber wie auf der Seite beschrieben installiertFTDI OSX-Installationshandbuch (pdf link) aber ich bin mir nicht sicher was ich vermisse / falsch mache.

Wie kann ich mit der FTDI D2XX-Bibliothek richtig mit dem Gerät kommunizieren?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage