FtLib

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Sitemap
Index
Links
Impressum
Mail
 

fischertechnik Robo Interface

Am 2.5.05 hat fischertechnik einen ersten Stand der FtLib für das ROBO Interface veröffentlicht. Hier ein erster Eindruck. Das FtLib-Päckchen enthält C/C++ Programme zur Ansteuerung des ROBO-Interfaces in mehreren Varianten (verschiedene VC++ 6.0 Libs und eine DLL) sowie eine knappe Dokumentation (einschl. Firmware Dokumentation) dazu. Als Beispiele liegen ein komfortables MFC-Programm zur Steuerung des Interfaces und ein kleines Konsolprogramm - ähnlich dem hier vorgestellten - bei.

Cons2 : Wechselblinker an O1/O2

#include <windows.h>
#include <iostream.h>
#include "FtLib.h"

char Ende;
DWORD res;
FT_HANDLE usbHandle;
UINT anzDev;
FT_TRANSFER_AREA* ftDCB;

void main()
{
  cout << "--- Cons2 gestartet ---" << endl;
  cout << "Version : " << GetLibVersion() << endl;
  res = InitFtLib();                                             (1)
  cout << "Init : " << res << endl;
  res = InitFtUsbDeviceList();                                   (2)
  anzDev = GetAnzFtUsbDevice();                                  
  usbHandle = GetFtUsbDeviceHandle(0);                           (3)
  cout << "DeviceTyp " << GetFtDeviceTyp(usbHandle) << endl;     (4)
  cout << "SerialNr " << GetFtSerialNrStrg(usbHandle) << endl;
  cout << "OpenUSB " << OpenFtUsbDevice(usbHandle) << endl;      (5)

  res = StartFtTransferArea(usbHandle, NULL);                    (6)
  ftDCB = GetFtTransferAreaAddress(usbHandle);                   

  ftDCB->MPWM_Main[0] = 0x07;                                    (7)
  ftDCB->MPWM_Main[1] = 0x07;
  for (int i = 0; i <10; i++) {
    ftDCB->M_Main = 0x01;
    Sleep(333);
    ftDCB->M_Main = 0x02;
    Sleep(333);
  }
  ftDCB->M_Main = 0x00;

  res = StopFtTransferArea(usbHandle);                           (8)
  res = CloseFtDevice(usbHandle);
  res = CloseFtLib();
  cout << "--- FINIS ---" << endl;
  cin.get(Ende);
}

Vorbemerkung : Es wurde Wert auf Einfachheit des Programmes gelegt, man sollte es im Einzelschritt des Debug Mode des Visual Studios laufen lassen und die Ergebnisse manuell auswerten.

(1) Init, Ergebnis 0 : OK

(2) Init USB : Erstellen einer Liste der fischertechnik Devices und Ermittlung der Länge der Liste.
Bei Anschluß eines Interface : res = 0 wenn OK und anzDev = 1.

(3) DeviceHandle : Ermittlung des Handles für das erste (und hier einzige Gerät) der Liste.
0 : Fehler. 

(4) SerialNr, DeviceTyp : Zur Information, wird hier nicht benötigt. (Typ = 60 : USB)

(5) Open : Das ausgewählte Device wird geöffnet

(6) TransferArea : FtLib kennt keine Befehle für den Zugriff auf die Ein-/Ausgänge des ROBO Interface, es arbeitet mit einer "TransferArea" in der alle 10 ms die aktuellen Werte des Interfaces abgestellt bzw. von der Area an das Interface übertragen werden. Die TransferArea ist ein Struktur von 255 Byte in der Details zu den angeschlossenen Interfaces abgestellt werden.

(7) Befehle : 
MPWM : Einstellung des PWM-Werte für O1 und O2
M_Main : Einschalten O1 und später O2 (Achtung eigentlich müßte maskeirt werden, hier werden gleichzeitig alle anderen Ausgänge ausgeschaltet).

(8) Ende : Schließen der Devices ...

Bei Anschluß des ROBO Interfaces über COM geht die Angelegenheit - im Prinzip gleich - etwas einfacher, da die Sucherei nach den USB Devices entfällt (OpenFtCommDevice(PORT_COM2 ....) der Rest ist gleich.

Hier noch eine Zeile zur Abfrage von I1 :

if (ftDCB->E_Main & 0x1 == 0) ....

und zur Ausgabe von AX :

cout << "Aktueller Wert AX : " " << ftDCB->AX << endl;

Spätestens bei den CallBack-Routinen und den Timern wird die Angelegenheit dann schwieriger.

Getestet wurde mit Firmware Version 1.42.0.3 (bei Anschluß über USB geht aber auch noch das alte BetaTest Interface klaglos). Stand der FtLib Datum 2.5.05.

Stand : 01.12.2009