K8055D.DLL v5.0.0.0. Technická příručka. Úvod. Obecné. Konvence volání. Nastavení adresy karty



Podobné dokumenty
KONSTRUKČNÍ NÁVOD + NÁVOD K OBSLUZE. Obj. č.:

DUM 06 téma: Tvorba makra pomocí VBA

Tematický celek 03 - Cvičné příklady

PCKEYB JEDNOTKA PRO OBSLUHU KLÁVESNICE TYPU PC AT. Příručka uživatele a programátora

Přípravek pro demonstraci řízení pohonu MAXON prostřednictvím

Chtěl bych poděkovat vedoucímu bakalářské práce panu doc. Ing. Milanu Hegerovi, CSc. za vstřícnou spolupráci a cenné připomínky.

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/ PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/ stran 1

Střední odborné učiliště Domažlice, škola Stod, Plzeňská 322, Stod

Komunikační protokol pro Fotometr 2008

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

PiKRON s.r.o. ( ) 16. července Filtrace vstupních dat z AD převodníků... 3

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Knihovna DataBoxLib TXV první vydání prosinec 2010 změny vyhrazeny

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Aplikace. Hlásič SMS

adcsetup {LET} adcsetup = channels Platí pro PICAXE 08M2, 14M2, 18M2, 20M2, 20X2, 28X2, 40X2 Syntaxe:

Cvičné příklady Hodina 2

Popis funkcí a parametrů programu. Reliance External communicator. Verze 1.5.0

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Knihovna WebGraphLib

Střední odborné učiliště Domažlice, škola Stod, Plzeňská 322, Stod

Konfigurátor Duo. Manuál pro konfiguraci systémů DUO Standard / Basic. Obsah + vybraná nastavení: - 1 -

8 Třídy, objekty, metody, předávání argumentů metod

Generátor list nastavení

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

18A - PRINCIPY ČÍSLICOVÝCH MĚŘICÍCH PŘÍSTROJŮ Voltmetry, A/D převodníky - principy, vlastnosti, Kmitoměry, čítače, fázoměry, Q- metry

Knihovna ServoLib Řízení servopohonu bez zpětné vazby. TXV první vydání březen 2009 změny vyhrazeny

Visual Basic for Applications

Zápis programu v jazyce C#

Arduino Martin Friedl

1. Úvod. 2. Technické parametry

Cvičné příklady Hodina 8 Cvičný 1

Crouzet Micro-PLC Millenium 3 Smart

Řídící karta PCI v. 2.2 LED Panely , revize 1.0

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

eses výukový multi shield pro Arduino UNO

Mikrokontroléry. Doplňující text pro POS K. D. 2001

ExcelVBAmodul. Podpora pro výměnu dat automatů MICROPEL s aplikací Microsoft Excel

NAPOJENÍ ZAŘÍZENÍ S KOMUNIKACÍ BELIMO MP-BUS NA SÍŤ AUTOMATŮ MICROPEL

Knihovna EpsnetLib TXV první vydání září 2012 změny vyhrazeny

Direct Digital Synthesis (DDS)

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

Knihovna ConvertLib TXV první vydání září 2013 změny vyhrazeny

ALGORITMIZACE A PROGRAMOVÁNÍ

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

01. HODINA. 1.1 Spuštění programu VB Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

Instrukční sada pro používání ControlLogix a CompactLogix výňatek

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

Úvod do programovacích jazyků (Java)

karet Analogové výstupy (AO) (DIO) karty Zdroje informací

Seznámení s Quidy. vstupní a výstupní moduly řízené z PC. 2. srpna 2007 w w w. p a p o u c h. c o m

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Komunikační protokol MODBUS RTU v jednotce M4016. Seznam služeb protokolu MODBUS podporovaných řídící jednotkou M4016 je v tabulce.

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Komunikační protokol

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Technická kybernetika. Obsah. Klopné obvody: Použití klopných obvodů. Sekvenční funkční diagramy. Programovatelné logické automaty.

Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů. Zdeněk Oborný

