THidWaiter
Als u een apparaat voorziet van een Solution chip, zal Windows dit apparaat
kunnen herkennen zodra het wordt aangesloten, en de juiste drivers laden. De
applicatie software die u zelf schrijft voor het apparaat wordt niet automatisch
gestart. Het THidWaiter component geeft de mogelijkheid de voor het apparaat
geschreven applicatie automatisch te activeren wanneer het apparaat wordt
aangesloten, en weer te de-activeren wanneer het apparaat wordt losgenomen.
Een voorbeeld vindt u hier. Als u dit
voorbeeld start, denk er dan aan dat het programma niet gestopt wordt als u op
'sluiten' drukt. In plaats daarvan verdwijnt het naar de tray. Als u het
programma echt wilt sluiten klikt u met de rechter muisknop op het icoon in de
tray, en kiest u 'close' uit het popup menu.
Deze component is afgeleid van THidDevices,
en geeft dezelfde functionaliteit als THidDevices. THidWaiter geeft daarnaast
echter ook de controle over de applicatie die voor een bepaald apparaat is
geschreven. THidWaiter kan ervoor zorgen dat deze applicatie onzichtbaar op de
achtergrond staat te wachten totdat een geschikt type apparaat wordt
aangesloten. Zodra dit gebeurt, kan de applicatie op de voorgrond gebracht
worden. Als het apparaat dan weer wordt losgenomen, kan de applicatie weer naar
de achtergrond gebracht worden. Als de applicatie op de achtergrond staat, is er
optioneel alleen een icoon in de icon-tray zichtbaar. De icon-tray is het deel
van de taakbalk waar ook de datum en tijd in staan (indien dit zo ingesteld is
in Windows.) Het is ook mogelijk de applicatie volkomen onzichtbaar te maken. Op
de desktop is dan niet te zien dat de applicatie aanwezig is, alleen in de taak
lijst die wordt getoond na Ctrl-Alt-Del zal de applicatie genoemd worden.
Zodra een apparaat wordt aangesloten of losgenomen, detecteert THidWaiter
dit, en genereert een event. THidWaiter geeft de mogelijkheid van elk
aangesloten apparaat de Vendor- en Product ID codes op te vragen, en
verschillende andere gegevens die van een USB apparaat bekend zijn bij Windows.
Hierdoor is het mogelijk te onderzoeken of het apparaat dat werd aangesloten van
het juiste type is, dat wil zeggen van het type waarvoor de applicatie
geschreven is. Als dit inderdaad zo is, kan de applicatie op de voorgrond
gebracht worden. Het lijkt dan voor de gebruiker alsof het aansluiten van het
apparaat automatisch het bijbehorende programma activeert.
THidWaiter houdt intern een lijst bij van alle compatibele devices die zijn
aangesloten op de PC. In deze lijst staan dus niet alleen Solution apparaten,
maar ook compatibele apparaten van een ander type. Het aantal apparaten dat op
enig moment in de lijst staat, is te verkrijgen via de NumberOfHidDevices
property. De apparaten zijn genummerd van 0 t/m (NumberOfHidDevices - 1). Met
dit nummer is elk van de apparaten uit de lijst te benaderen. Van elk van deze
apparaten kunnen een aantal eigenschappen worden opgevraagd. Aan de hand van
deze eigenschappen is uit te vinden of het een Solution apparaat betreft, dan
wel een ander type compatibel apparaat. Een THidDevice
component kan vervolgens aan het THidWaiter component gekoppeld worden, teneinde
met één van de apparaten uit de lijst te kunnen communiceren. In het algemeen
zult u één THidWaiter component in uw applicatie gebruiken, met daaraan
gekoppeld één of meerdere THidDevice componenten.
Properties
NumberOfHidDevices: Word
Dit is het aantal compatibele apparaten dat momenteel is aangesloten op de
PC. De apparaten zijn genummerd van 0 t/m (NumberOfHidDevices - 1). Gebruik
dit apparaat nummer om een van de onderstaande eigenschappen van een van de
apparaten uit de lijst te verkrijgen. Als er een apparaat bijkomt of wordt
weggenomen, kunnen de apparaat nummers veranderen. NumberOfHidDevices is
READ-ONLY.
VendorID[ Devicenr: Word]: Word
Elke fabrikant van USB apparaten kan bij het USB implementers forum een
unieke Vendor ID aanvragen. Dit nummer wordt in het apparaat geprogrammeerd,
en zorgt ervoor dat Windows de fabrikant van het apparaat kan herkennen. Samen
met het Product ID zorgt het er tevens voor dat Windows het betreffende type
apparaat kan onderscheiden van alle andere apparaten, en daardoor ervoor kan
zorgen dat bij aansluiten van het apparaat de juiste drivers worden geladen. USB Solution chips worden gemaakt door
Leiderdorp
Instruments en hun VendorID is $07A0 (1952)
ProductID[ Devicenr: Word]: Word
Samen met het Vendor ID zorgt dit nummer ervoor dat Windows het betreffende
type apparaat kan onderscheiden van alle andere apparaten, en daardoor ervoor
kan zorgen dat bij aansluiten van het apparaat de juiste drivers worden
geladen. Kijk bij de beschrijving van elk specifiek lid van de
USB Solution familie, welk ProductID erbij hoort. ProductID is READ-ONLY.
VersionNumber[ Devicenr: Word]: Word
Elk type apparaat kan een versie nummer van het apparaat in zich hebben.
Hoewel dit versie nummer als een Word wordt weergegeven, moet het beschouwd
worden als vier BCD getallen. Versienummer $0100 betekent versie 01.00.
VersionNumber is READ-ONLY.
ManufacturerString[ Devicenr: Word]: String
De fabrikant naam kan door de fabrikant als string in een USB apparaat
worden opgeslagen, en met ManufacturerString worden uitgelezen. De fabrikant
naam in een USB Solution apparaat is 'Leiderdorp Instruments'.
ManufacturerString is READ-ONLY.
ProductString[ Devicenr: Word]: String
De naam van het apparaat kan door de fabrikant als string in een apparaat
worden gezet, en met ProductString worden uitgelezen. Deze product naam wordt
door Windows op het scherm getoond als een apparaat voor de allereerste keer
wordt aangesloten, en Windows meldt bijvoorbeeld: 'New hardware found: I/O
Solution.' ProductString is READ-ONLY.
SerialNumberString[ Devicenr: Word]: String
Elk USB apparaat van een bepaald type kan een eigen serienummer hebben. Dit
nummer moet dan uniek zijn voor alle apparaten van het betreffende type. Met
SerialNumberString kan het in het apparaat opgeslagen unieke serienummer
worden uitgelezen. In een USB Solution apparaat wordt geen serienummer
toegepast. In dit geval geeft SerialNumberString een lege string terug.
SerialNumberString is READ-ONLY.
IndexedString[ Devicenr: Word; StringIndex: ULONG]: String
Behalve de bovengenoemde strings, kunnen in een USB apparaat nog een
willekeurig aantal andere strings worden opgeslagen. De betekenis van deze
extra strings hangt helemaal van het type apparaat af. In een USB Solution
apparaat worden deze strings niet gebruikt, en levert IndexedString altijd een
lege string op. In apparaten waar wel van deze extra strings aanwezig zijn, is
de index van de eerste van deze extra strings 0. IndexedString is READ-ONLY.
DevicePath[ Devicenr: Word]: String
USB apparaten worden door Windows benaderd via handles die door CreateFile
routines worden geretourneerd. DevicePath is de naam van de 'file' die voor
het verkrijgen van een dergelijke handle geopend moet worden. Als er een
apparaat bijkomt of wordt weggenomen, kunnen alle apparaat nummers veranderen.
Maar het DevicePath zal hetzelfde blijven zolang een bepaald apparaat
aangesloten is. Normaal gesproken zult u DevicePath niet nodig hebben, omdat
de andere meegeleverde componenten voldoende functies bieden. DevicePath is
READ-ONLY.
Icon: TIcon
Dit is het icoon dat op de icon-tray getoond wordt.
TaskVisible: Boolean
Als TaskVisible de waarde 'TRUE' krijgt, wordt de applicatie op de
voorgrond geplaatst. Krijgt TaskVisible de waarde 'FALSE' dan wordt de
applicatie onzichtbaar gemaakt, en is er alleen nog het icoon op de icon-tray
dat de aanwezigheid van de applicatie verraadt. Dit is dus niet hetzelfde als
het minimaliseren van de applicatie, omdat daarbij op de taakbalk een knop
wordt getoond waarbij de applicatie weer getoond kan worden.
Hint: String
Als de gebruiker met de muiscursor boven het icoon op de icon-tray zweeft,
wordt deze tekst getoond.
IconVisible: Boolean
Als TaskVisible de waarde 'TRUE' krijgt, wordt de applicatie op de
voorgrond geplaatst. Krijgt TaskVisible de waarde 'FALSE' dan wordt de
applicatie onzichtbaar gemaakt, en is er alleen nog het icoon op de icon-tray
dat de aanwezigheid van de applicatie verraadt. En zelfs dit icoon kan
onzichtbaar gemaakt worden, waardoor aan niets meer is te zien dat het
programma draait. Als IconVisible 'TRUE' is, is het icoon op de icon-tray
zichtbaar. Als IconVisible 'FALSE' is, is het icoon op de icon-tray
onzichtbaar.
PopupMenu: TPopupMenu
Als de gebruiker met de rechter muisknop op het icoon op de icon-tray
klikt, wordt dit lokale menu getoond.
Methods
HookHidDevice( HidDevice: THidDevice)
Met deze procedure kan een component van het type THidDevice
aan het THidDevices component gekoppeld worden. THidDevice kan daarna gebruikt
worden om met één van de apparaten uit de lijst die wordt bijgehouden door
THidDevices, te communiceren. Meestal zal het niet nodig zijn deze procedure
rechtstreeks aan te roepen, omdat de koppeling ook tot stand kan worden
gebracht via de object inspector van de Delphi IDE.
UnhookHidDevice( HidDevice: THidDevice)
Met deze procedure wordt een THidDevice
dat aan THidDevices gekoppeld is, hiervan losgemaakt. Meestal zal het niet
nodig zijn deze procedure rechtstreeks aan te roepen, omdat de koppeling
automatisch wordt verwijderd als een THidDevice component wordt verwijderd.
Events
OnDeviceChange: TNotifyEvent
Dit event wordt gegenereerd wanneer er een apparaat wordt losgenomen of
wordt aangesloten. Als er THidDevice
componenten zijn gekoppeld, worden deze gekoppelde THidDevice componenten ook
op de hoogte gesteld van de verandering.
OnClick: TNotifyEvent
Dit event wordt gegenereerd wanneer de gebruiker met de linker muisknop op
het icoon op de icon-tray klikt.
OnDblClick: TNotifyEvent
Dit event wordt gegenereerd wanneer de gebruiker met de linker muisknop
dubbel-klikt op het icoon op de icon-tray.
|