Um die Einbindung von Y.A.R.D. in andere Software zu erleichtern?, habe ich mich entschieden, daß die yards.exe
einen COM-Server enthalten sollte - welchen man auch von VB, Delphi und C++ aus erreichen kann.
Bevor man hier weiterliest sollte man erstmal im Generellen damit vertraut sein wie COM funktioniert und
man es benutzt.
Wer meine zur Verfügung gestellten Pascalsourcen verwendet, kann direkt auf die Funktionen der Unit yardTools.pas
zugreifen. Diese erledigen alle notwendigen Low-Level API aufruf (Rund-um-sorglos-paket).
function getYard:IYard;
Liefert einen Interface Zeiger auf eine laufende Instanz der yards.exe, wenn keine aktive yards.exe vorhanden ist liefert die Funktion
nil zurück.
function getStartYard:IYARD.;
Diese Funktion liefert einen Interface Zeiger auf eine laufende Instanz der yards.exe, wenn keine yards.exe gestartet ist - wird
dieser gestartet. Sofern die yards.exe mindestens einmal vorher gestartet und konfiguriert wurde, wenn das nicht der Fall ist liefert
diese Funktion ebenfalls nil.
GetActiveObject keine Instanz ermitteln konnte, muß diese mittels CreateProcess gestartet werden.
Den Namen des ExeServers habe ich der Einfachheit halber in der Registry abgespeichert. Im Schlüssel HKCU\Software\Webers\Y.A.R.D\
gibt es einen Eintrag program in diesem steht der vollständige Dateiname der Serveranwendung. Bevor man nach
dem CreateProcess versucht mittels GetActiveObject das Interface zu erhalten sollte man darauf warten das der
Server in den Idle Status übergegangen ist. Das Geschieht mit der Funktion WaitForInputIdle(pinf.hProcess,10000);
die 10 Sekunden haben bei mir bisher immer gereicht, damit der Serverprozess in den Status Idle eintritt und somit für die externe
Benutzung zur Verfügung steht. | Funktion | Parameter | ||||||
|---|---|---|---|---|---|---|---|
| SendRemoteKey |
|
||||||
Rückgabewert: WordBool ist True wenn der RemoteName und der Tastenname im Y.A.R.D. Server bekannt sind, andernfalls False
Bei Kommunikationsfehlern werden Exceptions ausgelöst.
Mit dieser Funktion werden IR-Befehle gesendet, wobei man sich als Anwender keine Gedanken darüber machen muss wie der Befehl kodiert wird. |
|||||||
| Funktion | Parameter | ||||||
| SendIrCode |
|
||||||
Rückgabewert: WordBool ist True wenn der Protokollname im Y.A.R.D. Server bekannt sind, andernfalls False
Bei Kommunikationsfehlern werden Exceptions ausgelöst.
Diese Funktion kann verwendet werden um beliebige IR-Codes zu senden, man kann damit auch fortlaufende Probesendungen durchführen. |
|||||||
| Funktion | Parameter | ||||||
| GetWakeupTime | keine Parameter | ||||||
Rückgabewert: TDateTime (varDate) Bei Kommunikationsfehlern werden Exceptions ausgelöst.
Liefert die aktuell eingestellte Weckzeit zurück. |
|||||||
| Funktion | Parameter | ||||||
| GetTime | keine Parameter | ||||||
Rückgabewert: TDateTime (varDate) Bei Kommunikationsfehlern werden Exceptions ausgelöst.
Liefert die aktuelle Uhrzeit der Hardware zurück. |
|||||||
| Funktion | Parameter | ||||||
| SetWakeupTime |
|
||||||
Rückgabewert: bool true - wenn Weckzeit gesetzt werden konnte, false - wenn Y.A.R.D. nicht reagiert hat(bedingt).
Dient zum Einstellen der Weckzeit. Das Datum muss nach dem 1.1.2005 liegen. (Da der 1.1.2005 die Bezugszeit für Y.A.R.D. darstellt.) |
|||||||
| Funktion | Parameter | ||||||
| SetSecondWakeupTime |
|
||||||
Rückgabewert: bool true - wenn Weckzeit gesetzt werden konnte, false - wenn Y.A.R.D. nicht reagiert hat(bedingt).
Dient zum Einstellen der 2. Weckzeit. Das Datum muss nach dem 1.1.2005 liegen. (Da der 1.1.2005 die Bezugszeit für Y.A.R.D. darstellt.) Diese hat derzeit noch keine spezielle Bedeutung...,d.h. kann frei verwendet werden. z.b. um den HTPC als Wecker zu missbrauchen. |
|||||||
| Funktion | Parameter | ||||||
| SetTime |
|
||||||
|
Uhrzeit der Hardware einstellen. Das Datum muss nach dem 1.1.2005 liegen. Dieser Vorgang ist relativ kritisch, da der Funktionsaufruf ein gewisse Latenzzeit besitzt bis
die Zeit eingestellt ist und die Uhr damit wieder anläuft.
|
|||||||
| Funktion | Parameter | ||||||
| GetBootReason | keine Parameter | ||||||
|
Liefert als Wert der Aufzählung |
|||||||
| Funktion | Parameter | ||||||
| ReadUserPort |
|
||||||
Rückgabewert: bool ist True wenn der freie Eingang des µC einen H-Pegel anliegen hat, bzw. False wenn der Pegel-L ist.
Mit dieser Funktion kann der Status des freien Ports vom µC ausgelesen werden. |
|||||||
| Funktion | Parameter | ||||||
| Read_I2C |
|
||||||
|
Rückgabewert: |
|||||||
| Funktion | Parameter | ||||||
| Write_I2C |
|
||||||
|
Rückgabewert: |
|||||||
| Funktion | Parameter | ||||||
| GetFirmwareVersion | |||||||
|
Rückgabewert: |
|||||||
| Funktion | Parameter | ||||||
| RegisterNotifier |
|
||||||
|
Diese Funktion ist kein direkt an die Hardware abgesetzter Befehl, sondern registriert lediglich eine Schnittstelle zur Benachrichtigung über empfangener IR-Befehle. Das Zurückgelieferte Handle muss aufgehoben werden, damit eine Clientanwendung bei Ihrem Programmende den registrierten Notifier abmelden kann. |
|||||||
| Funktion | Parameter | ||||||
| UnRegisterNotifier |
|
||||||
|
UnRegisterNotifier meldet den Notifier ab welcher unter dem übergebenen Handle registriert ist. Ein Programm muss
alle seine Handler bei Programmende abmelden - sonst kann der Y.A.R.D.server beim nächsten Versuch eine Benachrichtigung zu
verschicken crashen. |
|||||||
| Funktion | Parameter | ||||||
| GetRemotes | |||||||
|
Rückgabewert: |
|||||||
| Funktion | Parameter | ||
|---|---|---|---|
| get_count | |||
|
Rückgabewert: |
|||
| Funktion | Parameter | ||
| FindRemote |
|
||
|
Rückgabewert: |
|||
|
Die Liste der Fernbedienungen nach einer mit dem gegebenen Namen suchen. Gross und Kleinschreibung wird dabei nicht berücksichtigt. Wird keine FB gefunden liefert diese Funktion NIL. |
|||
| Funktion | Parameter | ||
| Get_Item |
|
||
|
Rückgabewert: |
|||
|
Liefert eine bestimmte FB der Liste. |
|||
| Funktion | Parameter | ||
|---|---|---|---|
| get_name (name) | |||
|
Rückgabewert: |
|||
| Funktion | Parameter | ||
| FindKey |
|
||
|
Rückgabewert: |
|||
|
Die Liste der Tasten nach einer mit dem gegebenen Namen durchsuchen. Gross und Kleinschreibung wird dabei nicht berücksichtigt. Wird keine Taste gefunden liefert diese Funktion NIL. |
|||
| Funktion | Parameter | ||
| get_count (count) | |||
|
Rückgabewert: |
|||
| Funktion | Parameter | ||
| Get_Keys |
|
||
|
Rückgabewert: |
|||
|
Liefert eine bestimmte Taste der FB. |
|||
| Funktion | Parameter |
|---|---|
| get_name (name) | |
|
Rückgabewert: |
|
| Funktion | Parameter |
| Get_Code (code) | |
|
Rückgabewert: |
|
| Funktion | Parameter |
| Get_Protocol (Protocol) | |
|
Rückgabewert: |
|
Da ich mir sicher bin das meine Beschreibung nicht aussreicht habe ich in der Sourcedistribution eine Beispielanwendung
untergebracht, welche fast alle Funktionen demonstriert. Der Quellecode ist im Ordner Y.A.R.D.-client-sample des Source-Zips
zu finden.
| Home | Firmware | Clientsoftware | Hardware | Teileliste | Preisliste | Downloads | Impressum |