Empty, Null, Nothing, Missing, prázdný řetězec a buňka

24 bitový AD USB modul AD24USB. Návod k použití

Komunikační protokol pro Fotometr 2008 (verze s rozhraním RS232)

7. Datové typy v Javě

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

SW24x3 programovatelné relé

setup() { I = 0; } loop() { I = I + 1; }

Reprodukce tohoto návodu k obsluze, nebo jeho části, v jakékoli formě bez předchozího písemného svolení společnosti DEGA CZ s.r.o. je zakázána.

CIB VOICE MODULE HLM390/CIB. Technická dokumentace

Výuková laboratorní sestava seminář pro učitele

PŘETĚŽOVÁNÍ OPERÁTORŮ

INTERFACE GSM VT-GSM-007

JAK PROPOJIT R-KO a EXCEL aneb Aby se uživatel nasytil a statistik zůstal celý

LEKCE 6. Operátory. V této lekci najdete:

TECHNICKÁ UNIVERZITA V LIBERCI

idrn-st Převodník pro tenzometry

Binární data. Číslicový systém. Binární data. Klávesnice Snímače polohy, dotykové displeje, myš Digitalizovaná data odvozená z analogového signálu

přetížení operátorů (o)

MX-10 pixelový částicový detektor

Seminář Java II p.1/43

Poslední nenulová číslice faktoriálu

IPA - Lab.1 Úvod do programování v ASM

Paměť počítače. alg2 1

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Knihovna DMX512lib Komunikace protokolem DMX512. TXV prvé vydání srpen 2010 změny vyhrazeny

Úvod do programovacích jazyků (Java)

1. Programování proti rozhraní

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.

uioadda1 JEDNOTKA PRO OVLÁDÁNÍ DESEK IOADDA01, IOADDA02 A IODA01 Příručka uživatele a programátora

Quido - MODBUS. Kompletní popis protokolů MODBUS RTU a TCP v I/O modulech Quido. 20. listopadu 2015 w w w. p a p o u c h.

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

1. Univerzální watchdog WDT-U2

Jazyk C# a platforma.net

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

FILIP SCHWANK. Katedra měření, listopad 2017

Popis programu EnicomD

24 bitový dvoukanálový AD převodník s obvodem HX711

Transkript:

K8055D.DLL v5.0.0.0 Technická příručka Úvod Obecné Experimentální USB deska K8055N má 5 digitálních vstupních kanálů a 8 digitálních výstupních kanálů. Kromě toho jsou na desce dva analogové vstupy, dva napěťové analogové výstupy a dva PWM (pulzní šířková modulace) výstupy s 8 bitovým rozlišením. Počet vstupů / výstupů lze ještě dále rozšířit připojením více (maximálně čtyř) karet k USB portům počítače. Každá karta je rozlišena svou vlastní adresou pomocí dvou propojek - SK5 a SK6 (viz Tab. 1 níže). Všechny komunikační funkce a procedury jsou obsaženy v DLL knihovně K8055D.DLL. V tomto návodu si detailně popíšeme každou z těchto funkcí a procedur obsažených této DLL knihovně. Voláním funkcí a procedur z DLL můžete napsat vlastní aplikaci pro Windows v Delphi, Visual Basic nebo v jakékoliv jiném vývojovém prostředí pro 32bitové aplikace Windows, které podporuje volání knihovny DLL. Kompletní přehled procedur a funkcí, které jsou obsažené v dynamické knihovně K8055D.DLL. Všimněte si, že všechny příklady v popisu funkcí a procedur, jsou napsány v jazyce C++. Ve složce K8055 příkladů jsou příklady napsané v jazyce Visual Basic 2008 Express, Visual C# 2008 Express, Visual C++ 2008 Express, VB6.0, MS Excel VBA, Delphi 5, Borland C++ Builder 6 a Dev-C+. Čtenáři by měli mít znalost základních datových typů, jakož i základní znalosti o operačním systém Microsoft Windows. Uživatelé Microsoft Visual Studio vezměte, prosím, na vědomí: K8055D.DLL je standardní Windows DLL, nemůžete na ni odkazovat. Konvence volání Konvence volání je schéma, které udává jak lze přijímat parametry od jejich volajícího a jak se vrací výsledek. Různé programovací jazyky používají různé konvence volání, a proto je důležité vědět, jakou konvenci volání používá použitý programovací jazyk, a jaké konvence volání používá K8055D.DLL. Nejběžnější konvence volání je stdcall konvence volání, a to je také ta, kterou jsme použili pro naši DLL. Pokud používáte.net (VB.NET nebo C#), nemusíte se o to starat, protože konvence volání v.net je také stdcall. Nicméně, pokud používáte C pro import funkcí poskytovaných DLL, budete tomu muset věnovat zvláštní pozornost. Nastavení adresy karty SK5 SK6 Adresa karty ZAP ZAP 0 VYP ZAP 1 ZAP VYP 2 VYP VYP 3 Tab. 1: Nastavení propojek SK5, SK6 pro určení adresy karty 1

