vigocam.dll - VIGO SYSTEM SA

Transkrypt

vigocam.dll - VIGO SYSTEM SA
vigocam.dll
Biblioteka komunikacyjna
dla kamer termograficznych serii
VIGO System S.A.
2014
Wersja 1.5.0
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
2
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
Opis biblioteki................................................................................................................................................... 5
Funkcje............................................................................................................................................................. 7
v50_GetUsbNumDevices............................................................................................................................ 7
v50_GetUsbDeviceName............................................................................................................................ 7
v50_Connect................................................................................................................................................ 8
v50_Disconnect........................................................................................................................................... 8
v50_GetDeviceInfo...................................................................................................................................... 9
v50_GetDataInfo.......................................................................................................................................... 9
v50_GetRangeInfo....................................................................................................................................... 9
v50_GetRange........................................................................................................................................... 10
v50_SetRange........................................................................................................................................... 10
v50_GetParams......................................................................................................................................... 10
v50_SetParams......................................................................................................................................... 11
v50_GetView.............................................................................................................................................. 11
v50_SetView.............................................................................................................................................. 11
v50_GetAlarms.......................................................................................................................................... 12
v50_SetAlarms.......................................................................................................................................... 12
v50_GetAlarmsOutput............................................................................................................................... 13
v50_SetAlarmsOutput................................................................................................................................ 13
v50_GetFrame........................................................................................................................................... 14
v50_MakeImage........................................................................................................................................ 14
v50_GetPhoto............................................................................................................................................ 15
v50_RTStart............................................................................................................................................... 16
v50_RTStop............................................................................................................................................... 17
v50_RTStartEv.......................................................................................................................................... 17
v50_RTGetBuffer....................................................................................................................................... 17
v50_SetLaser............................................................................................................................................. 18
v50_MakeNUC.......................................................................................................................................... 18
v50_ShutterOpen....................................................................................................................................... 18
v50_ShutterClose...................................................................................................................................... 18
v50_CreateBuffer....................................................................................................................................... 19
v50_ReleaseBuffer.................................................................................................................................... 19
v50_CreateBitmap..................................................................................................................................... 19
v50_ReleaseBitmap................................................................................................................................... 20
v50_GetImageSize.................................................................................................................................... 20
v50_ResultDesc......................................................................................................................................... 20
Typy danych i struktury................................................................................................................................... 22
V50RESULT.............................................................................................................................................. 22
V50HANDLE.............................................................................................................................................. 22
V50RECFUNC........................................................................................................................................... 22
V50RESOLUTION..................................................................................................................................... 22
V50IMAGESIZE......................................................................................................................................... 23
V50BUFFER.............................................................................................................................................. 23
V50COMTYPE........................................................................................................................................... 23
V50DEVICETYPE...................................................................................................................................... 24
V50ADDRESS........................................................................................................................................... 24
V50LENSINFO.......................................................................................................................................... 25
V50DATETIME.......................................................................................................................................... 26
V50DEVICEINFO...................................................................................................................................... 27
V50RANGE................................................................................................................................................ 28
V50ALARMSOUTPUT............................................................................................................................... 28
V50PARAMS............................................................................................................................................. 29
V50VIEW................................................................................................................................................... 30
V50DATAINFO........................................................................................................................................... 30
V50ALARMTYPE....................................................................................................................................... 31
V50ALARMS.............................................................................................................................................. 31
V50ALARMSOUTPUT............................................................................................................................... 32
Identyfikatory błędów...................................................................................................................................... 34
3
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
4
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
Opis biblioteki
Biblioteka vigocam.dll przeznaczona jest do komunikacji z kamerami termograficznymi serii VIGOcam.
Biblioteka obsługuje modele kamer oznaczone symbolami v50 i v60. Komunikacja z kamerą odbywa się
z użyciem protokołów sieciowych rodziny TCP/IP (tylko model v50) lub za pomocą uniwersalnej magistrali
szeregowej USB (tylko model v60).
W przypadku komunikacji z użyciem protokołu sieciowego TCP/IP, do przekazywania rozkazów, przesyłania
parametrów do kamery i z kamery, oraz do pobierania pojedynczych obrazów biblioteka używa protokołu
połączeniowego TCP, zaś do przesyłania w czasie rzeczywistym danych pomiarowych z kamery do
komputera używany jest protokół bezpołączeniowy UDP. W przypadku transmisji danych w czasie
rzeczywistym z użyciem protokołu UDP, gdy sieć jest obciążona, może dojść do utraty części danych, przez
co efektywna prędkość transmisji może być niewystarczająca do wielu aplikacji. W takim przypadku nie
zaleca się pracy w czasie rzeczywistym.
W przypadku komunikacji z użyciem uniwersalnej magistrali szeregowej USB, do prawidłowej pracy
niezbędne jest zainstalowanie odpowiednich sterowników. Sterowniki umożliwiające komunikację z kamerą
VIGOcam v60 dołączone są do oprogramowania wchodzącego w skład standardowego wyposażenia
kamery.
Biblioteka przeznaczona jest dla programistów tworzących swoje aplikacji w języku C/C++ i dostarczona jest
z plikami niezbędnymi do współpracy z kompilatorami C/C++.
Biblioteka vigocam.dll przeznaczona jest dla 32-bitowych i 64-bitowych systemów operacyjnych Microsoft
Windows. Testy funkcjonalne biblioteki odbywają się w systemie Microsoft Windows XP z dodatkiem Service
Pack 2.
Biblioteka nie obsługuje wielowątkowości, tzn. wszystkie wywołania funkcji bibliotecznych w ramach jednej
aplikacji powinny być wykonywane z jednego wątku. Nieprzestrzeganie tej zasady może doprowadzić do
nieprawidłowego funkcjonowania biblioteki, z zawieszeniem aplikacji włącznie.
Ze względu na możliwe długie czasy wykonania niektórych funkcji zawartych w bibliotece zaleca się, aby
wątek obsługujący bibliotekę nie był głównym wątkiem aplikacji. Zalecane jest utworzenie odrębnego wątku
realizującego wyłącznie komunikację z kamerą z użyciem biblioteki vigocam.dll.
Biblioteka vigocam.dll przeznaczona jest do ładowania statycznego. Nie zaleca się dynamicznego
ładowania biblioteki w trakcie wykonywania aplikacji.
Dokumentacja ta dotyczy biblioteki w wersji 1.5.0. Biblioteka w tej wersji pracuje poprawnie z kamerami
VIGOcam v50 posiadającymi oprogramowanie wewnętrzne w wersji nie niższej niż 2.4.4 oraz kamerami
VIGOcam v60 z oprogramowaniem wewnętrznym w wersji nie niższej niż 1.4.3, z tym zastrzeżeniem, że
nowa funkcjonalność dostępna w bibliotece (możliwość konfiguracji alarmów oraz bezpośredniego
sterowania wyjściami alarmowymi) jest dostępna tylko i wyłącznie w kamerach
VIGOcam v50
posiadających oprogramowanie wewnętrzne w wersji co najmniej 2.5.2.
W przypadku próby połączenia za pomocą biblioteki z kamerą posiadająca starszą wersję oprogramowania,
funkcja v50_Connect() zwróci błąd V50R_INCOMPATIBLEFIRMWARE. W takim wypadku należy
zaktualizować oprogramowanie wewnętrzne kamery. Aktualizacja oprogramowania dokonuje się
automatycznie przy próbie połączenia z kamerą za pomocą dołączonego do kamery oprogramowania
THERM. Szczegółowe informacje dotyczące oprogramowania THERM znajdują się w instrukcji obsługi
kamery VIGOcam.
Biblioteka dostarczona jest w postaci elektronicznej (skompresowany plik vigocam.zip), na płycie CD lub
na innym nośniku. Do użycia biblioteki w aplikacji użytkownika wymagane są następujące pliki:
• vigocam.dll – właściwy plik biblioteki DLL zawierający kod wykonywalny,
• vigocam.lib – biblioteka importowa niezbędna dla kompilatora,
• vigocam.h – plik nagłówkowy w języku C/C++ zawierający deklarację typów i funkcji.
5
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
Dodatkowo do biblioteki dołączony jest plik v50comm.h zapewniający kompatybilność biblioteki na
poziomie plików nagłówkowych z wcześniejszą biblioteką v50comm.dll, przeznaczoną wyłącznie do
współpracy z kamerami VIGOcam v50.
Oprócz plików niezbędnych do użycia biblioteki vigocam.dll w aplikacji użytkowania, do biblioteki dołączone
są dwa przykładowe programy napisane w języku C++ umożliwiające przetestowanie poszczególnych funkcji
bibliotecznych. Dostępny jest również ich kod źródłowy. Programy znajdują się w podkatalogu /examples/.
Aplikacja vigocam_test znajdująca się w podkatalogu /builder/ stworzona jest za pomocą pakietu
Borland C++ Builder w wersji 6, ale można ją z powodzeniem zaimportować do nowszych wersji pakietu
C++ Builder. Do programu dołączone są też biblioteki VCL niezbędne do uruchomienia programu testowego
bez instalacji wyżej wymienionego środowiska programistycznego (znajdują się podkatalogu
/builder/vcl_lib/). Drugi z programów, vigocam_dll_test znajdujący się w podkatalogu /qt/ został
stworzony przy użyciu pakietu Qt Creator w wersji 3.0.1 (na bazie Qt 5.2.1, z kompilatorem MinGW 4.8.0),
przetestowany w systemie Windows 7 SP1. Oprócz użycia innego środowiska, program ten różni się od
pierwszego dynamicznym ładowaniem biblioteki oraz zaimplementowaniem dwóch mechanizmów
obsługujących pracę kamery w czasie rzeczywistym.
Do biblioteki dołączona jest również dokumentacja znajdująca się w podkatalogu /doc/.
6
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
Funkcje
v50_GetUsbNumDevices
Pobiera ilość zainstalowanych w systemie i aktualnie podłączonych kompatybilnych urządzeń.
V50RESULT v50_GetUsbNumDevices(UINT* pNumDevices);
pNumDevices
wskaźnik na zmienną typu UINT, w której zostanie zapisana ilość dostępnych urządzeń.
Funkcja służy do pobrania ilości aktualnie dostępnych urządzeń podłączonych do komputera za pomocą
uniwersalnej magistrali szeregowej USB. Zliczane są wyłącznie urządzenia prawidłowo zainstalowane
w systemie, aktualnie podłączone do komputera i gotowe do współpracy.
Prawidłowo wywołana funkcja zwraca wartość V50R_OK.
v50_GetUsbDeviceName
Pobiera nazwę kompatybilnego przyłączonego urządzenia USB.
V50RESULT v50_GetUsbDeviceName(char* sDevName,UINT nDevNum);
sDevName
wskaźnik na bufor przechwytujący nazwę urządzenia. Rozmiar bufora nie powinien być
mniejszy od wartości stałej systemowej MAX_PATH.
nDevNum
identyfikator urządzenia, którego dotyczy polecenie pobrania nazwy.
Funkcja umożliwia pobranie nazwy urządzenia w postaci ciągu znaków jednoznacznie identyfikującego
kompatybilne urządzenie podłączone do magistrali USB. Nazwa urządzenia może być użyta do nawiązania
połączenia za pomocą systemowej funkcji CreateFile z pominięciem funkcji udostępnianych przez
bibliotekę.
Argumentem funkcji jest numer urządzenia nDevNum. Urządzenia są numerowane od zera. Do określenia
aktualnej ilości dostępnych urządzeń służy funkcja v50_GetUsbNumDevices().
Prawidłowo wywołana funkcja zapisuje pełną nawę urządzenia do bufora wskazywanego przez sDevName,
a następnie zwraca wartość V50R_OK.
Jeżeli urządzenie o podanym numerze nie istnieje, funkcja zwraca wartość V50R_DEVICENOTFOUND.
7
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_Connect
Nawiązuje połączenie z kamerą.
V50RESULT v50_Connect(V50HANDLE* pHandle,V50ADDRESS* pAddress);
Wywołanie funkcji v50_Connect() umożliwia nawiązanie połączenia z kamerą i jest niezbędne do dalszej
komunikacji z kamerą.
pHandle
wskaźnik do zmiennej typu V50HANDLE, w której zostanie zapisany uchwyt nawiązanego
połączenia. Uchwyt jest niezbędny przy wywoływaniu funkcji komunikującej się z kamerą
oraz do zamknięcia połączenia z użyciem funkcji v50_Disconnect().
pAddress
wskaźnik na strukturę typu V50ADDRESS przechowującą typ interfejsu używanego do
połączenia z kamerą oraz inne dane niezbędne do nawiązania połączenia (zależne od
typu wybranego interfejsu).
Nawiązywanie połączenia może potrwać do kilkunastu sekund w zależności od fizycznego sposobu
połączenia oraz obciążenia sieci (jeżeli połączenie jest realizowane przez sieć lokalną lub internet).
Gdy połączenie zostanie prawidłowo nawiązane, funkcja zwraca wartość V50R_OK i zapisuje uchwyt
bieżącego połączenia w zmiennej wskazywanej przez pHandle, W przypadku niepowodzenia funkcja
zwraca kod błędu, zaś wartość zmiennej wskazywanej przez pHandle pozostaje niezmieniona.
W przypadku próby połączenia z kamerą posiadającą oprogramowanie wewnętrzne niekompatybilne
z biblioteką vigocam.dll, funkcja v50_Connect() zwróci wartość V50R_INCOMPATIBLEFIRMWARE.
Połączenie otwarte za pomocą funkcji v50_Connect() należy zamknąć używając funkcji v50_Disconnect().
v50_Disconnect
Zamyka wcześniej nawiązane połączenie z kamerą.
V50RESULT v50_Disconnect(V50HANDLE* pHandle);
pHandle
wskaźnik do zmiennej przechowującej uchwyt połączenia z kamerą pozyskany w wyniku
wywołania funkcji v50_Connect().
Funkcja zamyka połączenie z kamerą i zeruje uchwyt do połączenia wskazywany przez pHandle.
Jeżeli włączony jest tryb pracy w czasie rzeczywistym, to przed użyciem funkcji v50_Disconnect() należy
zakończyć ten tryb pracy za pomocą funkcji v50_RTStop().
8
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_GetDeviceInfo
Pobiera informacje o kamerze.
V50RESULT v50_GetDeviceInfo(V50HANDLE Handle,
V50DEVICEINFO* pDevInfo);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pDevInfo
wskaźnik na strukturę V50DEVICEINFO, wewnątrz której funkcja zapisze informacje
o kamerze.
Funkcja służy do pobierania informacji o kamerze, z którą zostało nawiązane połączenie za pomocą funkcji
v50_Connect(). Zaleca się wywołanie funkcji v50_GetDeviceInfo() bezpośrednio po nawiązaniu połączenia
w celu pozyskania istotnych informacji o parametrach kamery. W ten sposób można między innymi pobrać
listę dostępnych zakresów pomiarowych, którą zawiera tablica Ranges struktury V50INFO, a także listę
dostępnych rozdzielczości obrazu termograficznego i obrazu z kamery wideo.
v50_GetDataInfo
Pobiera informacje o aktualnych ustawieniach kamery.
V50RESULT v50_GetDataInfo(V50HANDLE Handle,
V50DATAINFO* pDataInfo);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pDevInfo
wskaźnik na strukturę V50DATAINFO, wewnątrz której funkcja zapisze informacje
o aktualnych ustawieniach kamery.
Funkcja umożliwia pobranie aktualnych ustawień kamery zapisywanych w strukturze V50DATAINFO.
Struktura ta przechowuje informacje o bieżącym zakresie pomiarowym, parametrach pomiaru i widoku.
v50_GetRangeInfo
Pobiera parametry zakresu pomiarowego na podstawie indeksu zakresu i indeksu obiektywu.
V50RESULT v50_GetRangeInfo(V50HANDLE Handle,
V50RANGEINFO* pRangeInfo);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pRangeInfo
wskaźnik na strukturę V50RANGEINFO, której zawartość zostanie uzupełniona.
Stosując funkcję v50_GetRangeInfo() można pozyskać informacje o minimalnej i maksymalnej
temperaturze mierzonej na danym zakresie pomiarowym. W strukturze V50RANGEINFO wskazywanej
przez pRangeInfo należy wypełnić pola Idx i Lens, wpisując odpowiednio indeks zakresu pomiarowego
i indeks stosowanego obiektywu. Funkcja v50_GetRangeInfo() uzupełni zawartość pól TMin i TMax.
Funkcja v50_GetRangeInfo() nie komunikuje się z kamerą a jedynie korzysta z wcześniej pozyskanych
informacji z kamery podczas nawiązywania połączenia lub ostatniego wywołania funkcji
v50_GetDeviceInfo().
9
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_GetRange
Pobiera z kamery aktualne ustawienia zakresu pomiarowego.
V50RESULT v50_GetRange(V50HANDLE Handle,V50RANGE* pRange);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pRange
wskaźnik na strukturę V50RANGE wewnątrz której funkcja zapisze aktualne ustawienia
zakresu pomiarowego.
Użycie funkcji umożliwia uzyskanie informacji o aktualnym zakresie pomiarowym wraz z identyfikatorem
używanego obiektywu oraz bieżącej rozdzielczości obrazu termograficznego.
v50_SetRange
Wysyła do kamery nowe ustawienia zakresu pomiarowego.
V50RESULT v50_SetRange(V50HANDLE Handle,V50RANGE* pRange);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pRange
wskaźnik na strukturę V50RANGE zawierającą nowe ustawienia zakresu pomiarowego.
Funkcja v50_SetRange() służy do wyboru zakresu pomiarowego, identyfikatora obiektywu oraz
rozdzielczości obrazu. Kombinacja numeru zakresu RangeIdx i identyfikatora obiektywu LensIdx zawartych
w strukturze V50RANGE musi odpowiadać jednej z kombinacji zdefiniowanych w liście dostępnych
zakresów (tablica Ranges w strukturze V50INFO). W przeciwnym przypadku funkcja zwróci błąd.
W celu uzyskania listy dostępnych zakresów oraz rozdzielczości obrazu należy użyć funkcji
v50_GetDeviceInfo().
v50_GetParams
Pobiera aktualne parametry pomiarowe z kamery.
V50RESULT v50_GetParams(V50HANDLE Handle,V50PARAMS* pParams);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pParams
wskaźnik na strukturę V50PARAMS wewnątrz której funkcja zapisze aktualne parametry
pomiarowe.
Funkcja v50_GetParams() umożliwia pobranie aktualnych parametrów pomiarowych używanych przez
kamerę i zapisanie ich w strukturze V50PARAMS.
10
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_SetParams
Wysyła do kamery nowe ustawienia parametrów pomiarowych.
V50RESULT v50_SetParams(V50HANDLE Handle,V50PARAMS* pParams);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pParams
wskaźnik na
pomiarowych.
strukturę
V50PARAMS
zawierającą
nowe
ustawienia
parametrów
Funkcja v50_SetParams() umożliwia zmianę parametrów pomiarowych używanych przez kamerę do
wyznaczania rzeczywistych temperatur na powierzchni obserwowanego obiektu.
Wartości parametrów muszą zawierać się w przedziałach podanych przy opisie struktury V50PARAMS, gdyż
w przeciwnym wypadku wywołanie funkcji v50_SetParams() zakończy się niepowodzeniem.
v50_GetView
Pobiera z kamery aktualne ustawienia widoku.
V50RESULT v50_GetView(V50HANDLE Handle,V50VIEW* pView);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pView
wskaźnik na strukturę V50VIEW, wewnątrz której funkcja zapisze aktualne ustawienia
widoku.
Funkcja v50_GetView() pobiera ustawienia widoku z kamery i zapisuje je w strukturze V50VIEW
wskazywanej przez pView. Ustawienia widoku w kamerze mogą zmieniać się w sposób ciągły, gdy włączony
jest tryb automatycznego dopasowania podzakresu. Jeżeli wymagana jest synchronizacja ustawień widoku,
to przed wywołaniem funkcji v50_GetFrame() należy użyć funkcji v50_GetView().
v50_SetView
Zmienia ustawienia widoku.
V50RESULT v50_SetView(V50HANDLE Handle,V50VIEW* pView);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
PView
wskaźnik na strukturę V50VIEW zawierającą nowe ustawienia widoku.
Funckja v50_SetView() zmienia lokalne ustawienia widoku.
Pole PaletteId struktury V50VIEW umożliwia wybór palety barw używanej do prezentacji rozkładu
temperatur na obrazie termograficznym. Pola SubMin i SubMax tej struktury ograniczają zakres
prezentowanych temperatur z użyciem wybranej palety barw.
Kamera VIGOcam v50 nie ma możliwości zdalnego ustawienia parametrów widoku. Wywołanie funkcji
v50_SetView() nie powoduje przesłania nowych ustawień do kamery. Parametry widoku w kamerze
pozostają bez zmian.
11
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_GetAlarms
Pobiera z urządzenia aktualną konfigurację alarmów.
Funkcja wprowadzona w wersji 1.1.1. Nieobsługiwana przez wcześniejsze wersje biblioteki.
V50RESULT v50_GetAlarms(V50HANDLE Handle,V50ALARMS* pAlarms);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pAlarms
wskaźnik na strukturę V50ALARMS, do której zostanie zapisana aktualna konfiguracja
alarmów odczytana z urządzenia.
Funkcja v50_GetAlarms() umożliwia pobranie z urządzenia aktualnej konfiguracji alarmów i zapisanie jej
w strukturze V50ALARMS, do której wskaźnik podany jest jako argument wywołania funkcji.
W przypadku powodzenia funkcja zwraca wartość V50R_OK. Jeżeli urządzenie nie obsługuje
funkcjonalności alarmów, wywołanie funkcji v50_GetAlarms() zostanie zakończone błędem
V50R_TIMEOUT.
v50_SetAlarms
Zmienia aktualną konfigurację alarmów w urządzeniu.
Funkcja wprowadzona w wersji 1.1.1. Nieobsługiwana przez wcześniejsze wersje biblioteki.
V50RESULT v50_SetAlarms(V50HANDLE Handle,V50ALARMS* pAlarms);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pAlarms
wskaźnik na strukturę V50ALARMS przechowującą konfigurację alarmów, która ma zostać
przesłana do urządzenia.
Funkcja v50_SetAlarms() pozwala na zmianę konfiguracji alarmów w urządzeniu zgodnie z ustawieniami
zapisanymi w strukturze V50ALARMS, do której wskaźnik podany jest jako argument wywołania funkcji.
W przypadku powodzenia funkcja zwraca wartość V50R_OK. Jeżeli urządzenie nie obsługuje
funkcjonalności alarmów, wywołanie funkcji v50_SetAlarms() zostanie zakończone błędem
V50R_TIMEOUT.
UWAGA:
Automatyczna sygnalizacja alarmu w kamerach VIGOcam v50 działa wyłącznie wtedy, gdy nieaktywna jest
transmisja danych w czasie rzeczywistym. Po wywołaniu funkcji v50_RTStart() inicjującej pracę w trybie
odczytu w czasie rzeczywistym, automatyczna sygnalizacja alarmu przestaje działać. Wówczas jedyną
możliwością wpływu na stan wyjść alarmowych jest bezpośrednia zmiana stanu za pomocą wywołania
funkcji v50_SetAlarmsOutput().
12
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_GetAlarmsOutput
Pobiera aktualny stan wyjść alarmowych.
Funkcja wprowadzona w wersji 1.2.0. Nieobsługiwana przez wcześniejsze wersje biblioteki.
V50RESULT v50_GetAlarmsOutput(V50HANDLE Handle,
V50ALARMSOUTPUT* pAOutput);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pAOutput
wskaźnik na strukturę V50ALARMSOUTPUT, do której zostanie zapisany aktualny stan
wyjść alarmowych.
Funkcja v50_GetAlarmsOutput() umożliwia pobranie z urządzenia aktualnego stanu wyjść alarmowych
i zapisanie go w strukturze V50ALARMSOUTPUT, do której wskaźnik podany jest jako argument wywołania
funkcji.
W przypadku powodzenia funkcja zwraca wartość V50R_OK. Jeżeli urządzenie nie obsługuje
funkcjonalności alarmów, wywołanie funkcji v50_GetAlarmsOutput() zostanie zakończone błędem
V50R_TIMEOUT.
v50_SetAlarmsOutput
Ustawia stan wyjść alarmowych.
Funkcja wprowadzona w wersji 1.2.0. Nieobsługiwana przez wcześniejsze wersje biblioteki.
V50RESULT v50_SetAlarmsOutput(V50HANDLE Handle,
V50ALARMSOUTPUT *pAOutput);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pAlarms
wskaźnik na strukturę V50ALARMSOUTPUT przechowującą stan wyjść alarmowych, który
ma zostać przesłany do urządzenia.
Funkcja v50_SetAlarmsOutput() pozwala na zmianę stanu wyjść alarmowych zgodnie ustawieniami
zapisanymi w strukturze V50ALARMSOUTPUT, do której wskaźnik podany jest jako argument funkcji.
UWAGA:
Funkcja v50_SetAlarmsOutput() działa prawidłowo w dwóch przypadkach:
1. Gdy wyłączone jest automatyczne generowanie sygnału alarmu. Wyłączenie automatycznej
sygnalizacji alarmu jest możliwe przez wywołanie rozkazu v50_SetAlarms() z wartościami
V50AT_NONE w polach LowType i HighType struktury V50ALARMS.
2. W trybie odczytu danych w czasie rzeczywistym. Wejścia w tryb odczytu w czasie rzeczywistym
dokonuje się przez wywołanie funkcji v50_RTStart. W trym trybie nie działa automatyczna
sygnalizacja alarmu, zaś zmiana stanu wyjść alarmowych jest możliwa tylko przez wywołanie funkcji
v50_SetAlarmsOutput().
W przypadku powodzenia funkcja zwraca wartość V50R_OK. Jeżeli urządzenie nie obsługuje
funkcjonalności alarmów, wywołanie funkcji v50_SetAlarmsOutput() zostanie zakończone błędem
V50R_TIMEOUT.
13
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_GetFrame
Pobiera z kamery pojedynczą ramkę danych pomiarowych.
V50RESULT v50_GetFrame(V50HANDLE Handle,V50DATAINFO* pData,
V50BUFFER* pBuffer);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pDataInfo
wskaźnik na strukturę V50DATAINFO do której zostaną zapisane aktualne ustawienia
zakresu pomiarowego, parametry pomiaru oraz parametry widoku
pBuffer
wskaźnik na strukturę typu V50BUFFER przechowującą informacje o buforze, do którego
zostaną zapisane wartości temperatur zarejestrowanych dla kolejnych punktów obrazu
termograficznego.
Funkcja v50_GetFrame() umożliwia pobranie wyników pomiaru temperatury dla poszczególnych punktów
obrazu termograficznego. Funkcja pobiera dane z kamery i umieszcza wyniki pomiarów w buforze
wskazywanym przez pBuffer. Następnie wypełnia aktualnymi ustawieniami strukturę V50DATAINFO
wskazywaną przez pDataInfo.
Do wyznaczania temperatur funkcja używa ustawień ostatnio odebranych z kamery za pomocą funkcji
v50_GetRange() i v50_GetParams() lub ostatnio ustawionych za pomocą funkcji v50_SetRange()
i v50_SetParams(). Jeżeli w międzyczasie mogły zostać ręcznie zmienione ustawienia w kamerze, to przed
wywołaniem funkcji v50_GetFrame() należy ponownie załadować ustawienia zakresu i parametry pomiaru
z kamery za pomocą funkcji v50_GetParams() i v50_GetRange().
Bufor
wskazywany
v50_CreateBuffer().
przez
pBuffer
powinien
być
wcześniej
utworzony
za
pomocą
funkcji
Dane w buforze zorganizowane są w ten sposób, że pod indeksem zerowym znajduje się wartość
temperatury odpowiadająca punktowi znajdującemu się w lewym górnym rogu obrazu. Pod kolejnymi
indeksami znajdują się temperatury odpowiadające kolejnym punktom znajdującym się w pierwszej linii
obrazu. Po ostatnim punkcie pierwszej linii obrazu znajduje się pierwszy punkt następnej linii.
Wartość temperatury w punkcie o współrzędnych (X,Y) przy rozdzielczości obrazu Res należy odczytać
w następujący:
V50IMAGESIZE is;
v50_GetImageSize(&is,Res);
FLOAT t = pBuffer->Ptr[X + Y * is.Width];
v50_MakeImage
Tworzy obraz termograficzny na podstawie danych pomiarowych i zapisuje go do wskazanej bitmapy.
V50RESULT v50_MakeImage(V50HANDLE Handle,HBITMAP hBitmap,
V50DATAINFO* pDataInfo,
V50BUFFER* pBuffer);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
hBitmap
uchwyt obiektu typu BITMAP do którego zostanie zapisany obraz termograficzny.
14
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
pData
wskaźnik na strukturę V50DATAINFO przechowującej parametry.
pBuffer
wskaźnik na strukturę V50BUFFER przechowującą informacje o buforze.
Funkcja v50_MakeImage() służy do utworzenia obrazu termograficznego na podstawie wyników pomiaru
temperatury. Funkcja używa ustawień widoku zapisanych w polu View struktury typu V50DATAINFO
wskazywanej przez pDataInfo.
Jeżeli bitmapa ma rozmiar większy niż obraz termograficzny, to obraz zostanie umieszczony począwszy od
lewego górnego rogu bitmapy. Jeżeli bitmapa ma rozmiar mniejszy niż obraz termograficzny funkcja
v50_MakeImage() zwróci błąd.
Obiekt typu BITMAP reprezentowany za pomocą uchwytu hBitmap powinien być bitmapą typu DIB (Device
Independent Bitmap), bez palety, z 32-bitowym kodowaniem kolorów i wyłączoną kompresją. Bitmapa
powinna być stworzona za pomocą funkcji systemowej o nazwie CreateDIBSection().
Dla wygody programisty biblioteka vigocam.dll udostępnia funkcję v50_CreateBitmap(), która wywołuje
funkcję systemową CreateDIBSection() z odpowiednimi parametrami.
v50_GetPhoto
Pobiera z kamery zdjęcie, czyli obraz w świetle widzialnym zarejestrowany przez wbudowaną kamerę wideo.
V50RESULT v50_GetPhoto(V50HANDLE Handle,HBITMAP hBitmap,
V50RESOLUTION Res);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
hBitmap
uchwyt obiektu typu BITMAP do którego zostanie zapisane zdjęcie.
Res
identyfikator rozdzielczości obrazu.
Obiekt typu BITMAP reprezentowany za pomocą uchwytu hBitmap powinien być bitmapą typu DIB (Device
Independent Bitmap), bez palety, z 32-bitowym kodowaniem kolorów i wyłączoną kompresją. Bitmapa
powinna być stworzona za pomocą funkcji systemowej o nazwie CreateDIBSection().
Podana za pomocą parametru Res rozdzielczość obrazu powinna być zgodna z zawartością listy
rozdzielczości zdjęć obsługiwanych przez kamerę. Lista znajduje się w strukturze V50DEVICEINFO, którą
można pozyskać wywołując funkcję v50_GetDeviceInfo().
Dla wygody programisty biblioteka vigocam.dll udostępnia funkcję v50_CreateBitmap(), która wywołuje
funkcję systemową CreateDIBSection() z odpowiednimi parametrami.
15
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_RTStart
Uruchamia odczyt w czasie rzeczywistym danych termograficznych z kamery.
V50RESULT v50_RTStart(V50HANDLE Handle,V50RECFUNC* pRecFunc);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pRecFunc
wskaźnik do funkcji, która będzie wywoływana po odebraniu każdej ramki zawierającej
dane termograficzne z kamery.
Funkcja v50_RTStart() umożliwia pobieranie danych z kamery w czasie rzeczywistym. Połączenie z kamerą
musi być wcześniej utworzone z użyciem funkcji v50_Connect().
Po odebraniu każdej pełnej ramki z danymi termograficznymi zostanie wywołana funkcja wskazywana przez
pRecFunc. Deklaracja funkcji powinna być następująca:
void WINAPI Nazwa_funkcji(V50HANDLE Handle,V50DATAINFO* pDataInfo,
V50BUFFER* pBuffer);
Do wywoływanej funkcji zostaną przekazane następujące parametry:
Handle
uchwyt połączenia z kamerą. Uchwyt może być używany do identyfikacji połączenia
w przypadku, gdy biblioteka komunikuje się jednocześnie z kilkoma kamerami.
pDataInfo
wskaźnik do struktury typu V50DATAINFO zawierającej aktualne ustawienia zakresu oraz
parametry pomiaru i widoku.
pBuffer
wskaźnik do struktury typu V50BUFFER zawierającej informacje o buforze, w którym
znajduje się tablica temperatur zarejestrowanych w kolejnych punktach obrazu
termograficznego. Organizacja danych w buforze została przedstawiona w opisie funkcji
v50_GetFrame().
Jeżeli aplikacja będzie używała przesłanych danych po zakończeniu funkcji wskazywanej przez pRecFunc,
to powinna zostać utworzona kopia tych danych. Po zamknięciu funkcji dane mogą być niedostępne
a zajmowana przez nie pamięć zwolniona lub zmodyfikowana. Nieprzestrzeganie tej zasady może
doprowadzić do naruszenia praw dostępu do pamięci i zamknięcia aplikacji.
Zmiana parametrów w trakcie pracy w czasie rzeczywistym jest możliwa za pomocą funkcji
v50_SetRange(), v50_SetParams() lub v50_SetView(). Zależnie od stanu kamery i typu użytej funkcji
zmiana parametrów może nastąpić z opóźnieniem kilku ramek. Oznacza to, że po wywołaniu jednej
z wymienionych funkcji mogą jeszcze przez chwilę być odbierane ramki z poprzednimi ustawieniami.
Wyjście z trybu pracy w czasie rzeczywistym jest możliwe poprzez użycie funkcji v50_RTStop(). Przed
zamknięciem połączenia z kamerą za pomocą funkcji v50_Disconnect() należy wyjść z trybu pracy w czasie
rzeczywistym (jeżeli jest włączony).
16
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_RTStop
Zatrzymuje odczyt w czasie rzeczywistym danych termograficznych z kamery.
V50RESULT v50_RTStop(V50HANDLE Handle);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
v50_RTStartEv
Uruchamia odczyt w czasie rzeczywistym danych termograficznych z kamery. Jest to nowsza wersja funkcji
v50_RTStart(), umożliwiająca komunikację z aplikacją użytkownika poprzez mechanizm zdarzeń.
Funkcja wprowadzona w wersji 1.5.0. Nieobsługiwana przez wcześniejsze wersje biblioteki.
V50RESULT v50_RTStartEv(V50HANDLE Handle, HANDLE UserEvent);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
UserEvent
stworzony przez użytkownika uchwyt do zdarzenia, które będzie generowane po odebraniu
każdej ramki zawierającej dane termograficzne z kamery.
Funkcja v50_RTStartEv() umożliwia pobieranie danych z kamery w czasie rzeczywistym. Połączenie
z kamerą musi być wcześniej utworzone z użyciem funkcji v50_Connect().
Odebranie każdej ramki danych sygnalizowane jest wystąpieniem zdarzenia zdefiniowanego przez
użytkownika. Aby po wystąpieniu zdarzenia mieć dostęp do danych należy skorzystać z funkcji
v50_RTGetBuffer().
Zmiana parametrów w trakcie pracy w czasie rzeczywistym jest możliwa za pomocą funkcji
v50_SetRange(), v50_SetParams() lub v50_SetView(). Zależnie od stanu kamery i typu użytej funkcji
zmiana parametrów może nastąpić z opóźnieniem kilku ramek. Oznacza to, że po wywołaniu jednej
z wymienionych funkcji mogą jeszcze przez chwilę być odbierane ramki z poprzednimi ustawieniami.
Wyjście z trybu pracy w czasie rzeczywistym jest możliwe poprzez użycie funkcji v50_RTStop(). Przed
zamknięciem połączenia z kamerą za pomocą funkcji v50_Disconnect() należy wyjść z trybu pracy w czasie
rzeczywistym (jeżeli jest włączony).
v50_RTGetBuffer
Pobiera ramkę danych termograficznych z kamery podczas transmisji w czasie rzeczywistym rozpoczętej za
pomocą funkcji v50_RTStartEv().
Funkcja wprowadzona w wersji 1.5.0. Nieobsługiwana przez wcześniejsze wersje biblioteki.
V50RESULT v50_RTGetBuffer(V50HANDLE Handle, V50BUFFER *pBuffer);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
pBuffer
wskaźnik na strukturę V50BUFFER przechowującą informacje o buforze, do którego
zostanie skopiowana zawartość ostatnio odebranej ramki danych.
Funkcja v50_RTGetBuffer() umożliwia pobieranie danych z kamery podczas pracy w czasie rzeczywistym.
Należy z niej korzystać jedynie po rozpoczęciu pracy w czasie rzeczywistym za pomocą funkcji
17
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_RTStartEv(). W przypadku wywołania po rozpoczęciu transmisji za pomocą starszej funkcji
50_RTStart() zwracany jest błąd.
v50_SetLaser
Włącza i wyłącza wskaźnik laserowy w kamerze.
V50RESULT v50_SetLaser(V50HANDLE Handle,BOOL State);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
State
stan wskaźnika laserowego: TRUE – włączony, FALSE – wyłączony.
v50_MakeNUC
Wysyła do kamery żądanie wykonania procedury N.U.C. (Non-uniformity correction).
V50RESULT v50_MakeNUC(V50HANDLE Handle);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
Użycie funkcji v50_MakeNUC() umożliwia wymuszenie wykonania procedury N.U.C. w dowolnym momencie
niezależnie od ustawionej w kamerze częstotliwości wywoływania tej procedury.
Funkcja wysyła do kamery rozkaz wykonania procedury N.U.C. i oczekuje na jej zakończenie. Czas
wykonywania procedury wynosi około jednej sekundy i może się wydłużyć do kilku sekund w przypadku
gwałtownych zmian temperatury w jakiej przebywa kamera.
v50_ShutterOpen
Otwiera migawkę.
V50RESULT v50_ShutterOpen(V50HANDLE Handle);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
v50_ShutterClose
Zamyka migawkę.
V50RESULT v50_ShutterOpen(V50HANDLE Handle);
Handle
uchwyt połączenia z kamerą pozyskany w wyniku wywołania funkcji v50_Connect().
18
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_CreateBuffer
Tworzy bufor służący do przechowywania tablicy temperatur.
V50RESULT v50_CreateBuffer(V50BUFFER* pBuffer,V50RESOLUTION Res);
pBuffer
wskaźnik na strukturę typu V50BUFFER do której zostaną zapisane informacje
o utworzonym buforze.
Res
identyfikator rozdzielczość obrazu.
Funkcja v50_CreateBuffer() służy do tworzenia bufora na tablicę temperatur zmierzonych przez kamerę.
Parametr Res określa rozdzielczość największego obrazu, który ma zmieścić się w buforze.
Funkcja zapisuje w polu Ptr struktury V50BUFFER wskaźnik na początek bufora, zaś w polu Len długość
bufora rozumianą jako ilość elementów typu FLOAT mieszczących się w buforze.
Jeżeli używanych jest kilka różnych rozdzielczości obrazu, to można utworzyć jeden bufor o rozmiarze
odpowiadającym największej obsługiwanej rozdzielczości obrazu. Największą dostępną w kamerze można
odczytać z pierwszego elementu tablicy ImageRes umieszczonej w strukturze typu V50DEVICEINFO
wypełnionej przez wywołanie funkcji v50_GetDeviceInfo().
Bufor utworzony przez funkcję v50_CreateBuffer() należy po zakończeniu użytkowania zwolnić funkcją
v50_ReleaseBuffer().
v50_ReleaseBuffer
Zwalnia pamięć zajmowaną przez bufor.
V50RESULT v50_ReleaseBuffer(V50BUFFER *pBuffer);
pBuffer
wskaźnik na strukturę typu V50BUFFER przechowującą informacje o buforze.
Funkcja zwalnia pamięć zajmowaną przez bufor, ustawia pole Ptr struktury wskazywanej przez pBuffer na
wartość NULL, zaś do pola Len zapisuje wartość 0.
v50_CreateBitmap
Tworzy kompatybilną bitmapę.
V50RESULT v50_CreateBitmap(HBITMAP* pBitmap,V50RESOLUTION Res);
pBitmap
wskaźnik do zmiennej, w której zostanie zapisany uchwyt do utworzonej bitmapy.
Res
identyfikator rozdzielczości obrazu.
Funckja v50_CreateBitmap() służy do tworzenia bitmapy kompatybilnej z funkcją v50_MakeImage()
w rozdzielczości podanej przez parametr Res.
Jeżeli aplikacja używa więcej niż jednej dostępnej rozdzielczości obrazu można utworzyć większą liczbę
bitmap o różnych rozdzielczościach i przekazywać je do funkcji v50_MakeImage() w zależności od
rozdzielczości zapisanej w polu Resolution struktury V50RANGE. Można także utworzyć jedną bitmapę dla
największej dostępnej rozdzielczości obrazu. W takim przypadku dla niższych rozdzielczości obraz nie
będzie tworzony na całej powierzchni bitmapy lecz tylko na jej środku.
19
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
v50_ReleaseBitmap
Usuwa bitmapę z pamięci.
V50RESULT v50_ReleaseBitmap(HBITMAP* hBitmap);
hBitmap
uchwyt bitmapy przeznaczonej do usunięcia.
Funkcja usuwa bitmapę z pamięci i zeruje uchwyt wskazywany przez hBitmap.
v50_GetImageSize
Pobiera rozmiar obrazu dla danej rozdzielczości.
V50RESULT v50_GetImageSize(V50IMAGESIZE* pImageSize,
V50RESOLUTION Res);
pImageSize
wskaźnik na strukturę typu V50IMAGESIZE do której zostanie zapisana szerokość
i wysokość obrazu.
Res
identyfikator rozdzielczości.
Funkcja v50_GetImageSize() umożliwia uzyskanie informacji o wymiarach obrazu w pikselach dla podanej
rozdzielczości.
v50_ResultDesc
Zwraca opis błędu.
LPSTR v50_ResultDesc(V50RESULT Result);
Result
wartość kodu błędu zwrócona przez dowolną inną funkcję z biblioteki vigocam.dll.
Funkcja v50_ResultDesc() umożliwia pobranie krótkiego opisu błędu na podstawie kodu zwracanego przez
funkcje dostępne w bibliotece vigocam.dll.
20
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
21
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
Typy danych i struktury
V50RESULT
Typ wyniku zwracanego przez funkcje z biblioteki vigocam.dll.
typedef ULONG V50RESULT;
Opis wszystkich zdefiniowanych w bibliotece wartości typu V50RESULT znajduje się na stronie 29.
V50HANDLE
Typ uchwytu do połączenia z kamerą nawiązanego z użyciem funkcji v50_Connect().
typedef LPVOID V50HANDLE;
V50RECFUNC
Definiuje typ funkcji wywoływanej podczas odbierania danych z kamery w czasie rzeczywistym.
typedef void WINAPI (V50RECFUNC)(V50HANDLE Handle,
V50DATAINFO* pDataInfo,
V50BUFFER* pBuffer);
V50RESOLUTION
Typ definiujący identyfikator rozdzielczość obrazu.
typedef ULONG V50RESOLUTION;
Należy korzystać z jednej z poniższych wartości:
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
V50RES_QCGA
V50RES_VGA16
V50RES_CGA
V50RES_QVGA
V50RES_QNTSC
V50RES_QPAL
V50RES_VGA
V50RES_NTSC
V50RES_PAL
V50RES_SVGA
V50RES_XGA
V50RES_SXGA
V50RES_UNKNOWN
0
1
2
3
4
5
6
7
8
9
10
11
1000
22
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
160 x 100 */
160 x 120 */
320 x 200 */
320 x 240 */
360 x 240 */
384 x 288 */
640 x 480 */
720 x 480 */
768 x 576 */
800 x 600 */
1024 x 768 */
1280 x 1024 */
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
V50IMAGESIZE
Przechowuje rozmiar obrazu w pikselach
typedef struct _V50IMAGESIZE
{
UINT Width;
UINT Height;
} V50IMAGESIZE, *LPV50DATAINFO;
Width
szerokość obrazu w pikselach.
Height
wysokość obrazu w pikselach.
V50BUFFER
Przechowuje informacje o buforze.
typedef struct _V50BUFFER
{
FLOAT* Ptr;
UINT
Len;
} V50BUFFER, *LPV50BUFFER;
Ptr
wskaźnik na początek bufora.
Len
długość bufora wyrażona w ilości elementów.
V50COMTYPE
Definiuje typ interfejsu używanego do komunikacji z kamerą.
typedef ULONG V50COMTYPE;
Należy korzystać z jednej z poniższych wartości:
#define V50CT_ETH
#define V50CT_USB
V50CT_ETH
Ethernet
V50CT_USB
USB
0
1
23
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
V50DEVICETYPE
Identyfikator typu urządzenia.
typedef ULONG V50DEVICETYPE;
Należy korzystać z jednej z poniższych wartości:
#define
#define
#define
#define
V50DT_V50
V50DT_V5
V50DT_V60
V50DT_V640
50
55
60
71
V50DT_V50
kamera serii VIGOcam v50.
V50DT_V5
kamera serii VIGOcam v5.
V50DT_V60
kamera serii VIGOcam v60.
V50DT_V640
kamera serii VIGOcam v640.
V50ADDRESS
Przechowuje parametry używanego interfejsu komunikacyjnego, adres IP kamery, numer portu TCP oraz
numer urządzenia USB.
typedef struct _V50ADDRESS
{
V50COMTYPE ComType;
BYTE
IPAddr[4];
UINT
Socket;
UINT
DevNumber;
} V50ADDRESS, *LPV50ADDRESS;
ComType
rodzaj używanego interfejsu komunikacyjnego.
IPAddr
adres IP zapisany w postaci czterech liczb z zakresu 0..255.
Socket
numer portu z zakresu 0..65536, aby użyć portu domyślnego należy w polu Socket
zapisać wartością stałej V50_DEFAULT_SOCKET.
DevNumber
numer urządzenia USB.
24
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
V50LENSINFO
Zawiera informacje o obiektywie.
typedef struct _V50LENSINFO
{
LONG Idx;
CHAR Name[16];
} V50LENSINFO, *LPV50LENSINFO;
Idx
indeks obiektywu
Name
nazwa obiektywu w postaci ciągu znaków zakończonych zerem.V50RANGEINFO
Przechowuje informacje o zakresie pomiarowym.
typedef struct _V50RANGEINFO
{
LONG Idx;
LONG Lens;
FLOAT Tmin;
FLOAT Tmax;
} V50RANGEINFO, *LPV50RANGEINFO;
Idx
indeks zakresu pomiarowego.
Lens
identyfikator użytego obiektywu, wartość zgodna z zawartością pola Idx w strukturze
V50LENSINFO opisującej dany obiektyw.
TMin
początek zakresu – minimalna temperatura dająca się poprawnie zmierzyć z użyciem
bieżącego zakresu pomiarowego, wartość w stopniach Celsjusza.
TMax
koniec zakresu – maksymalna temperatura dająca się poprawnie zmierzyć z użyciem
bieżącego zakresu pomiarowego, wartość w stopniach Celsjusza.
Wartość pola Idx jest zgodna z numerem zakresu wyświetlanym w kamerze pomniejszonym o jeden.
W kamerze może być zdefiniowanych kilka zakresów pomiarowych o takim samym indeksie, ale różniących
się numerem obiektywu przechowywanym w polu Lens. Dopiero kombinacja wartości pól Idx i Lens tworzy
unikalny identyfikator zakresu.
25
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
V50DATETIME
Przechowuje datę i godzinę.
typedef struct _V50DATETIME
{
ULONG MSec;
ULONG Sec;
ULONG Min;
ULONG Hour;
ULONG Day;
ULONG Month;
ULONG Year;
} V50DATETIME, *LPV50DATETIME;
MSec
milisekunda (od 0 do 999)
Sec
sekunda (od 0 do 59)
Min
minuta (od 0 do 59)
Hour
godzina (od 0 do 23)
Day
dzień miesiąca (od 1 do 31)
Month
miesiąc (od 1 do 12, wartość 1 oznacza styczeń)
Year
rok (pełny numer roku, np. 2008)
Struktura używana do przechowywania daty produkcji urządzenia.
26
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
V50DEVICEINFO
Przechowuje informacje o kamerze.
typedef struct _V50DEVICEINFO
{
CHAR
DeviceSerial[16];
CHAR
FPASerial[16];
CHAR
SoftVersion[16];
CHAR
DeviceVersion[16];
V50DATETIME
ManufactDate;
ULONG
LensesCount;
ULONG
RangesCount;
ULONG
ImageResCount;
ULONG
PhotoResCount;
V50LENSINFO
Lenses[4];
V50RANGEINFO Ranges[16];
V50RESOLUTION ImageRes[16];
V50RESOLUTION PhotoRes[16];
V50DEVICETYPE DeviceType;
} V50DEVICEINFO, *LPV50DEVICEINFO;
DeviceSerial
numer seryjny kamery zapisany w postaci ciągu znaków zakończonych zerem. Numer
seryjny składa się z dwóch liczb dziesiętnych oddzielonych znakiem ukośnika '/'.
FPASerial
numer seryjny macierzy detekcyjnej zastosowanej w kamerze zapisany w postaci ciągu
znaków zakończonych zerem. Numer seryjny macierzy jest 6-cyfrową liczbą dziesiętną.
SoftVersion
wersja oprogramowania zainstalowanego w kamerze zapisana w postaci ciągu znaków
zakończonych zerem. Wersja oprogramowania składa się z trzech liczb dziesiętnych
oddzielonych kropkami.
DeviceVersion
wersja sprzętowa urządzenia zapisana w postaci ciągu znaków zakończonych zerem.
Wersja urządzenia składa się z trzech liczb dziesiętnych oddzielonych kropkami.
ManufactDate
data produkcji kamery zapisana w strukturze typu V50DATETIME.
LensesCount
ilość obiektywów zdefiniowanych dla danej kamery.
RangesCount
ilość dostępnych zakresów pomiarowych rozumianych jako ilość unikalnych kombinacji
indeksu zakresu i indeksu obiektywu.
ImageResCount ilość dostępnych rozdzielczości obrazu termograficznego
PhotoResCount ilość dostępnych rozdzielczości zdjęć w wbudowanej kamery wideo.
Lenses
tablica struktur typu V50LENSINFO opisujących poszczególne obiektywy zdefiniowane dla
danej kamery. Tylko pola o indeksach od 0 do LensesCount-1 zawierają ważne definicje
obiektywów, wartości pozostałych elementów tablicy nie są interpretowane.
Ranges
tablica struktur typu V50RANGEINFO opisujących kolejne dostępne zakresy pomiarowe.
Tylko pola o indeksach od 0 do RangesCount-1 zawierają ważne definicje zakresów,
wartości pozostałych elementów tablicy nie są interpretowane.
27
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
ImageRes
tablica zawierająca listę obsługiwanych przez kamerę rozdzielczości obrazu
termograficznego w porządku od największej do najmniejszej. Tylko pola o indeksach od 0
do ImageResCount-1 zawierają ważne identyfikatory rozdzielczości, wartości pozostałych
elementów tablicy nie są interpretowane.
PhotoRes
tablica zawierająca listę obsługiwanych przez kamerę rozdzielczości zdjęć z kamery wideo
w porządku od największej do najmniejszej. Tylko pola o indeksach od 0 do
PhotoResCount-1 zawierają ważne identyfikatory rozdzielczości, wartości pozostałych
elementów tablicy nie są interpretowane.
DeviceType
identyfikator typu urządzenia.
V50RANGE
Definiuje zakres pomiarowy.
typedef struct _V50RANGE
{
LONG RangeIdx;
LONG LensIdx;
V50RESOLUTION Resolution;
} V50RANGE, *LPV50RANGE;
RangeIdx
indeks zakresu pomiarowego zgodny z numerem zakresu wyświetlanym na kamerze
pomniejszonym o jeden.
LensIdx
indeks obiektywu.
Resolution
identyfikator rozdzielczości obrazu.
V50ALARMSOUTPUT
Struktura przechowująca stan wyjśc alarmowych.
typedef struct _V50ALARMSOUTPUT
{
ULONG State;
} V50ALARMSOUTPUT, *LPV50ALARMSOUTPUT;
State
zmienna przechowująca stan wyjść alarmowych,
poszczególnych bitach zgodnie z poniższymi stałymi:
#define V50AO_SOUND_BIT
#define V50AO_RELAYLOW_BIT
#define V50AO_RELAYHIGH_BIT
0
1
2
Przykład użycia przy sprawdzeniu ustawienia
V50AO_SOUND_BIT:
V50ALARMSOUTPUT alarms;
alarms.State & (1 << V50AO_SOUND_BIT) ? "ON" : "OFF";
28
który
zakodowany
jest
na
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
V50PARAMS
Przechowuje parametry pomiaru.
typedef struct _V50PARAMS
{
FLOAT Emis;
FLOAT TAmb;
FLOAT TAtm;
FLOAT RHum;
FLOAT Dist;
} V50PARAMS, *LPV50PARAMS;
Emis
emisyjność powierzchni mierzonego obiektu w zakresie od 0,05 do 1.
TAmb
temperatura bezpośredniego otoczenia mierzonego obiektu wyrażona w stopniach
Celsjusza.
TAtm
temperatura powietrza na drodze pomiędzy mierzonym obiektem a kamerą wyrażona w
stopniach Celsjusza. Przy małych odległościach parametr ten nie ma wpływu na wynik
pomiaru i można użyć wartości takiej samej jak w polu TAmb.
RHum
wilgotność względna powietrza na drodze pomiędzy mierzonym obiektem a kamerą w
zakresie od 0 do 1. Przy małych odległościach parametr ten nie ma wpływu na wynik
pomiaru i można użyć wartości zerowej.
Dist
odległość kamery od mierzonego obiektu wyrażona w metrach w zakresie od 0,5 do
10000.
29
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
V50VIEW
Zawiera parametry widoku dla obrazu termograficznego.
typedef struct _V50VIEW
{
ULONG PaletteId;
FLOAT SubMin;
FLOAT SubMax;
} V50VIEW, *LPV50VIEW;
PaletteId
identyfikator palety barw użytej do graficznej reprezentacji rozkładu temperatury na obrazie
termograficznym.
SubMin
początek podzakresu pomiarowego wyrażony w stopniach Celsjusza.
SubMax
koniec podzakresu pomiarowego wyrażony w stopniach Celsjusza.
Podzakres pomiarowy określa jaki wycinek aktualnego zakresu pomiarowego ma być odwzorowany za
pomocą wszystkich barw dostępnych w wybranej palecie. Temperatury o wartości poniżej SubMin będą
odwzorowane za pomocą pierwszej barwy z palety, zaś temperatury o wartości powyżej SubMax będą
odwzorowane za pomocą ostatniej barwy z palety. Wartości pośrednie będą reprezentowane przez
odpowiednie barwy z wnętrza palety.
Wartość pola SubMin musi być mniejsza od wartości pola SubMax.
Wartość pola SubMin nie może być mniejsza od wartości pola TMin znajdującego się w strukturze
V50RANGEINFO reprezentującej aktualny zakres pomiarowy, zaś wartość pola SubMax nie może być
większa od wartości pola TMax zapisanej w wymienionej wyżej strukturze.
V50DATAINFO
Przechowuje informacje o parametrach związanych z ramką danych termograficznych .
typedef struct _V50DATAINFO
{
V50RANGE
Range;
V50PARAMS Params;
V50VIEW
View;
} V50DATAINFO, *LPV50DATAINFO;
Range
struktura typu V50RANGE przechowująca ustawienia zakresu pomiarowego.
Params
struktura typu V50PARAMS przechowująca parametry pomiaru.
View
struktura typu V50VIEW przechowująca parametry widoku.
Struktura V50DATAINFO jest używana przez funkcje odczytujące dane pomiarowe z kamery. Służy do
przekazywanie parametrów pomiaru i parametrów widoku związanych z aktualnie przetwarzanym obrazem
termograficznym.
30
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
V50ALARMTYPE
Definiuje typ alarmu.
Typ wprowadzony w wersji 1.1.1. Nieobsługiwane przez wcześniejsze wersje biblioteki.
typedef ULONG
V50ALARMTYPE;
Typ V50ALARMTYPE pozwala zdefiniować sposób automatycznej sygnalizacji alarmu w przypadku
przekroczenia przez mierzoną temperaturę wartości granicznych.
Należy korzystać z jednej z poniższych wartości:
#define
#define
#define
#define
V50AT_NONE
V50AT_RELAY
V50AT_SOUND
V50AT_BOTH
0
1
2
3
Wartość V50AT_NONE oznacza, że alarm jest wyłączony (brak automatycznej sygnalizacji). Wartość
V50AT_RELAY odpowiada sygnalizacji alarmu wyłącznie za pomocą zwarcia odpowiedniego obwodu
przekaźnika, wartość V50AT_SOUND odpowiada sygnalizacji dźwiękowej, zaś wartość V50AT_BOTH
oznacza sygnalizację dźwiękową z jednoczesnym zwarciem odpowiedniego obwodu przekaźnika.
Sygnalizacja alarmu za pomocą zwarcia odpowiedniego obwodu przekaźnika jest możliwa wyłącznie
z użyciem zewnętrznego modułu sygnalizacji alarmu, który jest wyposażeniem opcjonalnym kamer serii
VIGOcam. Więcej informacji na temat modułu sygnalizacji alarmu znajduje się w instrukcji obsługi kamery.
Typ V50ALARMTYPE jest używany przez strukturę V50ALARMS.
V50ALARMS
Przechowuje informacje o konfiguracji alarmów.
Typ wprowadzony w wersji 1.1.1. Nieobsługiwane przez wcześniejsze wersje biblioteki.
typedef struct _V50ALARMS
{
FLOAT
LowLimit;
FLOAT
HighLimit;
V50ALARMTYPE LowType;
V50ALARMTYPE HighType;
} V50ALARMS, *LPV50ALARMS;
LowLimit
limit dolny, poniżej którego sygnalizowany jest alarm zgodnie z ustawieniami typu alarmu.
HighLimit
limit górny, powyżej którego sygnalizowany jest alarm zgodnie z ustawieniami typu alarmu.
LowType
sposób sygnalizacji alarmu w przypadku przekroczenia limitu dolnego.
HighType
sposób sygnalizacji alarmu w przypadku przekroczenia limitu górnego.
Struktura V50ALARMS jest używana do odczytu i ustawienia aktualnej konfiguracji alarmów w urządzeniu
za pomocą funkcji v50_GetAlarms() i v50_SetAlarms().
31
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
V50ALARMSOUTPUT
Przechowuje informację o stanie wyjść alarmowych.
Typ wprowadzony w wersji 1.2.0. Nieobsługiwane przez wcześniejsze wersje biblioteki.
typedef struct _V50ALARMSOUTPUT
{
ULONG
State;
} V50ALARMSOUTPUT, *LPV50ALARMSOUTPUT;
State
pole bitowe określające stan poszczególnych wyjść alarmowych.
Struktura V50ALARMSOUTPUT jest używana przez funkcje bezpośredniego odczytu i ustawiania stanu
wyjść alarmowych v50_GetAlarmsOutput() oraz v50_SetAlarmsOutput().
Pole bitowe State określa stan poszczególnych wyjść sygnalizacji alarmu. Ustawiony odpowiedni bit w polu
State oznacza załączenie odpowiedniego wyjścia. Zdefiniowane są następujące bity:
V50AO_SOUND_BIT
sygnalizacja dźwiękowa za pomocą wbudowanego w kamerę głośnika.
V50AO_RELAYLOW_BIT
przekaźnik sygnalizacji alarmu LOW (wymagane użycie zewnętrznego modułu
sygnalizacji alarmu).
V50AO_RELAYHIGH_BIT
przekaźnik sygnalizacji alarmu HIGH (wymagane użycie zewnętrznego
modułu sygnalizacji alarmu).
32
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
33
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
Identyfikatory błędów
V50R_OK
funkcja zakończona bezbłędnie.
V50R_INVALIDARGUMENT
nieważny argument funkcji, zwracany w przypadku gdy funkcja
oczekuje wskaźnika do obiektu a otrzymuje wartość NULL.
V50R_INVALIDHANDLE
nieprawidłowy lub pusty uchwyt połączenia.
V50R_ALREADYCONNECTED
urządzenie połączone, zwracany w przypadku wywołania funkcji
v50_Connect() w sytuacji, gdy połączenie zostało już wcześniej
nawiązane.
V50R_DRIVERINITERROR
błąd podczas inicjalizacji sterownika USB.
V50R_DEVICEOPENERROR
błąd podczas próby połączenia z urządzeniem USB.
V50R_OUTOFMEMORY
brak wystarczającej ilości pamięci do wykonania operacji.
V50R_INVALIDBUFFER
nieprawidłowy bufor, zwracany w przypadku gdy w strukturze
V50BUFFER pole wskaźnika Ptr ma wartość NULL.
V50R_BUFFERTOOSMALL
zbyt mały rozmiar bufora dla wykonania danej operacji, w buforze
nie zmieszczą się wszystkie dane przeznaczone do odebrania.
V50R_INVALIDBITMAP
nieprawidłowy lub pusty uchwyt bitmapy.
V50R_BITMAPCREATINGERROR
błąd podczas tworzenia bitmapy.
V50R_BITMAPDELETEERROR
błąd podczas usuwania bitmapy z pamięci.
V50R_INCOMPATIBLEBITMAP
nieobsługiwany typ bitmapy.
V50R_BITMAPTOOSMALL
zbyt małe wymiary bitmapy, aby przechwycić cały obraz.
V50R_UNKNOWNRESOLUTION
nieprawidłowy identyfikator rozdzielczości obrazu.
V50R_UNSUPPORTEDRESOLUTION
nieobsługiwana przez kamerę rozdzielczość obrazu
termograficznego lub wizyjnego.
V50R_UNSUPPORTEDRANGE
nieobsługiwany przez kamerę zakres pomiarowy rozumiany jako
kombinacja identyfikatora zakresu i identyfikatora obiektywu.
V50R_EMISWRONGVALUE
nieprawidłowa wartość emisyjności.
V50R_TAMBWRONGVALUE
nieprawidłowa wartość temperatury otoczenia.
V50R_TATMWRONGVALUE
nieprawidłowa wartość temperatury atmosfery.
V50R_RHUMWRONGVALUE
nieprawidłowa wartość wilgotności atmosfery.
V50R_DISTWRONGVALUE
nieprawidłowa wartość odległości.
V50R_WRONGPALETTE
nieprawidłowy identyfikator palety.
V50R_WRONGSUBRANGE
nieprawidłowy podzakres.
V50R_LIMITWRONGVALUE
nieprawidłowa wartość limitu w konfiguracji alarmów
V50R_LIMITWRONGTYPE
nieprawidłowy typ sygnalizacji alarmu w w konfiguracji alarmów
V50R_REALTIMEACTIVE
tryb czasu rzeczywistego już został uruchomiony.
V50R_REALTIMEINACTIVE
tryb czasu rzeczywistego nie jest uruchomiony.
V50R_READERROR
błąd podczas odbierania danych z urządzenia.
V50R_WRITERROR
błąd podczas wysyłania danych do urządzenia.
V50R_NETWORKERROR
błąd podsystemu sieciowego.
V50R_NETWORKUNREACHABLE
sieć niedostępna.
V50R_ADDRESSINUSE
podany adres urządzenia jest już w użyciu.
V50R_ADDRESSNOTAVAILABLE
podany adres jest nieosiągalny.
V50R_DEVICENOTFOUND
urządzenie nie znalezione.
V50R_CONNECTIONREFUSED
połączenie odrzucone przez urządzenie (prawdopodobnie
niezgodność numeru portu z wartością ustawioną w kamerze).
V50R_TIMEOUT
przekroczony dopuszczalny czas oczekiwania podczas transmisji.
34
vigocam.dll – biblioteka komunikacyjna dla kamer termograficznych serii VIGOcam
V50R_UNEXPECTEDRESPONSE
odebrano nieoczekiwaną lub błędną odpowiedź z urządzenia.
V50R_CONNECTIONCLOSED
połączenie zostało zamknięte z zewnątrz.
V50R_INCOMPATIBLEFIRMWARE
niekompatybilna wersja oprogramowania wewnętrznego kamery.
V50R_INCOMPATIBLEDEVICE
niekompatybilna wersja urządzenia (urządzenie nieobsługiwane
przez bieżącą wersje biblioteki).
V50R_INTERNALERROR
wewnętrzny błąd biblioteki vigocam.dll.
35