MENÜ English Ukrainian Russisch Startseite

Kostenlose technische Bibliothek für Bastler und Profis Kostenlose technische Bibliothek


ENZYKLOPÄDIE DER FUNKELEKTRONIK UND ELEKTROTECHNIK
Kostenlose Bibliothek / Schemata von radioelektronischen und elektrischen Geräten

USB-Anzeige über den Zeitpunkt der Medikamenteneinnahme. Enzyklopädie der Funkelektronik und Elektrotechnik

Kostenlose technische Bibliothek

Lexikon der Funkelektronik und Elektrotechnik / Medizin

Kommentare zum Artikel Kommentare zum Artikel

Ältere Menschen, die regelmäßig Medikamente einnehmen müssen, haben oft Schwierigkeiten, ihre eigene Therapie einzuhalten. Aber manchmal hängt nicht nur die Gesundheit, sondern auch das Leben selbst von der rechtzeitigen Umsetzung ärztlicher Anweisungen ab. Neben den üblichen organisatorischen Methoden zur Problemlösung können auch technische Mittel eingesetzt werden. Dazu gehört der vorgeschlagene Alarm, der jeden Tag nach dem darin eingegebenen Zeitplan Signale sendet, die Sie an die Notwendigkeit der Medikamenteneinnahme erinnern.

Viele ältere Menschen haben verständlicherweise Schwierigkeiten mit modernen Softwareprodukten. Bei den Alarmgeräten handelt es sich bei den meisten um etwas modernisierte Wecker, die selbst mit zwei oder drei Arten von Medikamenten nicht nach einem Zeitplan arbeiten können und ergonomisch nicht für die Verwendung durch ältere Menschen geeignet sind.

Die Gesamtansicht des vom Autor entwickelten Alarms, der über acht unabhängige Kanäle (je nach Anzahl der Zellen für Medikamente) verfügt, von denen jeder so konfiguriert werden kann, dass er bis zu vier Erinnerungssignale pro Tag sendet (insgesamt können 32 Signale sein). gesendet), ist in Abb. dargestellt. 1. Zur Eingabe oder Anpassung eines Medikamentenplans wird dieses Gerät über eine USB-Schnittstelle mit einem Computer verbunden, auf dem ein spezielles Programm ausgeführt wird. Wenn der Zeitplan geladen ist, funktioniert der Alarm autonom.

Medikationstimer USB
Reis. 1. Gesamtansicht des Signalgebers

Sowohl die Hardware- als auch die Softwareteile des Alarms sind unter Berücksichtigung ihrer Verwendung durch ältere Menschen, einschließlich Menschen mit Sehbehinderung, konzipiert. Die Handhabung des Geräts ist enorm vereinfacht und das Programm nutzt Algorithmen- und Schnittstellenlösungen, die den Bedienkomfort deutlich erhöhen. Darüber hinaus wurden bei der Konstruktion des Alarms elektrische Sicherheitsmaßnahmen berücksichtigt.

Der Alarm wird über ein ~230-V-Netz mit Strom versorgt und schaltet bei einem Stromausfall automatisch auf die Stromversorgung über den eingebauten Akku um. Der Stromverbrauch aus dem Netz überschreitet 5 W nicht, die Betriebszeit eines Akkus mit einer Kapazität von 800 mAh beträgt drei Tage. Dies gewährleistet die Sicherheit des Zeitplans auch bei einem längeren Stromausfall.

Die Alarmschaltung ist in Abb. dargestellt. 2. Das Funktionsprinzip ist einfach: Das Mikrocontroller-Programm vergleicht jede Sekunde den Wert der aktuellen Zeit mit der angegebenen Signalzeit. Bei einer Übereinstimmung gibt das Gerät ein Tonsignal aus, das eine von mehreren frei wählbaren Melodien ist, und schaltet die Leuchtanzeige der entsprechenden Zelle mit dem Medikament ein. Gleichzeitig wird der Zeitpunkt zum Senden dieses Signals auf den nächsten Tag verschoben. Um die Ton- und Lichtsignale auszuschalten, drücken Sie einfach die Bestätigungstaste SB1.

Medikationstimer USB
Reis. 2. Signalgeberschaltung (zum Vergrößern anklicken)

Der im Alarmgerät verwendete Mikrocontroller ATmega8A-PU (DD1) kann mit einer auf 2,7 V reduzierten Versorgungsspannung betrieben werden. Die Taktfrequenz des Mikrocontrollers von 12 MHz wird durch den Quarzresonator ZQ1 eingestellt. Die Tonalarmeinheit ist auf einer Mikroschaltung des Musiksynthesizers UMS8-08 (DD2) aufgebaut. Der Mikrocontroller schaltet das Audiosignal ein, indem er einen hohen Pegel an den S-Eingang des Synthesizer-Chips sendet. Das Signal ertönt kontinuierlich, bis die Taste SB1 gedrückt wird. Als Schallquelle dient der Piezostrahler HA1. Die Lautstärke wird durch den variablen Widerstand R16 gesteuert. Die Sortierung der Melodien erfolgt durch Drücken der SB2-Taste während der Wiedergabe. Ausführlichere Informationen zu den Mikroschaltungen der UMS-Serie finden Sie in [1].