Nastavení adresy karty musí být provedeno dříve, než je kabel USB připojen k K8055N kartě nebo před zapnutím do PC. Přehled funkcí a procedur Obecné funkce int OpenDevice(int CardAddress); Otevírá komunikační spojení na K8055N void CloseDevice(); Zavře odkaz na zařízení K8055N int SearchDevices(); Dává informaci o počtu připojených zařízení v počítači int SetCurrentDevice(int lngcardaddress); Nastaví aktuální ovládané zařízení int Version(); Poskytuje informace číslu verze DLL knihovny Funkce analogově-digitálního převodníku int ReadAnalogChannel(int Channel); Načte stav zadaného analogového vstupního kanálu void ReadAllAnalog(int *Data1, int *Data2); Načte stav obou analogových vstupních kanálů Funkce digitálně-analogového převodníku void OutputAnalogChannel(int Channel, int Data); Nastaví analogový zadaný výstupní kanál podle Data void OutputAllAnalog(int Data1, int Data2); Nastaví oba analogové výstupní kanály podle Data1, 2 void ClearAnalogChannel(int Channel); Nastaví zadaný analogový výstup na minimální hodnotu void ClearAllAnalog(); Nastaví oba analogové výstupy na minimální hodnotu void SetAnalogChannel(int Channel); Nastaví zadaný analogový výstup na maximální hodnotu void SetAllAnalog(); Nastaví oba analogové výstupy na maximální hodnotu Funkce digitálních výstupů void WriteAllDigital(int Data); Nastaví digitální výstupy podle data void ClearDigitalChannel(int Channel); Nastaví zadaná bit na hodnotu 0 void ClearAllDigital(); Nastaví všechny bity na hodnotu 0 void SetDigitalChannel(int Channel); Nastaví zadaná bit na hodnotu 1 void SetAllDigital(); Nastaví všechny bity na hodnotu 1 Funkce digitálních vstupů bool ReadDigitalChannel(int Channel); Čte stav vstupního kanálu (bitu) int ReadAllDigital(); Čte stav všech vstupních kanálů (bitů) Funkce čítačů void ResetCounter(int CounterNr); Vynuluje stav 16 bitového čítače pulsů 1 nebo 2 int ReadCounter(int CounterNr); Načte aktuální hodnotu čítače pulsů 1 nebo 2 void SetCounterDebounceTime(int CounterNr, int DebounceTime); Nastaví časovou konstantu pulsů, které budou počítány Funkce zpětného čtení int ReadBackDigitalOut(); Čte zpět výstupní hodnotu digitálních výstupů karty void ReadBackAnalogOut(int *Buffer); Čte zpět výstupní hodnotu D/A výstupů karty 2

