![]() |
![]() |
|---|---|
USB 2.0 USB 3.x GigE |
USB 2.0 USB 3.x GigE |
Syntax
INT is_WriteI2C (HIDS hCam, INT nDeviceAddr, INT nRegisterAddr, BYTE* pbData, INT nLen)
Beschreibung
Mit is_WriteI2C() können bei einigen uEye Platinenkameras Daten über das TWI (Two Wire Interface) geschrieben werden.
Die Funktion erwartet die Geräteadresse als 8-Bit-Wert, der durch einen Bitshift nach links aus der 7-Bit-Adresse des Bausteins laut Datenblatt erzeugt wird. Die Funktion füllt das Bit 0 automatisch, um zu kennzeichnen ob auf die Geräteadresse geschrieben (0) oder von dort gelesen (1) werden soll.
Für Informationen zur Beschaltung des TWI siehe im Kapitel D: Spezifikationen.
|
I2C-Funktionen werden derzeit von folgenden Platinenversionen unterstützt: •uEye LE USB 3.1 Gen 1 •USB 3 uEye LE •USB uEye LE •GigE uEye LE. |
|
Wenn Daten auf einen Mikrocontroller geschrieben werden, muss dafür gesorgt werden, dass dieser den Erhalt der Daten mit ACK bestätigt. |
|
Folgende Adressen für nDeviceAddr sind von der uEye Kamera belegt und dürfen nicht verwendet werden: 7-bit-Format: 0x10, 0x20, 0x21, 0x48, 0x49, 0x4C, 0x50, 0x51, 0x52, 0x55, 0x5C, 0x5D, 0x69, 0x77 8-bit-Format: 0x20, 0x40, 0x42, 0x90, 0x92, 0x98, 0xA0, 0xA2, 0xA4, 0xAA, 0xB8, 0xBA, 0xD2, 0xEE Zusätzlich bei UI-336x/UI-536x und UI-337x/UI-537x: 0x82 |
Übergabeparameter
hCam |
Handle auf Kamera |
nDeviceAddr |
Geräteadresse (8-Bit-Format) |
nDeviceAddr | IS_I2C_DONT_WAIT |
Standardmäßig wird per Polling abgefragt, wann das Byte tatsächlich in die Speicherzelle geschrieben wurde. Wird IS_I2C_DONT_WAIT zu nDeviceAddr verodert findet kein Polling statt. |
nRegisterAddr |
Adresse eines 8-Bit-Registers (nur 8-bit-Adressen gültig) |
nRegisterAddr | |
Adresse eines 16-Bit-Registers |
nRegisterAddr | |
Wenn nur eine Geräteadresse aber keine Register-Adresse vorhanden ist. |
pbData |
Zu schreibende Daten |
nLen |
Datenlänge (siehe Liste unten) |
Abhängig von dem Kameramodell und der Registeradresse gelten für die Datenlänge (nLen) unterschiedliche Minimal- und Maximalwerte.
Kamerafamilie |
7-Bit-Adresse |
Registeradresse |
Minimalwert |
Maximalwert |
|---|---|---|---|---|
USB uEye LE |
Ja |
Kein Flag |
- |
1 Byte nLen == 1 (1 Byte Data) |
USB uEye LE |
Ja |
8-Bit-Register |
- |
1 Byte nLen == 1 (1 Byte Data) |
USB uEye LE |
Ja |
16-Bit-Register |
1 Byte nLen == 1 (1 Byte Data) |
2 Byte nLen == 2 (2 Byte Data) |
USB 3 uEye LE |
Ja |
Kein Flag |
1 Byte nLen == 1 (1 Byte Data) |
62 Byte nLen == 62 (62 Byte Data) |
USB 3 uEye LE |
Ja |
8-Bit-Register |
1 Byte nLen == 1 (1 Byte Data) |
62 Byte nLen == 62 (62 Byte Data) |
USB 3 uEye LE |
Ja |
16-Bit-Register |
2 Byte nLen == 2 (2 Byte Data) |
62 Byte nLen == 62 (62 Byte Data) |
uEye LE USB 3.1 Gen 1 |
Ja |
Kein Flag |
1 Byte nLen == 1 (1 Byte Data) |
62 Byte nLen == 62 (62 Byte Data) |
uEye LE USB 3.1 Gen 1 |
Ja |
8-Bit-Register |
1 Byte nLen == 1 (1 Byte Data) |
62 Byte nLen == 62 (62 Byte Data) |
uEye LE USB 3.1 Gen 1 |
Ja |
16-Bit-Register |
2 Byte nLen == 2 (2 Byte Data) |
62 Byte nLen == 62 (62 Byte Data) |
GigE uEye LE |
Ja |
Kein Flag |
1 Byte nLen == 1 (1 Byte Data) |
62 Byte nLen == 62 (62 Byte Data) |
GigE uEye LE |
Ja |
8-Bit-Register |
1 Byte nLen == 1 (1 Byte Data) |
62 Byte nLen == 62 (62 Byte Data) |
GigE uEye LE |
Ja |
16-Bit-Register |
2 Byte nLen == 2 (2 Byte Data) |
62 Byte nLen == 62 (62 Byte Data) |
Rückgabewert
IS_CANT_COMMUNICATE_WITH_DRIVER |
Kommunikation mit dem Kameratreiber schlug fehl, weil kein Treiber geladen ist. |
IS_CANT_OPEN_DEVICE |
Ein Versuch die Kamera zu öffnen schlug fehl (Kamera nicht vorhanden oder Fehler beim Initialisieren). |
IS_INVALID_CAMERA_HANDLE |
Ungültiges Kamera-Handle |
IS_INVALID_I2C_DEVICE_ADDRESS |
Ungültige I2C-Geräteadresse |
IS_INVALID_PARAMETER |
Einer der übergebenen Parameter ist außerhalb des gültigen Bereichs, oder für diesen Sensor nicht unterstützt, bzw. in diesem Modus nicht zugänglich. |
IS_IO_REQUEST_FAILED |
Eine IO Anforderung des uEye Treibers schlug fehl. Eventuell passen die Versionen der Dateien ueye_api.dll (API) und ueye_usb.sys bzw. ueye_eth.sys (Treiber) nicht zusammen. Dieser Fehlercode wird auch zurückgegeben, wenn sich der Mikrocontroller nicht korrekt mit ACK zurückmeldet. |
IS_NO_SUCCESS |
Allgemeine Fehlermeldung |
IS_SUCCESS |
Funktion erfolgreich |
Verwandte Funktionen
•is_DeviceFeature(): I2C-Stop-Bit setzen
Beispiel
// ------------------------------------------------------
// Auf I2C-Gerät schreiben:
//
// 16-bit-Register adressieren
// Hinweis:
// Es dürfen nur 2 Byte auf einmal geschrieben werden
is_WriteI2C (hCam, DevAdr, RegAdr | IS_I2C_16_BIT_REGISTER, pbData, 2);
// 8-bit-Register adressieren
// Hinweis:
// 1. Es dürfen 1 oder 2 Byte auf einmal geschrieben werden
// 1 Byte schreiben
is_WriteI2C (hCam, DevAdr, RegAdr, pbData, 1);
// 2 Byte schreiben
is_WriteI2C (hCam, DevAdr, RegAdr, pbData, 2);
// ------------------------------------------------------
// Von I2C-Gerät lesen
//
// 16-bit-Register adressieren
is_ReadI2C (hCam, DevAdr, RegAdr | IS_I2C_16_BIT_REGISTER, pbData, 2);
// 8-bit-Register adressieren
// 1 Byte lesen
is_ReadI2C (hCam, DevAdr, RegAdr, pbData, 1);
// 2 Byte lesen
is_ReadI2C (hCam, DevAdr, RegAdr, pbData, 2);
// ------------------------------------------------------
// Beispielwerte
// Adresse des Bausteins (aus dem Datenblatt entnommen): 0x40
// Adresse des Bausteins im 8-bit-Format (Linksshift): 0x80
// Adresse zum Schreiben (von is_WriteI2C() erzeugt): 0x80
// Adresse zum Lesen (von is_ReadI2C() erzeugt): 0x81
//
// Auf Baustein mit Adresse 0x40 Wert 0x52 in Register 0x00 schreiben
BYTE bValue = 0x52;
is_WriteI2C (hCam, 0x80, 0x00, &bValue, 1);
// Von Baustein mit Adresse 0x40 Wert aus Register 0x00 lesen
INT nVal;
BYTE bValue = 0;
is_ReadI2C (hCam, 0x80, 0x00, &bValue, 1);