![]() |
![]() |
|---|---|
uEye LE USB 3.1 Gen 1 uEye SE USB 3.1 Gen 1 |
uEye LE USB 3.1 Gen 1 uEye SE USB 3.1 Gen 1 |
Syntax
INT is_PowerDelivery(HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParams)
Beschreibung
USB Power Delivery (PD) erweitert das USB-System um ein sehr flexibles Stromversorgungsmanagement, das neben der Datenverbindung über dasselbe Kabel realisiert wird. Die Rollenverteilung in Stromlieferant und Verbraucher mitsamt der begrenzten Spannung und Stromstärke gibt es damit nicht mehr. PD-fähige Geräte handeln ihre Fähigkeiten und Anforderungen bezüglich der Versorgungsspannung über ein genormtes Protokoll aus.
IDS Imaging Development Systems GmbH führt USB Power Delivery erstmals mit den Kamerafamilien mit USB Type-C Stecker ein. Die PD-fähige Kamera fordert als PD-Consumer mehr Leistung an, als sie für sich selbst benötigt. Die zusätzliche Spannung wird verwendet, um z. B. über den I/O-Stecker der Kamera eine LED-Beleuchtung mit Strom zu versorgen.
Voraussetzung hierfür ist, dass der Host-PC ebenfalls USB Power Delivery unterstützt und entsprechend mehr Leistung zur Verfügung stellt. Beachten Sie, dass die Stromübertragung über USB Power Delivery nur mit Type-C auf Type-C-Kabeln ("Full Featured"-Kabel) möglich ist.
Mit der Funktion is_PowerDelivery() fragen Sie ab, welche USB Power Delivery Profile die Kamera in Verbindung mit dem Host-PC unterstützt und setzen das entsprechende Profil. Beachten Sie, dass bei einem Reconnect das Profil neu gesetzt werden muss. Das Umschalten zwischen Power Delivery-Profilen sollte vor dem Start des Bildeinzugs durchgeführt werden. Ist der Bildeinzug bereits gestartet, wird dieser beim Umschalten kurzzeitig gestoppt.
|
Achten Sie darauf, dass beim Umschalten zwischen verschiedenen Power Delivery-Profilen das angeschlossene Peripheriegerät keine Leistung aufnimmt. Ist beim Umschalten die Stromaufnahme des Peripheriegeräts zu groß, kann es vorkommen, dass der Host die Kameras abschaltet. Dies führt zu einem Neustart der Kamera mit dem Fallback-Profil. |
Über den Übergabeparameter nCommand wird dabei der Funktionsmodus gewählt. Der Übergabeparameter pParam ist abhängig vom Funktionsmodus unterschiedlich belegt; bei Funktionen zum Setzen oder Rücklesen eines Wertes enthält pParam einen Zeiger auf eine Variable vom Typ UINT. Die Größe des Speicherbereichs, auf den pParam verweist, wird im Übergabeparameter cbSizeOfParam angegeben.
Übergabeparameter
hCam |
Handle auf Kamera |
pParam |
Zeiger auf Funktionsparameter, der abhängig von nCommand unterschiedlich belegt ist. |
cbSizeOfParam |
Größe des Speicherbereichs in Byte, auf den pParam verweist. |
Rückgabewert
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_NO_SUCCESS |
Allgemeine Fehlermeldung |
IS_NOT_SUPPORTED |
Das verwendete Kameramodell unterstützt diese Funktion oder Einstellung nicht. |
IS_SUCCESS |
Funktion erfolgreich |
Beispiel 1
/* Check if power delivery is supported. Note that value 'BOOL' is not a boolean value but a typedef int! */
BOOL bPowerDeliverySupported = FALSE;
INT nRet = is_PowerDelivery(m_hCam, IS_POWER_DELIVERY_GET_SUPPORTED, (void*)&bPowerDeliverySupported, sizeof(bPowerDeliverySupported));
if ((nRet == IS_SUCCESS) && bPowerDeliverySupported)
{
/* Power delivery supported */
}
Beispiel 2
/* Get the available profiles */
UINT nProfiles = IS_POWER_DELIVERY_PROFILE_INVALID;
INT nRet = is_PowerDelivery(m_hCam, IS_POWER_DELIVERY_CMD_GET_SUPPORTED_PROFILES, (void*)&nProfiles, sizeof(nProfiles));
if (nRet == IS_SUCCESS)
{
if ((nProfiles & IS_POWER_DELIVERY_PROFILE_15V) == IS_POWER_DELIVERY_PROFILE_15V)
{
/* 15V power profile is supported */
}
}
Beispiel 3
/* Get the current power delivery mode */
UINT nProfile = IS_POWER_DELIVERY_PROFILE_INVALID;
INT nRet = is_PowerDelivery(m_hCam, IS_POWER_DELIVERY_CMD_GET_PROFILE, (void*)&nProfile, sizeof(nProfile));
if (nRet == IS_SUCCESS)
{
/* nProfile holdes one of the profiles defined in POWER_DELIVERY_PROFILES in ueye.h, check for your needs e.g. for the 15V profile: */
if ((nProfile & IS_POWER_DELIVERY_PROFILE_15V) == IS_POWER_DELIVERY_PROFILE_15V)
{
/* Current Profile is 15V */
}
}
Beispiel 4
/* Set the selected profile */
UINT nProfile = IS_POWER_DELIVERY_PROFILE_15V;
INT nRet = is_PowerDelivery(m_pMainView->GetCameraHandle(), IS_POWER_DELIVERY_CMD_SET_PROFILE, (void*)&nProfile, sizeof(nProfile));
if (nRet == IS_SUCCESS)
{
/* 15V profile is set */
}