Popis funkcí a procedur OpenDevice int OpenDevice(int CardAddress); CardAddress: Hodnota mezi 0 a 3, které odpovídají propojky (SK5, SK6) nastavené na desce K8055N. Viz tabulka 1. Výsledek: Int: Návratová hodnota pokud se podařilo najít K8055N dané adresy. Návratová hodnota -1 znamená, že K8055N karta nebyla nalezena. Otevírá komunikační spojení a kartou K8055N. Načte ovladače nutné ke komunikaci přes USB port. Tento postup musí být proveden před jakýmikoli pokusy o komunikaci s K8055N kartou. Tuto funkci lze také použít k volbě aktivní K8055N karty pro čtení a zápis dat. Všechny komunikační rutiny po tomto volání funkce jsou určeny k této kartě, dokud nebude vybrána jiná karta zavoláním této funkce. int CardAddr = 3 - (int(checkbox1->checked) + int(checkbox2->checked) * 2); int h = OpenDevice(CardAddr); switch (h) { case 0: case 1: case 2: case 3: Label1->Text = "Karta c. " + h.tostring() + " pripojena"; Timer1->Enabled = true; break; case -1 : Label1->Text = "Karta c. " + CardAddr.ToString() + " nenalezena"; break; } SearchDevices int SearchDevices(); Pomocí této funkce mohou být otevřeny všechny karty K8055N. Není potřeba používat OpenDevice. Tato funkce vrátí všechny připojené zařízení K8055N k počítači. Vrácená hodnota je bitové pole. Vrácená hodnota BIN 0000, DEC 0 : nebylo nalezeno žádné zařízení BIN 0001, DEC 1 : byla nalezena karta adresy 0 BIN 0010, DEC 2 : byla nalezena karta adresy 1 BIN 0100, DEC 4 : byla nalezena karta adresy 2 BIN 1000, DEC 8 : byla nalezena karta adresy 3 3

návratová hodnota 9 = zařízení s adresou 0 a 3 jsou připojeny. k = SearchDevices(); if (k) Timer1->Enabled = true; if (k & 1) RadioButton9->Enabled = true; if (k & 2) RadioButton10->Enabled = true; if (k & 4) RadioButton11->Enabled = true; if (k & 8) RadioButton12->Enabled = true; SetCurrentDevice int SetCurrentDevice(int CardAddress); Funkce nastavení aktuálního ovládané zařízení.vrácená hodnota je adresa zařízení, pokud je tato hodnota -1 nebyla nalezena žádná deska s adresou zadanou parametrem. CardAddress: hodnoty 0 až 3, což odpovídá na adrese zařízení. SetCurrentDevice(0); CloseDevice void CloseDevice(); Uvolní komunikační rutiny pro K8055N karty a uvolní ovladače potřebné pro komunikaci přes USB port. Je to poslední akce aplikačního programu před ukončením. private: System::Void Form1_FormClosed(System::Object^ sender, System::Windows::Forms::FormClosedEventArgs^ e) { CloseDevice(); } ReadAnalogChannel int ReadAnalogChannel(int Channel); Channel: Hodnota 1 nebo 2, která odpovídá na AD kanálu, jehož stav je třeba číst. 4

Výsledek: Int: Odpovídá načtené hodnotě zadaného analogově-digitálního převodníku. Vstupní napětí vybraného kanálu 8-bitový analogově-digitálního převodníku je převedena na hodnotu, která leží mezi hodnotami 0 a 255. Label1->Text = ReadAnalogChannel(1).ToString(); ReadIAllAnalog void ReadAllAnalog(int *Data1, int *Data2); Data1, Data2: Ukazatele na celá čísla (32-bit), kam budou data načtena. Hodnoty obou A-D převodníků jsou čteny do dvojice celých čísel. int Data1; int Data2; ReadAllAnalog(&Data1, &Data2); OutputAnalogChannel void OutputAnalogChannel(int Channel, int Data); Channel: Data: Hodnota 1 nebo 2, která odpovídá číslu kanálu D-A převodníku, který má být nastaven. Hodnota mezi 0 a 255, která má být odeslána na 8-bitový D-A převodník. Zvolený kanál 8-bitového D-A převodníku se nastaví dle zadané hodnoty. To znamená, že odeslaná data odpovídají konkrétnímu výstupnímu napětí. Hodnota 0 odpovídá minimálnímu výstupnímu napětí (0 V) a hodnota 255 odpovídá maximální výstupnímu napětí (+5 V). Hodnoty proměnné "Data" ležící mezi těmito extrémy, mohou být přepočteny pomocí následujícího vzorce: Data / 255 5V. OutputAnalogChannel(1, 255 - VScrollBar1->Value); OutputAllAnalog void OutputAllAnalog(int Data1, int Data2); Data1, Data2: Hodnoty mezi 0 a 255, které má být odeslány na 8-bitové D-A převodníky. Oba kanály 8-bitového D-A převodníku se nastaví dle zadaných hodnot. To znamená, že odeslaná data odpovídají konkrétním výstupním napětím. Hodnota 0 odpovídá minimální výstupní napětí (0 V) a hodnota 255 odpovídá maximální výstupní napětí (+5 V). Hodnoty proměnné "Data1" nebo "Data2" leží mezi těmito extrémy, mohou být přepočteny pomocí následujícího vzorce: Data / 255 5V. 5

