|
USB2.DLL Ein einfaches Programmierinterface für den Cypress Cy7c68013 USB2.0 Controller. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Available Languages:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Index | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Was ist USB2.DLL? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| USB2.DLL ist eine einfache Programmierschnittstelle für
den USB2.0 Controller CY7C68013 und dem "USB HighSpeed Interface V2.0" der Firma Braintechnology.
Sie lässt sich praktisch von jeder Programmiersprache aus ansprechen
und kann viel Zeit bei der Realisierung von usb2.0 Projekten sparen, da
man sich nicht in das komplexe Thema der USB-Programmierung einarbeiten
muss.
Das Produkt befindet sich momentan noch in der Entwicklung, weswegen im Moment noch nicht alle geplanten Funktionen realisiert sind. Das bringt andererseits den Vorteil, dass sie noch in den Entwicklungsprozess eingreifen und sinnvolle Funktionen vorschlagen können, die Ihnen fehlen.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Zum USB HighSpeed Interface Modul V2.0 & V2.5 von Braintechnology | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Die Usb2Dll wird mit Hilfe des Usb2.0 Interfaces von Braintechnology entwickelt. Dieses Interface ist Ideal um eigene Entwicklungen im USB2.0 Sektor zu realisieren. Pinbelegung des
Modules:
Anschlüsse:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Installation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Um die USB2.DLL benutzen zu können muss der ezusb-Treiber
der Firma Cypress installiert sein. Er lässt sich von der Seite der
Firma Cypress, oder
Braintechnology
herunterladen.
Die Dll muß sich in dem Suchpfad für ddls befinden. Das ist entweder das Systemverzeichnis des Rechners, oder das Verzeichnis, in dem sich das Programm befindet, das die dll nutzt. Eine Registrierung mit Hilfe von regsvr32 ist nicht nötig, da es sich nicht um eine activex-dll handelt.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Generelles zur DLL | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Jede Funktion der Dll besitzt einen
Rückgabewert vom Typ Boolean. Ist er TRUE, so war das Ausführen der
Funktion erfolgreich. Ist er FALSE, so ist ein Fehler aufgetreten. Die
Fehlerquelle kann mit den Funktionen UsbGetError
und UsbGetErrorStringByNr ermittelt
werden.
Fast jede Funktion besitzt DevNum als Aufrufparameter. Er muß die Nummer des anzusprechenden USB-Interfaces beinhalten. Das erste angeschlossene Interface besitzt die Nummer 0, das zweite die Nummer 1, ... Ist nur ein Interface angeschlossen, so muß man 0 übergeben.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Beispiele | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Im Moment gibt es 2 Beispiele, die den Zugriff auf die Funktionen verdeutlichen: pardemo: Dieses Programm demonstriert die Programmierung des Parallel-interfaces. Nach dem Start muss der Button Initialize Parallel Interface gedrückt werden. Ein Klick auf den Button Write! schreibt die in dem Edit-Feld angegebene Anzahl von Bytes auf dem Parallel Interface. Hinweis: Das Demo arbeitet mit Parallelmodus 4. i2cdemo: Hiermit können Werte in das interne EEProm gelesen und geschrieben werden. Außerdem kann die Geschwindigkeit des i2c-Busses gewählt werden. Zum Schreiben eines Wertes muß man die Felder Address und Value füllen und auf Write klicken. Zum Lesen eines Wertes aus dem EEProm trägt man die Adresse der Speicherzelle in das Feld Address ein und klickt auf Read. Der gelesene Wert wird dann im Feld Value angezeigt. iodemo: Mit Hilfe des Programms können sie sich die Zustände der IO-Leitungen anzeigen
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Header und Includes für diverse Programmiersprachen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Der Ordner Includes enthält Includes und teilweise Beispiele für Programmiersprachen wie Microsoft Visual Basic, Delphi und Microsoft Visual C++ Wer die DLL in andere Programmiersprachen einbinden will, zu denen keine Includes vorliegen findet hier die Beschreibung der für Aufruf- und Rückgabeparameter verwendeten Datentypen:
Befindet sich das Schlüsselwort "Var" vor einem Parameter, so wird ein Zeiger auf den Wert übergeben. Es entspricht dem Operator "*" in C, bzw. dem Schlüsselwort "byRef" in Visual Basic.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Latenzzeiten und Geschwindigkeit | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Aufgrund des bei USB zugrundeliegenden Protokolles können
unabhängige Datentransfers lediglich innerhalb von Frames, bzw.
Microframes (USB2) initiiert werden. Für USB1.1 hat dies eine Latenzzeit
von ca. 1ms, für USB2 ca. 1/8ms zufolge. Anwendungen, die eine möglichst
niedrige Latenzzeit erfordern sind also auf die Benutzung einer USB2
Schnittstelle angewiesen. Bei dem Programmieren sollte man sich der erwähnten Latenzzeiten bewusst sein. Es ist ineffizient grössere Datenmengen in "kleinen Stücken" zu übertragen.
Während die Übertragung in Beispiel 1 ca. 8ms (USB2) dauert, so benötigt der Transfer in Beispiel 2 nur noch ca. 1/8 ms.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Funktionen der DLL | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Allgemeine Funktionen | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbInit | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbInit(DevNum : Byte) :
Boolean;
Initialisiert das durch DevNum spezifizierte USB-Interface. Der Initialisierungsvorgang programmiert die aktuellste Firmware in den Controller und ist somit zur weitergehenden Kommunikation zwingend notwendig. Die Routine wartet so lange, bis das Gerät neu enumeriert wurde (normalerweise ca. 1.5 Sekunden). Dies vermeidet Fehler, die durch zu frühe Ansteuerung des Interfaces auftreten können. Das Interface wird nicht exklusiv geöffnet, das heisst mehrere Programme können gleichzeitig auf den USB-Controller zugreifen. Deswegen ist auch kein "Schliessen" der DLL nötig.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbGetError | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbGetError : Byte;
Ist ein Fehler während der Kommunikation mit dem Interface aufgetreten, so liefert diese Funktion die Fehlernummer zurück. Ist der zurückgegebene Wert 0, so ist kein Fehler aufgetreten. Nach dem Auslesen des Fehlerspeichers, wird er zurückgesetzt.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbGetErrorStringByNr | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbGetErrorStringByNr(ErrNr : Byte;
var PString :
PChar) : boolean;
Wird in ErrNr die durch UsbGetError übermittelte Fehlernummer übergeben, so wird in PString ein Zeiger auf die Fehlermeldung in Klartext zurückgegeben. Aus Kompatibilitätsgründen wird hier mit PChars gearbeitet und nicht mit Strings. Ein PChar ist ein Nullterminierter String, wie er z.B. in C benutzt wird.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbSetLicense | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wird diese Funktion nicht ausgeführt und in dem Parameter Filename kein Dateiname einer gültigen Lizenzdatei angegeben, handelt es sich nur um eine Demoversion. In der Demoversion erscheint etwa alle 10 Minuten ein Fenster.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbCheckSpeed | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbOpen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Normalerweise wird beim Ausführen jeder Funktion das Gerät
automatisch geöffnet und geschlossen. Dies bringt natürlich einen
kleinen Geschwindigkeitsverlust, allerdings auch den Vorteil, das
mehrere Applikationen gleichzeitig auf das Gerät zugreifen können. Wer diese Funktion einsetzt, sollte sie direkt nach der Funktion UsbInit aufrufen.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbClose | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Schliesst das Gerät, wenn es mittels UsbOpen geöffnet wurde. Wird UsbOpen nicht benutzt, so ist auch der Aufruf von UsbClose nicht erforderlich.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbCheckSpeed | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbGetVersion | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gibt in VersionStr die Versionsnummer der aktuell benutzten DLL zurück. VersionStr muss auf einen Speicherbereich von 16 Byte oder mehr zeigen.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | IO Funktionen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbSetIOState | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbSetIOState(DevNum, LineNum, State : Byte) : boolean;
Setzt eine einzelne IO-Leitung auf High (State=1) oder Low (State=0). An LineNum muß die Nummer der IO-Leitung übergeben werden. Die Zuordnung ist folgendermassen:
Damit sich diese Änderung auch an der IO-Leitung auswirkt, muss mittels UsbSetIODir oder UsbSetPortDir die IO-Leitung als Ausgang programmiert werden.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbSetIODir | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbSetIODir(DevNum, LineNum, State : Byte) : boolean;
Setzt die Richtung einer IO-Leitung auf Ausgang (State=1) oder Eingang (State=0). Nach dem Initialisieren des Interfaces sind alle IO-Leitungen als Eingang geschaltet. Die Zuordnung von LineNum zu den IO-Leitungen entspricht der von UsbSetIOState.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbGetIOState | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbGetIOState(DevNum, LineNum : Byte; var State : Byte) : boolean;
Liefert in State den Zustand einer IO-Leitung zurück. Ist er High, so wird State=1, ist er Low, so wird State=0 zurückgeliefert. Die Zuordnung von LineNum zu den IO-Leitungen entspricht der von UsbSetIOState.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Port Funktionen | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbSetPortState | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbSetPortState(DevNum, PortNum, State : Byte) : boolean;
Setzt einen der 3 Ports auf den durch State übergebenen Zustand. An PortNum muß die Nummer der Portleitung übergeben werden. Die Zuordnung ist folgendermassen:
Ist ein Bit von State 1, so wird der entsprechende Port-Pin High geschaltet. Damit sich diese Änderung auch an den IO-Leitungen auswirkt, müssen mittels UsbSetIODir oder UsbSetPortDir die relevanten Portleitungen als Ausgang programmiert werden.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbSetPortDir | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbSetPortDir(DevNum, PortNum, Dir : Byte) : boolean;
Setzt die Richtungen der Portleitungen des durch Portnum ausgewählten Ports. Ist ein Bit High, so wird die entsprechende IO-Leitung zu einem Ausgang, sonst ein Eingang. Die Zuordnung von PortNum zu den IO-Leitungen entspricht der von UsbSetPortState
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbGetPortState | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbGetPortState(DevNum, PortNum : Byte; var State : Byte) : boolean;
Liefert den Zustand des durch Portnum spezifizierten Ports zurück. Die Zuordnung von PortNum zu den IO-Leitungen entspricht der von UsbSetPortState.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| i2c-Bus Funktionen | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbI2CSetSpeed | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbI2CSetSpeed(DevNum, Speed : Byte) : boolean;
Setzt die Geschwindigkeit des i2c-interfaces. Wird Speed=0 übergeben, so arbeitet das i2c-interface mit 100khz. Speed=1 schaltet das i2c-Interface auf 400khz.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbI2CWriteByte | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbI2CWriteByte(DevNum,
SlaveAddr, Data : Byte) : boolean;
Schreibt das Byte Data an das i2c-Device mit der Slaveadresse SlaveAddr. Bitte beachten: Hat das anzusprechende i2c-device z.B. die Adresse 0xA0, so müssen Sie an diese und sämtliche andere i2c-Funktionen 0x50 übergeben, d.h. eine um 1 bit nach rechts verschobene Adresse (SlaveAddr >> 1).
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbI2CWriteBytes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbI2CWriteBytes(DevNum,
SlaveAddr, Length : Byte; P : Pointer) : boolean;
Schreibt den Datenblock, auf den der Pointer P zeigt mit der Länge Length an das i2c-Device mit der Slaveadresse SlaveAddr.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbI2CReadByte | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbI2CReadByte(DevNum, SlaveAddr : Byte; var Data : Byte) : boolean;
Ließt ein einzelnes Byte von dem i2c-Device mit der Slaveadresse SlaveAddr. Der gelesene Wert wird an Data übergeben.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbI2CReadBytes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbI2CReadBytes(DevNum, SlaveAddr, Length : Byte; PData : Pointer) : boolean;
Ließt einen Datenblock mit der Länge von Length Bytes von dem i2c-Device mit der Slaveadresse SlaveAddr.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbI2CWriteAndReadBytes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbI2CWriteAndReadBytes(DevNum, SlaveAddr, WriteLen, ReadLen :
Byte; PWrite, PRead : Pointer) : boolean;Schreibt den Datenblock, auf den der Pointer PWrite zeigt mit der Länge WriteLen an das i2c-Device mit der Slaveadresse SlaveAddr. Nach dem Schreibvorgang wird direkt eine Anzahl von ReadLen Bytes von dem selben i2c-Device gelesen. Die gelesenen Daten werden in den Buffer auf den der Pointer PRead zeigt abgelegt.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| i2c-EEProm Funktionen | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbEEpWriteByte | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbEEpWriteByte(DevNum : Byte; Addr : Word; Data : Byte) :
boolean;
Schreibt das Datenbyte Data an Adresse Addr des internen EEProms.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbEEpWriteBytes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbEEpWriteBytes(DevNum : Byte; Addr : Word; Length : Byte; PData : Pointer) : boolean;
Schreibt den Datenblock auf den der Pointer PData zeigt mit der Länge von Length Bytes an Adresse Addr des internen EEProms.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbEEpReadByte | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbEEpReadByte(DevNum : Byte; Addr : Word; var Data : Byte) : boolean;Ließt ein einzelnes Datenbytes von Adresse Addr des internen EEProms. Der gelesene Wert wird in Data zurückgegeben.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbEEpReadBytes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function UsbEEpReadBytes(DevNum : Byte; Addr : Word; Length : Byte; PData : Pointer) : boolean;
Ließt einen Datenblock mit der Länge von Length Bytes von dem Internen EEProm. Die gelesenen Daten werden in den Speicher geschrieben, auf den PData zeigt.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbEEpSetAddr | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Setzt die zu benutzende i2c-slaveadresse des internen EEProms. Die Adressen der 2 verschiedenen USB2-Module von Braintechnology sind:
Sollten Sie das neue Modul von Braintechnology (V2.5) einsetzen, müssen Sie vor Benutzung von EEprom-Funktionen die Funktion folgendermassen aufrufen: UsbEEpSetAddr(0, $51);
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Parallelport-Funktionen | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Generelle Informationen zum Parallelbus | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Das Parallelinterface ist recht flexibel. Das geht so weit, dass man
als Firmware-Programmierer den Ablauf von Schreib- und Lesezyklen mit
seinen Steuerleitungen geradezu "malen" kann. Mit Hilfe des Parallelbusses sind Sie in der Lage grosse Datenmengen schnell zu übertragen. Unabhängig von dem gewählten Modus unterliegt er gewissen Eigenschaften. Im Detail sind dies:
Innerhalb von Datenblöcken werden die einzelnen Datenworte zeitlich äquidistant übertragen. Die Abstände zwischen den Datenblöcken, in denen keine Daten übertragen werden, hängen von dem verwendeten Parallelbusmodus ab. Deshalb werden Anwendungen die auf äquidistante Datenübertragung >512 Byte angewiesen sind einen FIFO benötigen.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbParInit | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Initialisiert das Parallelinterface mit einem der vordefinierten Modi (mode). Eine Initialisierung ist zwingend notwendig um Daten über das Parallelinterface ein- oder auszugeben. Folgende Modi sind implementiert:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbParInitUsingArray | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Initialisiert das Parallelinterface mit Hilfe eines 152 Byte großen Arrays. Falls Sie spezielle Anforderungen an den Parallelbus haben, die durch die oben beschriebenen Standard-Modi nicht abgedeckt sind, so können wir den Bus nach Ihren Anforderungen gestalten und schicken Ihnen einen 152 Byte großen Datenblock zu, den Sie mit Hilfe dieser Funktion aktivieren. Ein zusätzlicher Aufruf der Funktion UsbParInit darf dann nicht erfolgen. Momentan wird eine Anwendung entwickelt, mit der Sie selber die Funktionsweise des Parallelbusses definieren und diesen Datenblock erstellen können. Sie befindet sich momentan in der Testphase und wird vorraussichtlich in der nächsten Version enthalten sein. Unter "normalen" Bedingungen werden Sie diesen Befehl jedoch nicht aufrufen müssen.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbParOut | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Gibt eine Anzahl von Len Datenworte auf dem Parallelbus aus. Data ist ein Zeiger auf einen Datenblock der die zu übermittelnden Daten enthält. Beispiele: Befindet sich das Parallelinterface im 8 Bit Modus und es sollen 768 Bytes übermittelt werden: UsbParOut(0, @Daten, 768); Befindet sich das Parallelinterface im 16 Bit Modus und es sollen 768 Bytes (=384 Words) übermittelt werden: UsbParOut(0, @Daten, 384);
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbParIn | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Liesst Len Datenworte von dem Parallelbus ein. Data ist ein Zeiger auf einen Datenblock, der mit den gelesenen Daten gefüllt wird. Beispiele: Befindet sich das Parallelinterface im 8 Bit Modus und es sollen 768 Bytes gelesen werden: UsbParIn(0, @Daten, 768); Befindet sich das Parallelinterface im 16 Bit Modus und es sollen 768 Bytes (=384 Words) gelesen werden: UsbParIn(0, @Daten, 384);
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | UsbGetRdyState | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Der Zustand von Bit 0 entspricht dem von RDY0, Bit1 RDY1, ...
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Problemlösungen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Geplante Erweiterungen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Versionsgeschichte | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | Kontakt | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Dieses Produkt wird von Kai Goßner im Auftrag von Braintechnology entwickelt. Dadurch, dass sich dieses Produkt noch in der Entwicklung befindet, würden wir uns sehr über Vorschläge und Fehlerbeschreibungen freuen. Email: Braintechnology: Info@Braintechnology.de Kai Gossner: webmaster@elektronikseiten.de WWW: www.braintechnology.de |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ^ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||