Das Alarmgerät verfügt über eine im Diagramm nicht dargestellte Transformatorquelle mit stabilisierter Spannung von 5 V, die nach einer herkömmlichen Schaltung auf einem integrierten Stabilisator 7805 aufgebaut ist. Bei einem Spannungsausfall im Versorgungsnetz schaltet das Gerät auf Strom von der GB1-Batterie. Der durchschnittliche Strom, der davon verbraucht wird, überschreitet nicht 5 mA. Liegt Spannung im Netz an, wird die Batterie dank der Schaltung VD5, VD6, R18 kontinuierlich aufgeladen. Es wird jedoch empfohlen, das Gerät einmal im Monat auszuschalten und einen vollständigen Zyklus aus Entladen auf eine Spannung von 3 V und Laden mit einem externen Ladegerät durchzuführen.

Die Mikroschaltung des Musiksynthesizers UMS8-08 kann durch eine andere aus den Serien UMS7 und UMS8 ersetzt werden. Sie unterscheiden sich nur durch die Melodien. Es ist zulässig, den Transistor KT3102B durch einen KT3102G, KT3102E oder importierten BC547 sowie durch einen KT315B oder KT315G zu ersetzen, wenn der Widerstandswert des Widerstands R17 auf 51 kOhm reduziert wird. Anstelle der KD522B-Dioden sind KD521A, KD521B, KD522A, 1N4148 und ähnliche geeignet. Alle Festwiderstände sind C2-33N oder MLT. Oxidkondensatoren C3 und C6 - K50-83, K50-16 oder importiert. Die restlichen Kondensatoren sind Keramik K10-73-1b, K10-17v. Geeignet sind alle LEDs in Gehäusen mit einem Durchmesser von 5 mm der gewünschten Leuchtfarbe. In der Version des Autors ist als HL1 eine grüne LED verbaut, um den Patienten nicht umsonst zu stören, der Rest ist rot. Anschluss XS1 - USB-BF-Buchse.

Der GB1-Akku besteht aus drei Ni-Mh-Akkus der Größe AA mit einer Kapazität von 80 mAh. Sie können Batterien mit anderen Kapazitäten verwenden, es empfiehlt sich jedoch, einen Widerstand R18 mit einem solchen Widerstandswert zu wählen, dass der anfängliche Ladestrom einer auf eine Spannung von 3 V entladenen Batterie numerisch 0,1 ihrer Nennkapazität entspricht.

Der Alarm wird auf einer Standard-Lochmontageplatte mit den Maßen 70 x 50 mm und einem Lochabstand von 2,54 mm montiert. Installationsmethode: Scharnier mit Schmelzklebstoffbefestigung. Aufgrund der Einfachheit der Schaltung wurde auf die Verwendung gedruckter Leitungen verzichtet. Alle Elemente des Geräts, mit Ausnahme der HL2-HL9-LEDs, sind in einem elektrischen Verteilerkasten aus Kunststoff im IP67-Design mit den Abmessungen 80 x 80 x 40 mm untergebracht.

Der XS1-Stecker befindet sich auf einer kleinen Leiterplatte, gegenüber ist in der Wand der Box ein Loch entsprechender Größe ausgeschnitten. Die Elemente HA1, HL1, GB1, R16, SB1 werden mit Heißkleber auf dem Kartondeckel befestigt. Auf der Platine befindet sich der Taster SB2, der nichts mit der Bedienung zu tun hat. In Abb. Abbildung 3 zeigt die relative Position der Leiterplatte und der Remote-Elemente im Verteilerkasten.

Medikationstimer USB
Reis. 3. Die relative Position der Leiterplatte und der entfernten Elemente innerhalb der Anschlussdose

Medikamente werden in einer Standardkassette für Funkkomponenten untergebracht, die aus acht Zellen mit Schubladen besteht. Jede Zelle hat die Abmessungen 112x55x120 mm. Die Gesamtabmessungen des Kassettenhalters betragen 224x110x120 mm. Da die Zellen nicht versiegelt, sondern recht geräumig sind, sollten Medikamente in der Originalverpackung aufbewahrt werden. Der Kassettenhalter bietet außerdem einen Lichtschutz, der für die Aufbewahrung bestimmter Medikamente erforderlich ist. Auf den Frontplatten der Zellen sind Rillen für Schilder mit den Namen der Medikamente angebracht.

Der Verteilerkasten wird mit M3-Schrauben und Muttern an der linken Seitenwand des Kassettenkastens befestigt. Die LEDs HL2-HL9 befinden sich einzeln auf der Vorderseite jeder Zelle und sind über flexible Drähte, die in PVC-Röhren innerhalb der Zellen verlegt und auf der Rückseite des Kassettenkastens gebündelt sind, mit dem Gerät verbunden. Die Längenreserve jedes Kabelpaares, das zu den LEDs führt, sollte eine freie Ausdehnung der Zelle auf 75 bis 80 % des vollständig geöffneten Zustands gewährleisten.