OutputAllAnalog(50, 255); ClearAnalogChannel void ClearAnalogChannel(int Channel); Channel: Hodnota 1 nebo 2, která odpovídá číslu kanálu 8-bitového D-A převodníku, na kterém mají být data vymazána. Vybraný kanál D-A převodníku je nastaven na minimální výstupní napětí (0 V). ClearAnalogChannel(1); ClearAllAnalog Syntaxe void ClearAllAnalog(); Oba kanály D-A převodníku jsou nastaveny na minimální výstupní napětí (0 V). ClearAllAnalog(); SetAnalogChannel void SetAnalogChannel(int Channel); Channel: Hodnota 1 nebo 2, která odpovídá kanálu 8-bitového D-A převodníku, ve kterém mají být data nastavena na maximum. Zvolený kanál 8-bitového D-A převodníku je nastaven na maximální výstupní napětí. SetAnalogChannel(1); SetAllAnalog void SetAllAnalog(); Všechny kanály 8-bitového D-A převodníku jsou nastaveny na maximální výstupní napětí. SetAllAnalog(); 6

WriteAllDigital void WriteAllDigital(int Data); Data: Hodnota mezi 0 a 255, která je odeslána na výstupní digitální port (8 kanálů). Kanály digitálního výstupního portu jsou nastaveny dle odpovídajících bitů v parametru Data. Vysoká logická úroveň (1) znamená, že výstup mikrokontroléru IC3 je nastaven, a nízká logická úroveň (0) znamená, že výstup je uzemněn. WriteAllDigital(0x55); ClearDigitalChannel void ClearDigitalChannel(int Channel); Channel: Hodnota mezi 1 a 8, které odpovídá číslo výstupního kanálu, který má být vymazán (0). CheckBox9->Checked? SetDigitalChannel(1): ClearDigitalChannel(1); ClearAllDigital void ClearAllDigital(); Všechny výstupní kanály budou vymazány (0). ClearAllDigital(); SetDigitalChannel void SetDigitalChannel(int Channel); Channel: Hodnota mezi 1 a 8, která odpovídá číslu výstupního kanálu, který má být nastaven (1). Zadaný digitální výstupní kanál je nastaven (1). CheckBox9->Checked? SetDigitalChannel(1): ClearDigitalChannel(1); SetAllDigital void SetAllDigital(); 7

