| fischertechnik Robo InterfaceAm 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. (3) DeviceHandle : Ermittlung des Handles für das erste (und hier einzige
Gerät) der Liste. (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 : (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 |