Die dem Artikel beigefügte Datei USB_HID_Note.hex sollte in den Programmspeicher des Mikrocontrollers geladen werden. Die Konfiguration des Mikrocontrollers muss der in der Tabelle gezeigten entsprechen. 1. Ein ordnungsgemäß zusammengebautes Gerät erfordert keine Installation. Die gewünschte Helligkeit der LEDs kann durch Ändern ihres Stroms im Bereich von 5 bis 10 mA mithilfe einer Auswahl an Widerständen R7-R15 eingestellt werden.

Tabelle 1

Ränge Zustand
Cktop 0
CKSEL [3: 0] 1111
SUT [1: 0] 10
KÖRPER 1
W.D.E. 1
RSTDISBL 1

Aus Sicht der USB-Spezifikation gehört das Gerät zur HID-Klasse [2] mit einer Software-Implementierung der USB-Schnittstelle auf Basis des bekannten AVR V-USB-Treibers [3]. Ich möchte Sie daran erinnern, dass in diesem Fall die Schnittstelle in den Low-Speed-USB-1.1-Modus umgeschaltet werden muss, was laut Spezifikation über einen zwischen den D- und V-Schnittstellenleitungen geschalteten Widerstand erfolgtBus (In diesem Fall ist dies der Widerstand R4).

Es wurde eine der Standardoptionen zum Anschluss des Mikrocontrollers an seine Stromversorgung mit reduzierter Spannung über die Dioden VD1 und VD2 verwendet. Der Einsatz dieser Dioden ist trotz des Vorhandenseins einer Batterie wünschenswert, da dadurch der Einfluss ihrer Spannung auf die Koordination der logischen Ebenen des USB-Busses und des Mikrocontrollers eliminiert wird.

Der Mikrocontroller arbeitet mit einer Taktfrequenz von 12 MHz, einem der für V-USB zulässigen Bereiche. Das Programm ist in C in der Entwicklungsumgebung AVR Studio 4 geschrieben. Der Programmtext (main.c-Datei) enthält einen ausführlichen Kommentar. Zum Einsatz kamen die Treiberversion vusb-20100715 [4] und der Compiler WinAVR-20100110 [5].

Die V-USB-Bibliothek ist gut dokumentiert, daher werden hier nur Punkte berücksichtigt, die in direktem Zusammenhang mit der Implementierung des Projekts oder seinen Funktionen stehen. Der schrittweise Prozess zur Erstellung eines Programms auf Basis der V-USB-Bibliothek wird ausführlich in [6] beschrieben.

Wichtige Punkte, auf die Sie beim Erstellen eines Programms in AVR Studio achten sollten:

- Alle Dateien aus dem Ordner usbdrv des V-USB-Archivs müssen in den Projektordner kopiert werden.

- Die Dateien usbdrv.c, usbdrvasm.S, oddebug.c sollten zum AVR Studio-Projekt hinzugefügt werden (über den Kontextmenüpunkt „Vorhandene Quelldatei(en) hinzufügen…“ im Projektbaum);

- In den Projekteinstellungen (Projekte → Konfigurationsoptionen → Allgemein → Frequenz, Hz) sollte die Taktfrequenz des Mikrocontrollers auf 12000000 Hz eingestellt sein. Basierend auf diesem Wert ermittelt AVR Studio für den Compiler die F_CPU-Konstante, die V-USB verwendet.

Die notwendige V-USB-Konfiguration ist in der Datei usbconfig.h enthalten, die sich ebenfalls im Projektordner befinden sollte. Die Standardkonfigurationsdatei sollte durch die dem Artikel beigefügte Datei ersetzt werden. In der Tabelle 2 listet die wichtigsten in dieser Datei definierten Konstanten auf. Die Möglichkeit der kostenlosen Entwicklung von USB-HID-Geräten ist mit einem wichtigen Punkt verbunden: Es müssen Paare von VID/PID-Identifikatoren gemäß dem Dokument USB-IDs-for-free.txt aus der V-USB-Bibliothek [3] verwendet werden.

Tabelle 2

Konstant Wert Inhalt
USB CFG IOPORTNAME D Busanschlussport
USB CFG DMINUS-BIT 4 Das Bit des Ports, mit dem die D-Leitung verbunden ist
USBCFGDPLUSBIT 2 Bit des Ports, an dem die D+-Leitung angeschlossen ist (muss mit dem INTO-Interrupt-Eingang verbunden sein)
USB-CFG-SCHNITTSTELLENKLASSE 3 (VERSTECKT) Geräteklasse
USB CFG MAX. BUSLEISTUNG 100 Maximale Stromaufnahme aus dem USB-Bus. mA
USB CFG HID REPORT DESCRIPTOR LÄNGE 22 * HID-Berichtsdeskriptorlänge
USB-CFG-VENDOR-ID OxCO, 0x16 ID des Geräteherstellers
USB-CFG-GERÄTE-ID 0xDF, 05xXNUMX Produkt ID

*) Dieser Wert muss der Größe des PROGMEM usbHidReportDescriptor-Zeichenarrays im Programm entsprechen.