Všechny výstupní kanály budou nastaveny (1). SetAllDigital(); ReadDigitalChannel bool ReadDigitalChannel(int Channel); Channel: Výsledek: bool: Hodnota mezi 1 a 5, která odpovídá vstupnímu kanálu, jehož stav je třeba načíst. TRUE znamená, že kanál byl nastaven a FALSE znamená, že je vymazán. Načtení stavu zadaného vstupního digitálního kanálu. CheckBox4->Checked = ReadDigitalChannel(1); ReadAllDigital int ReadAllDigital(); Výsledek: int: 5 LSB odpovídají stavu digitálních vstupních kanálů. Vysoká (1) znamená, že kanál je HIGH, nízká (0), znamená to, že kanál je LOW. Description Funkce vrací stav digitálních vstupů. i = ReadAllDigital(); CheckBox4->Checked = (i & 1)>0; CheckBox5->Checked = (i & 2)>0; CheckBox6->Checked = (i & 4)>0; CheckBox7->Checked = (i & 8)>0; CheckBox8->Checked = (i & 16)>0; ResetCounter void ResetCounter(int CounterNr); CounterNr: Resetuje zadaný čítač pulzů. ResetCounter(1); Hodnota 1 nebo 2, která odpovídá číslu čítače, který se resetuje. 8

ReadCounter int ReadCounter(int CounterNr); CounterNr: Výsledek: int: Hodnota 1 nebo 2, která odpovídá číslu načteného čítače. Hodnota 16 bitového čítače pulzů. Funkce vrací stav vybraného 16 bitového čítače impulzů. Počítadlo číslo 1 počítá impulzy na vstupu I1 a číslo 2 počítá impulzy na vstupu I2. TextBox1->Text = ReadCounter(1).ToString(); SetCounterDebounceTime void SetCounterDebounceTime(int CounterNr, int DebounceTime); CounterNr: Hodnota 1 nebo 2, která odpovídá číslu čítače, který bude nastaven. DebounceTime: Časová konstanta pro čítač pulzů. Hodnota DebounceTime odpovídá době trvání pulzu v milisekundách (ms), kterou je možné nastavit pro čítač pulzů. Časová konstanta hodnoty se může pohybovat mezi 0 a 5000. Vstupy čítačů lze softwarově ošetřit na délku trvání pulzu, aby se zabránilo falešnému spuštění, pokud jsou na vstupu použity mechanické spínače nebo relé. Čas vstupního zpoždění je mezi oběma hranami - sestupnou a vzestupnou hranou. Výchozí čas vstupního zpoždění je 2 ms. To znamená, že vstup čítače, musí být stabilní po dobu nejméně 2 ms předtím, než se uznává (přičemž maximální počet rychlost asi 200 impulzů za sekundu). Je-li doba vstupní zpoždění je nastavena na 0, pak je maximální rychlost počítání je asi 2000 impulzů za sekundu. SetCounterDebounceTime(1, 10); Version int Version(); Výstup: int: 32 bitové celé číslo, které reprezentuje verzi použité DLL (4 číslice). Každý byte je jedna číslice. Načte se číslo verze dané DLL knihovny. int ver = Version(); Label9->Text = (ver >> 24).ToString()+"."+((ver >> 16) & 0xFF).ToString()+"." +((ver >> 8) & 0xFF).ToString()+"."+(ver & 0xFF).ToString() 9

ReadBackDigitalOut int ReadBackDigitalOut(); Výsledek: int: Hodnota mezi 0 a 255, která je zpětně načtena z digitálního výstupnímu portu. Načte zpět byte, který je právě nastaven na digitálním výstupním portu. int DigitalOut; DigitalOut = ReadBackDigitalOut(); ReadBackAnalogOut(AnalogOut); CheckBox9->Checked = (DigitalOut & 1)>0; CheckBox10->Checked = (DigitalOut & 2)>0; CheckBox11->Checked = (DigitalOut & 4)>0; CheckBox12->Checked = (DigitalOut & 8)>0; CheckBox13->Checked = (DigitalOut & 16)>0; CheckBox14->Checked = (DigitalOut & 32)>0; CheckBox15->Checked = (DigitalOut & 64)>0; CheckBox16->Checked = (DigitalOut & 128)>0; ReadBackAnalogOut void ReadBackAnalogOut(int *Buffer); Buffer: Ukazatel na pole 32 bitových celých čísel, kam se načtou data. Hodnoty obou D-A převodníků jsou načteny zpět do pole 32 bitových celých čísel. ReadBackAnalogOut(AnalogOut); OutputAnalogChannel(1, 255 - VScrollBar1->Value); OutputAnalogChannel(2, 255 - VScrollBar2->Value); Label4->Text = (255 - VScrollBar1->Value).ToString(); Label5->Text = (255 - VScrollBar2->Value).ToString(); 10