Das Programm verwendet das UNIX-Zeitformat, wobei der Zeitwert die Anzahl der Sekunden ist, die seit dem 00, 00:00:01.01.1970 UTC, vergangen sind. Der Alarm zeigt die Zeit nicht visuell an, wodurch unnötige Komplikationen der Schaltung und des Algorithmus vermieden werden seines Betriebs. Die pdata-Variable wird zur Übertragung von Zeitstempeln verwendet – vier Byte große UNIX-Zeitwerte.

Die maximale Anzahl der pro Tag gesendeten Signale wird im Programm durch die Konstante NUM_ CALLS festgelegt. Zum Speichern von Zeitwerten wird ein Array u_time der Größe NUM_CALLS+1 verwendet. In diesem Fall enthält das Array-Element u_time[NUM_CALLS] die aktuelle Uhrzeit und der Rest die Uhrzeit, zu der die Signale gesendet wurden. Jedem Kanal (Zelle der Medikamentenkassette) sind vier Array-Elemente zugeordnet. Beispielsweise enthält die erste Zelle Elemente von u_time[0] bis u_time[3], die zweite - von u_time[4] bis u_time[7] usw. Wenn der Wert eines Array-Elements Null ist, wird das entsprechende Signal berücksichtigt inaktiv. Dieser Ansatz ermöglicht es uns, den Algorithmus zur Übertragung und Verarbeitung von Informationen zu vereinfachen.

Der Deskriptor, der die Struktur des Pakets beschreibt, und die Informationsübertragungsverfahren usbFunctionWrite und usbFunctionRead werden auf Basis von Standardlösungen erstellt. Die Grundfunktionen sind ausführlich in der Header-Datei usbdrv.h aus [3] beschrieben. Ergänzt werden die Verfahren um Bedingungen zur Überprüfung der Anzahl der verarbeiteten Kanäle. Die Anzahl der Elemente des Arrays, die das Gerät vom Computer empfängt, ist um eins höher als die Anzahl der gesendeten, da der Computer zur Synchronisierung immer die aktuelle Uhrzeit übermittelt.

Zu Beginn der Hauptprozedur main() werden die I/O-Register konfiguriert, der Taktfrequenzteilungsfaktor auf 256 eingestellt und das Timerregister TCNT1 zunächst mit der Zahl geladen, die zur Bildung eines Zeitintervalls von 1 Sekunde benötigt wird. Timer-Überlauf-Interrupts sind standardmäßig deaktiviert.

Danach gelangt das Programm in die Hauptschleife. Wenn keine USB-Verbindung besteht, werden Interrupts global und bei Überlauf von Timer 1 aktiviert. In der for-Schleife wird jedes Element des Arrays u_time[i] mit einem Wert ungleich Null überprüft, um festzustellen, ob es mit dem aktuellen Wert übereinstimmt Zeit. Wenn ein Gleichstand erkannt wird, werden der Summer und die LED der entsprechenden Zelle eingeschaltet und die Reaktionszeit dieses Kanals wird um 86400 s (pro Tag) erhöht.

Anschließend wird der Pegel am PB0-Eingang überprüft. Wenn es niedrig ist (die Taste SB1 wird gedrückt, um den Signalempfang zu bestätigen), werden alle Ausgänge auf niedrige Logikpegel gesetzt, wodurch die Signale ausgeschaltet werden.

Parallel dazu wird jede Sekunde, wenn Timer 1 überläuft, die Interrupt-Behandlungsprozedur TIMER1_OVF_vect gestartet. Es stellt die Voreinstellung des TCNT1-Zählers wieder her, erhöht den aktuellen Zeitwert im Array-Element u_time[NUM_ CALLS] und ändert den Zustand des PB1-Ausgangs (die daran angeschlossene HL1-LED blinkt im Abstand von 2 s).

Wenn ein Gerät an USB angeschlossen ist, empfängt der PC5-Eingang einen hohen Pegel von der Vbus-Leitung des USB-Busses. In diesem Fall deaktiviert die if (PINC & (1<<5))-Bedingung die Überlaufunterbrechungen von Timer 1 und aktiviert den V-USB-Treiber. Die HL1-LED schaltet sich ein und leuchtet kontinuierlich.

Nach der Aktivierung des V-USB-Treibers ist es möglich, Informationen über USB auszutauschen. Die Schleife ruft die Funktion usbPoll() auf, die die Schnittstelle aktiv hält, wenn kein Informationsaustausch stattfindet. Der Informationsübertragungsprozess wird im Abschnitt zum Computerprogramm des Artikels ausführlicher beschrieben.

Betrachten wir nun das Computerprogramm zur Eingabe eines Zeitplans in das Signalgerät USB_HID_Note. Wie aus dem Hauptfenster (Abb. 4) hervorgeht, wurde bei der Entwicklung besonderes Augenmerk auf die Optimierung der Benutzeroberfläche gelegt, um eine einfache Bedienung für ältere Benutzer zu gewährleisten. Das Programm läuft unter Windows XP, Windows Vista, Windows 7, Windows 8, Windows Server 2003, Windows Server 2008. Die Leistung unter Windows 10 und Windows Server 2012 wurde nicht getestet, es besteht jedoch Grund zu der Annahme, dass es normal funktioniert.