Deklarace funkcí a procedur v jiných programovacích jazycích Visual Basic 6.0 Private Declare Sub ReadAll Lib "k8055d.dll" (ByVal data As Long) Private Declare Function Version Lib "k8055d.dll" () As Long Private Declare Function SearchDevices Lib "k8055d.dll" () As Long Private Declare Function SetCurrentDevice Lib "k8055d.dll" (ByVal CardAddress As Long) As Long Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Long) As Long Private Declare Sub CloseDevice Lib "k8055d.dll" () Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long) As Long Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByVal Data1 As Long, ByVal Data2 As Long) Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long, ByVal data As Long) Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Long, ByVal Data2 As Long) Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long) Private Declare Sub SetAllAnalog Lib "k8055d.dll" () Private Declare Sub ClearAllAnalog Lib "k8055d.dll" () Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long) Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal data As Long) Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long) Private Declare Sub ClearAllDigital Lib "k8055d.dll" () Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long) Private Declare Sub SetAllDigital Lib "k8055d.dll" () Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long) As Boolean Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Long Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Long) As Long Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Long) Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Long, ByVal DebounceTime As Long) Private Declare Function ReadBackDigitalOut Lib "k8055d.dll" () As Long Private Declare Sub ReadBackAnalogOut Lib "k8055d.dll" (ByRef Buffer As Long) Visual Basic 2008 Express Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer Private Declare Sub CloseDevice Lib "k8055d.dll" Private Declare Function Version Lib "k8055d.dll" () As Integer Private Declare Function SearchDevices Lib "k8055d.dll" () As Integer Private Declare Function SetCurrentDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Integer Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByRef Data1 As Integer, ByRef Data2 As Integer) Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer, ByVal Data As Integer) Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Integer, ByVal Data2 As Integer) Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer) Private Declare Sub SetAllAnalog Lib "k8055d.dll" () Private Declare Sub ClearAllAnalog Lib "k8055d.dll" () Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer) Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Integer) Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer) Private Declare Sub ClearAllDigital Lib "k8055d.dll" () Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer) Private Declare Sub SetAllDigital Lib "k8055d.dll" () Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Boolean Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Integer Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Integer) As Integer Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Integer) Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Integer, ByVal DebounceTime As Integer) Private Declare Function ReadBackDigitalOut Lib "k8055d.dll" () As Integer Private Declare Sub ReadBackAnalogOut Lib "k8055d.dll" (ByRef Buffer As Integer) Visual C# 2008 Express public static extern int OpenDevice(int CardAddress); 11