Medikationstimer USB
Reis. 4. Das Hauptfenster des Computerprogramms zur Eingabe des Fahrplans in das Signalgerät

Nachdem Sie das Programm mit dem an den Computer angeschlossenen Alarmgerät gestartet haben, drücken Sie die Schaltfläche auf dem Bildschirm "Einstecken". Es wird eine Meldung mit dem Ergebnis des Verbindungsversuchs angezeigt. Wenn dies erfolgreich war, werden Schaltflächen auf dem Bildschirm verfügbar „Alles lesen“ und "Speichern".

Um einen Zeitplan einzugeben, wählen Sie einfach die Zellennummer aus der ersten Dropdown-Liste (Auswahl) und die Signalnummer für diese Zelle aus der zweiten Liste aus. Stellen Sie dann die gewünschte Signalzeit ein, klicken Sie auf die Flagge links neben der Zahl, um die ausgewählte Kombination aus Zelle und Signal zuzulassen oder zu deaktivieren (die Farbe der Flagge ändert sich) und schreiben Sie den Namen des Arzneimittels in die einzige verfügbare Zeile. Der Name des Arzneimittels ist an die Zellennummer gebunden, sodass sich der Inhalt der Zeile nur ändert, wenn der erste Selektor umgeschaltet wird. Das Aktivierungsflag bezieht sich auf die ausgewählte Kombination aus Zellen- und Signalnummern.

Füllen Sie also alle notwendigen Zellen aus. Der Standardzustand der Zellen ist deaktiviert; es besteht keine Notwendigkeit, sie alle zu aktivieren. Bei Bedarf können die Zelleneinstellungen geändert werden. Die eingegebenen Werte werden dynamisch gespeichert.

Durch Drücken der Bildschirmtaste Der Zeitplan wird an das Alarmgerät übertragen und in die Konfigurationsdatei geschrieben. Es wird eine Meldung mit dem Ergebnis der Übertragung angezeigt. Der im Alarmgerät gespeicherte Zeitplan kann durch Drücken der Bildschirmtaste ausgelesen werden . Anschließend können Sie es im Programmfenster ansehen, bei Bedarf bearbeiten und wieder in das Alarmgerät laden. Drücken einer Bildschirmtaste löscht den Namen des Arzneimittels im entsprechenden Fenster und gibt die Möglichkeit, einen anderen zu schreiben.

Eine wichtige Funktion des Alarms besteht darin, dass er den aktuellen Timer stoppt, wenn er an USB angeschlossen ist. In dem Moment, in dem das Computerprogramm geschlossen wird, werden der Zeitplan und die aktuelle Uhrzeit automatisch im Alarm aufgezeichnet (Synchronisation). Daher sollten Sie nach dem Beenden des Programms so schnell wie möglich das USB-Kabel vom Alarmgerät trennen, um die Differenz zwischen der wahren und der „System“-Zeit zu minimieren.

Da jedoch selbst ein Unterschied von mehreren Minuten im vorliegenden Fall nicht kritisch ist, wurden keine Maßnahmen ergriffen, um dieses Merkmal zu beseitigen. Sollte das Alarmgerät nach Abschluss des USB_HID_Note-Programms versehentlich längere Zeit mit dem Computer verbunden bleiben, starten Sie einfach dieses Programm erneut und drücken Sie die Schaltfläche auf dem Bildschirm , dann weiter und genau da weiter oder schließen Sie einfach das Programm. Der korrekte Zeitpunkt des Alarms wird wiederhergestellt. Anschließend kann das USB-Kabel abgezogen werden.

Die Namen der Medikamente werden in der Programmkonfigurationsdatei gespeichert und auf dem Computerbildschirm angezeigt, wenn das Alarmgerät angeschlossen ist. Neben der Eingabe des Zeitplans in das Programm sollten Sie darauf achten, dass jede Zelle der Kassette mit einem Etikett mit der entsprechenden Beschriftung ausgestattet ist.

Das Programm USB_HID_Note ist in C++ in der Programmierumgebung Qt 5.3.2 geschrieben. Die Wahl dieser Umgebung beruht auf ihrem kostenlosen Charakter, ihrer plattformübergreifenden Funktionalität, ihren umfangreichen Funktionen und einzigartigen integrierten Tools zum Erstellen und Debuggen von Anwendungen jeder Ebene, kombiniert mit der Flexibilität von Schnittstellenlösungen. Der Anwendungsimplementierungstyp ist Qt Widget. Der Quelltext des Widgets ist die Datei widget.cpp. Das gesamte Projekt wird im Archiv USB_HID_Note_ pro.zip kompiliert, das dem Artikel beigefügt ist.