public static extern void CloseDevice(); public static extern int ReadAnalogChannel(int Channel); public static extern void ReadAllAnalog(ref int Data1, ref int Data2); public static extern void OutputAnalogChannel(int Channel, int Data); public static extern void OutputAllAnalog(int Data1, int Data2); public static extern void ClearAnalogChannel(int Channel); public static extern void SetAllAnalog(); public static extern void ClearAllAnalog(); public static extern void SetAnalogChannel(int Channel); public static extern void WriteAllDigital(int Data); public static extern void ClearDigitalChannel(int Channel); public static extern void ClearAllDigital(); public static extern void SetDigitalChannel(int Channel); public static extern void SetAllDigital(); public static extern bool ReadDigitalChannel(int Channel); public static extern int ReadAllDigital(); public static extern int ReadCounter(int CounterNr); public static extern void ResetCounter(int CounterNr); public static extern void SetCounterDebounceTime(int CounterNr, int DebounceTime); public static extern int Version(); public static extern int SearchDevices(); public static extern int SetCurrentDevice(int lngcardaddress); public static extern int ReadBackDigitalOut(); public static extern void ReadBackAnalogOut(int[] Buffer); Delphi function SetCurrentDevice(CardAddress: integer): integer; stdcall; external 'K8055d.dll'; function OpenDevice(CardAddress: integer): integer; stdcall; external 'K8055d.dll'; function SearchDevices: integer; stdcall; external 'K8055d.dll'; function Version: integer; stdcall; external 'K8055d.dll'; procedure CloseDevice; stdcall; external 'K8055d.dll'; function ReadAnalogChannel(Channel: integer):integer; stdcall; external 'K8055d.dll'; procedure ReadAllAnalog(var Data1, Data2: integer); stdcall; external 'K8055d.dll'; procedure OutputAnalogChannel(Channel: integer; Data: integer); stdcall; external 'K8055d.dll'; procedure OutputAllAnalog(Data1: integer; Data2: integer); stdcall; external 'K8055d.dll'; procedure ClearAnalogChannel(Channel: integer); stdcall; external 'K8055d.dll'; procedure ClearAllAnalog; stdcall; external 'K8055d.dll'; procedure SetAnalogChannel(Channel: integer); stdcall; external 'K8055d.dll'; procedure SetAllAnalog; stdcall; external 'K8055d.dll'; procedure WriteAllDigital(Data: integer);stdcall; external 'K8055d.dll'; procedure ClearDigitalChannel(Channel: integer); stdcall; external 'K8055d.dll'; procedure ClearAllDigital; stdcall; external 'K8055d.dll'; procedure SetDigitalChannel(Channel: integer); stdcall; external 'K8055d.dll'; procedure SetAllDigital; stdcall; external 'K8055d.dll'; function ReadDigitalChannel(Channel: integer): Boolean; stdcall; external 'K8055d.dll'; function ReadAllDigital: integer; stdcall; external 'K8055d.dll'; 12

function ReadCounter(CounterNr: integer): integer; stdcall; external 'K8055d.dll'; procedure ResetCounter(CounterNr: integer); stdcall; external 'K8055d.dll'; procedure SetCounterDebounceTime(CounterNr, DebounceTime:integer); stdcall; external 'K8055d.dll'; procedure SetPWM(Channel: integer; Data: integer; Frequency: integer); stdcall; external 'K8055d.dll'; function ReadBackDigitalOut:Longint; stdcall; external 'K8055d.dll'; procedure ReadBackAnalogOut(Buffer: Pointer); stdcall; external 'K8055d.dll'; Borland C++Builder #ifdef cplusplus extern "C" { #endif #define FUNCTION declspec(dllimport) FUNCTION int stdcall OpenDevice(int CardAddress); FUNCTION void stdcall CloseDevice(); FUNCTION int stdcall ReadAnalogChannel(int Channel); FUNCTION void stdcall ReadAllAnalog(int *Data1, int *Data2); FUNCTION void stdcall OutputAnalogChannel(int Channel, int Data); FUNCTION void stdcall OutputAllAnalog(int Data1, int Data2); FUNCTION void stdcall ClearAnalogChannel(int Channel); FUNCTION void stdcall ClearAllAnalog(); FUNCTION void stdcall SetAnalogChannel(int Channel); FUNCTION void stdcall SetAllAnalog(); FUNCTION void stdcall WriteAllDigital(int Data); FUNCTION void stdcall ClearDigitalChannel(int Channel); FUNCTION void stdcall ClearAllDigital(); FUNCTION void stdcall SetDigitalChannel(int Channel); FUNCTION void stdcall SetAllDigital(); FUNCTION bool stdcall ReadDigitalChannel(int Channel); FUNCTION int stdcall ReadAllDigital(); FUNCTION int stdcall ReadCounter(int CounterNr); FUNCTION void stdcall ResetCounter(int CounterNr); FUNCTION void stdcall SetCounterDebounceTime(int CounterNr, int DebounceTime); FUNCTION int stdcall Version(); FUNCTION int stdcall SearchDevices(); FUNCTION int stdcall SetCurrentDevice(int CardAddress); FUNCTION int stdcall ReadBackDigitalOut(); FUNCTION void stdcall ReadBackAnalogOut(int *Buffer); #ifdef cplusplus } #endif 13