Eine Besonderheit des Programms ist der direkte Zugriff auf die Funktionen der SetupAPI- und HID-Bibliotheken. Daher muss der Computer, auf dem die Kompilierung stattfindet, über die Dateien setupapi.lib und hid.lib verfügen, die der Version seines Betriebssystems entsprechen. Diese Dateien sind normalerweise im WinDDK-Paket enthalten. Um zu vermeiden, dass das gesamte WinDDK-Paket vollständig installiert werden muss, wurden die Dateien verschiedener Versionen von WinDDK 7600. 16385.1 vom Autor in einem Ordner winddk_libs gesammelt, der auf dem FTP-Server der Redaktion verfügbar ist. Kompilierung und Debugging können unter Windows 7, Windows Server 2008 R2, Windows Vista SP1, Windows Server 2003 SP1, Windows XP SP3 oder höher durchgeführt werden. Die .pro-Datei muss explizit die vollständigen Pfade zu den Bibliotheken angeben, z. B. wie in der Tabelle. 3.

Tabelle 3

Medikationstimer USB

Die kompilierte ausführbare Datei des Programms sowie die Konfigurationsdateien (.cfg) und Stildateien (.qss) befinden sich im Ordner USB_HID_Note, der dem Artikel beigefügt ist. Dort befinden sich auch die notwendigen dynamischen Qt-Bibliotheken (.dll-Dateien). Wie Sie wissen, ist diese Anforderung für jede in Qt entwickelte Anwendung obligatorisch. Die Liste dieser Bibliotheken für den betrachteten Fall ist in der Tabelle aufgeführt. 4.

Tabelle 4

Medikationstimer USB

Alle Bibliotheken werden aus dem Ordner „..ToolsQtCreator“ kopiert, mit Ausnahme der letzten beiden, die aus „..5.3mingw482_32pluginsplatforms“ kopiert und im entsprechenden Unterordner des Arbeitsordners des Programms abgelegt werden. Sie können sie auch selbst von dem Computer, auf dem das Programm kompiliert wurde, in den Arbeits- oder Systemordner des Programms kopieren (Archivgröße - 126 MB, entpackt - 400 MB).

Der Programmalgorithmus basiert auf den in [7] angegebenen Standardlösungen. Merkmale der Implementierung sind vor allem mit der Verwendung unterschiedlicher Programmiersprachen verbunden (im Gegensatz zu den in der Quelle beschriebenen Delphi und C#). Um die Funktionen HID API und SetupAPI verwenden zu können, müssen Sie die Headerdateien hidsdi.h bzw. setupapi.h einschließen.

Der On-Screen-Button-Click-Handler ist die on_Connect Button_clicked()-Prozedur. Zunächst ermittelt die Treiberfunktion HidD_GetHidGuid die mit der HID verknüpfte GUID. Anschließend werden die SetupAPI-Funktionen aufgerufen, um den Schnittstellenenumerator zu erstellen und den HID-Namen des Geräts abzurufen. Dies ist ausführlich in [7] auf S. 333 beschrieben. XNUMX. Auf die Funktionen zur Ermittlung des Produktnamens bzw. der Seriennummer wurde im vorliegenden Fall bewusst verzichtet. Es wird nur das VID/PID-Paar überprüft. Dies geschieht, um die Möglichkeit einer kommerziellen Nutzung des Geräts auszuschließen. VID/PID-Werte werden durch die Dev_VID_PID-Konstante in der Datei global_vars.h angegeben.

Sobald das Gerät erkannt wird, wird die Steuerung wieder an den HID-Treiber übertragen. Die CreateFile-Funktion fordert ihr Handle an, HidD_GetPreparsedData gibt einen Zeiger auf einen Puffer zurück, der Informationen zu den Geräteparametern enthält, und HidP_GetCaps gibt eine Struktur mit den Werten dieser Parameter zurück.

Im Gegensatz zur häufig verwendeten Methode, bei der die Berichtsgröße direkt im Programm zugewiesen wird, wird ihr Wert hier durch das aus dem Deskriptor erhaltene Strukturelement Caps.FeatureReportByteLength bestimmt. Dadurch können Sie eine universellere Lösung erstellen, die keine Änderungen am Programm und keine Neukompilierung erfordert, wenn sich die Größe des Berichts im Gerätedeskriptor ändert.

Der eigentliche Informationsaustausch erfolgt über die Funktionen HidD_Get Feature (Lesen) und HidD_SetFeature (Schreiben), die in den entsprechenden Prozeduren data_read() und data_transfer() zyklisch entsprechend der Anzahl der Zellen aufgerufen werden. Wie bereits erwähnt, ist die Anzahl der vom Signalgerät empfangenen Array-Elemente um eins höher als die gesendeten, da der Computer zur Synchronisation immer die aktuelle Uhrzeit überträgt.

Eine ausführliche Erläuterung des Zwecks der wichtigsten Verfahren finden Sie im Programmtext. Der Zweck der verbleibenden Prozeduren ist entweder Standard oder intuitiv, zum Beispiel on_comboBox_ currentIndexChanged() – Handler für das ComboBox-Indexänderungsereignis. Die auskommentierten Zeilen von qDebug und die dazugehörigen Zeilen waren nur zum Debuggen des Programms gedacht. Wenn Sie im integrierten Qt-Debugger-Fenster debuggen und den Fortschritt des Informationsaustauschs anzeigen müssen, sollten alle diese Anweisungen unkommentiert sein.

Das Programm speichert die allgemeine Konfiguration in der Datei „settings.cfg“. Es hat ein normales Textformat und kann bei Bedarf manuell bearbeitet werden. Sein Abschnitt [Allgemein] enthält die Anzahl der Zellen NUM_BOX=8 und die Anzahl der Signale pro Zelle NUM_BOX_CALL=4, im Abschnitt [Ansicht] wird die Position des Programmfensters auf dem Bildschirm in ganzen Zahlen angegeben. Der Abschnitt [Namen] enthält die Namen der Medikamente nach Zelle, der Abschnitt [verwendet] – Zellaktivitätsflags, der Abschnitt [Zeiten] – Antwortzeitwerte im UNIX-Zeitstempelformat. Letztere haben vor allem informativen Charakter, da sich die Betriebswerte im Speicher des Detektor-Mikrocontrollers befinden. Beachten Sie beim manuellen Bearbeiten der Datei, dass die Namensparameter im C/C++/Java-Quellcodeformat vorliegen (z. B. u3256).

Und zum Schluss noch ein paar Empfehlungen für alle, die die Anzahl der vom Gerät gesendeten Signale selbstständig ändern möchten. Wenn die Anzahl der Zellen festgelegt ist, ist es relativ einfach, die Anzahl der Signale pro Zelle zu ändern. Im Mikrocontroller-Programm ist dazu zunächst die Änderung der Konstante NUM_CALLS erforderlich. Sein Wert sollte dem Produkt aus der Anzahl der Zellen und der maximalen Anzahl von Signalen pro Zelle entsprechen. Im im Artikel betrachteten Fall beträgt sie 8x4=32. Zweitens muss bei der Prozedur „switch... case...“ die Anzahl der case-Anweisungen in jeder Zeile gleich der Anzahl der Signale pro Zelle sein. In diesem Fall müssen die Argumente von Case-Anweisungen eine fortlaufende Folge von 0 bis NUM_CALLS-1 bilden. Der Hauptteil der Funktion und die Break-Anweisung bleiben unverändert. Anschließend muss das Programm gespeichert und neu kompiliert werden.

Es sind keine Anpassungen im Computerprogramm erforderlich. Es reicht aus, den Wert der Konstante NUM_BOX_CALL (die Anzahl der Signale pro Zelle) in der Datei „settings.cfg“ zu ändern. Es muss genau dem entsprechen, was im Mikrocontroller-Programm enthalten ist.

Programme für Mikrocontroller und Computer können von ftp://ftp.radio.ru/pub/2017/01/signal.zip heruntergeladen werden.

Literatur

  1. Drinevsky V., Sirotkina G. Musiksynthesizer der UMS-Serie. – Radio, 1998, Nr. 10, S. 85.
  2. Universeller serieller Bus. HID-Informationen. - URL: usb.org/developers/hidpage/.
  3. VUSB. - URL: obdev.at/products/vusb/index.html.
  4. Treiberarchivvusb-20100715. - URL: obdev.at/downloads/vusb/vusb-20100715.tar.gz.
  5. Compiler WinAVR-20100110. - URL: sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-201 0 0110-install.exe/download.
  6. USB für AVR. Teil 2. HID-Klasse auf V-USB. - URL: we.easyelectronics.ru/electro-and-pc/usb-dlyaavr-chast-2-hid-class-na-v-usb.html.
  7. Agurov P. USB-Programmierpraxis. - St. Petersburg: „BHV-Petersburg“, 2006.

Autor: D. Pankratiev

Siehe andere Artikel Abschnitt Medizin.

Lesen und Schreiben nützlich Kommentare zu diesem Artikel.

<< Zurück

Neueste Nachrichten aus Wissenschaft und Technik, neue Elektronik:

Eine neue Möglichkeit, optische Signale zu steuern und zu manipulieren 05.05.2024

Die moderne Welt der Wissenschaft und Technik entwickelt sich rasant und jeden Tag tauchen neue Methoden und Technologien auf, die uns in verschiedenen Bereichen neue Perspektiven eröffnen. Eine dieser Innovationen ist die Entwicklung einer neuen Methode zur Steuerung optischer Signale durch deutsche Wissenschaftler, die zu erheblichen Fortschritten auf dem Gebiet der Photonik führen könnte. Neuere Forschungen haben es deutschen Wissenschaftlern ermöglicht, eine abstimmbare Wellenplatte in einem Wellenleiter aus Quarzglas zu schaffen. Dieses auf der Verwendung einer Flüssigkristallschicht basierende Verfahren ermöglicht es, die Polarisation des durch einen Wellenleiter fließenden Lichts effektiv zu ändern. Dieser technologische Durchbruch eröffnet neue Perspektiven für die Entwicklung kompakter und effizienter photonischer Geräte, die große Datenmengen verarbeiten können. Die durch die neue Methode bereitgestellte elektrooptische Steuerung der Polarisation könnte die Grundlage für eine neue Klasse integrierter photonischer Geräte bilden. Dies eröffnet große Chancen für ... >>

Primium Seneca-Tastatur 05.05.2024

Tastaturen sind ein fester Bestandteil unserer täglichen Arbeit am Computer. Eines der Hauptprobleme für Nutzer ist jedoch der Lärm, insbesondere bei Premium-Modellen. Doch mit der neuen Seneca-Tastatur von Norbauer & Co könnte sich das ändern. Seneca ist nicht nur eine Tastatur, es ist das Ergebnis von fünf Jahren Entwicklungsarbeit, um das perfekte Gerät zu schaffen. Jeder Aspekt dieser Tastatur, von den akustischen Eigenschaften bis hin zu den mechanischen Eigenschaften, wurde sorgfältig durchdacht und ausbalanciert. Eines der Hauptmerkmale von Seneca sind seine leisen Stabilisatoren, die das bei vielen Tastaturen auftretende Geräuschproblem lösen. Darüber hinaus unterstützt die Tastatur verschiedene Tastenbreiten, sodass sie für jeden Benutzer bequem ist. Obwohl Seneca noch nicht käuflich zu erwerben ist, ist die Veröffentlichung für Spätsommer geplant. Seneca von Norbauer & Co setzt neue Maßstäbe im Tastaturdesign. Ihr ... >>

Das höchste astronomische Observatorium der Welt wurde eröffnet 04.05.2024

Die Erforschung des Weltraums und seiner Geheimnisse ist eine Aufgabe, die die Aufmerksamkeit von Astronomen aus aller Welt auf sich zieht. In der frischen Luft der hohen Berge, fernab der Lichtverschmutzung der Städte, enthüllen die Sterne und Planeten ihre Geheimnisse mit größerer Klarheit. Mit der Eröffnung des höchsten astronomischen Observatoriums der Welt – dem Atacama-Observatorium der Universität Tokio – wird eine neue Seite in der Geschichte der Astronomie aufgeschlagen. Das Atacama-Observatorium auf einer Höhe von 5640 Metern über dem Meeresspiegel eröffnet Astronomen neue Möglichkeiten bei der Erforschung des Weltraums. Dieser Standort ist zum höchstgelegenen Standort für ein bodengestütztes Teleskop geworden und bietet Forschern ein einzigartiges Werkzeug zur Untersuchung von Infrarotwellen im Universum. Obwohl der Standort in großer Höhe für einen klareren Himmel und weniger Störungen durch die Atmosphäre sorgt, stellt der Bau eines Observatoriums auf einem hohen Berg enorme Schwierigkeiten und Herausforderungen dar. Doch trotz der Schwierigkeiten eröffnet das neue Observatorium den Astronomen vielfältige Forschungsperspektiven. ... >>

Zufällige Neuigkeiten aus dem Archiv

Antioxidans reduziert das Risiko eines wiederkehrenden Herzinfarkts und Schlaganfalls 12.09.2018

Wissenschaftler der University of Oregon haben eine neue Methode entwickelt, um das Risiko eines sekundären Herzinfarkts oder Schlaganfalls zu verringern.

Herzinfarkte bei Mäusen führten dazu, dass Entzündungszellen und Blutplättchen leicht an der Innenauskleidung von Arterien im ganzen Körper anhafteten – und besonders dort, wo Plaque vorhanden war. In der Folge bildeten sich Blutgerinnsel, die zu einem erneuten Herzinfarkt oder Schlaganfall führten.

Es stellt sich heraus, dass die Behandlung von Mäusen mit einem Herzinfarkt oder Schlaganfall mit dem starken Antioxidans Apocynin die Plaquebildung halbiert und die Entzündung im Körper auf ein Niveau reduziert, das dem ersten Angriff vorausgeht.

Die Forscher entdeckten klebrige Zellen und Blutplättchen mit einer einzigartigen Form der Ultraschallbildgebung, die sie entwickelt hatten, um Moleküle im Inneren von Blutgefäßen zu untersuchen.

Weitere interessante Neuigkeiten:

▪ Websites lernen, wie sich Besucher fühlen

▪ Die Schallstromlokalisierung erzeugt das perfekte Signal

▪ Emissionsfreies Flugzeug

▪ Das Ende der PANASONIC-Videorecorder

▪ Ins Krankenhaus - keine Krawatte

News-Feed von Wissenschaft und Technologie, neue Elektronik

 

Interessante Materialien der Freien Technischen Bibliothek:

▪ Abschnitt der Website Schutz elektrischer Geräte. Artikelauswahl

▪ Artikel Mann von außen. Populärer Ausdruck

▪ Artikel Wer hat den Ball erfunden? Ausführliche Antwort

▪ Artikel Zusammenklappbare Werkbank. Heimwerkstatt

▪ Trockenöl-Artikel über harzige Trockenmittel (Resinate). Einfache Rezepte und Tipps

▪ Artikel Netzteil mit Mikrocontroller-Steuerung, 0-25 Volt. Enzyklopädie der Funkelektronik und Elektrotechnik

Hinterlasse deinen Kommentar zu diesem Artikel:

Name:


E-Mail optional):


Kommentar:





Alle Sprachen dieser Seite

Startseite | Bibliothek | Artikel | Sitemap | Site-Überprüfungen

www.diagramm.com.ua

www.diagramm.com.ua
2000-2024