MIKRORECHENTECHNIK II

Ähnliche Dokumente
Serielle Schnittstellen

Serielle Kommunikation - Kodierung

Serielle Schnittstelle

Die serielle Schnittstelle in der MSR - Technik

1. Allgemein Technische Daten... 2

6. Peripheriegeräte und Schnittstellen

NC-Datenübertragung PC <=> Maschinensteuerung

Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt:

Technical Note 0306 ewon

' ' ' ' ' Ausnahmen an den Multimetern VC 820 und 840 ' ' Ver (c) Bernd Kunze '

5. Digitale Schnittstellen und Vernetzung im Überblick

Die RS Schnittstelle

Inhalt. I 2 C-433 MHz Funksender Beschreibung der Kommandos Version 1.2

Elexis - ABX Micros Connector

Handbuch Interface RS232 <> RS485

CPK-Terminal Bedienungsanleitung

Firmware-Update von ARGUS -Testern

Ampelsteuerung Merkblatt 2 Wie wird der Arduino programmiert?

Bedienungsanleitung. RCM232 remote control multiplexer. Version 1.0: Uwe Hunstock Kastanienallee Berlin Tel. 030.

Spezifikation RTR09 USB-Transceiver Easywave

Automatische Ballerkennung

Einführung in Automation Studio

Unified-E Modbus Adapter

1.1 Features der Software Folgende Änderungen bzw. Neuerungen sind gegenüber der alten KPS-Lite 2009 Software enthalten:

Elexis - ABX Micros Connector

Dokumentation IBIS Master Version 1.5.6

Beschreibung RS232-Protokoll für POWER-TRAP Fotovoltaik-Wechselrichter (ab Protokollversion ENS1 = 5 und ENS2 = 6)

16. Meßdatenerfassung im Labor. Tabelle Computer-Schnittstellen in der Meßdatenerfassung

Serielles LCD-Display PL0045

Serielle Kommunikation - Kodierung

Steuermodul Gleisabschnitte

SB 500 Softwarekonfiguration und Einstellung der Jumper

INTERPRETER Interface. DATAWIN OMR Serie 10 Serie 50 Serie 300. Programmbeschreibung. Edition _01

MODBUS RTU Übertragungsprotokoll für Digitale Elektronische Vorschaltgeräte mit RS-485 Schnittstelle

A n l e i t u n g. Beamer- Treiber- Download (FBI EB/ 19 )

web: CAD/CAM-Systeme Entwicklung Beratung Vertrieb Kundenbetreuung Service für Werkzeugmaschinen

für ProLab 3000 Installationsanweisung MultiLab pilot 1 / 5

DST EINFÜHRUNG IN MRT (V2)

140 ESI Kommunikationsmodul

Bedienungsanleitung FMI-250 Zusatz. ATP Messtechnik GmbH

Labor Computertechnik (LCT) Laborbericht zu Versuch: 1 Logikanalysatortechnik und RS232

EA USB PROGRAMMERBOARD FÜR EA edip240-7

Qelectronics GmbH Am Sandberg 7a Dresden

Bedienungsanleitung DME-Tester V1.0

Betriebsanleitung CNC-Retrofit für W21 64-Bit PCNC

UART-Kommunikation mit dem Atmel AVR

Hilfsblatt für C++ Prüfungen im 5. Semester

EX x RS-232 zu Ethernet / IP. Bedienungsanleitung. 7. Anschlüsse. 8. Technische Daten. Seriell 9 Pin D-SUB Stecker

Bedienungsanleitung PC-SOFT. Datenerfassungs- und Protokoll-Software für HT Eurotest 701 / 702 S

RF-ID Handheld. Einsatz. Bedienung. A&S GmbH Automatisierungs- und Systemtechnik

Trainingsmanagement Gutschein Management. Beschreibung

Bedienungsanleitung CSM 2 A

Handbuch Digi-Prog. Revision 1.0. Copyright c Welzel GbR Steinstrasse Giessen

Kennlinienschreiber. Inbetriebnahme und Abgleich

8 Kommunikation. Mehr Informationen zum Titel! 8.1 Serielle Schnittstelle

Bedienungsanleitung M-Box / L-Box / C-Box

Serielle Meßgeräteschnittstelle I. Bayern/Hessen Protokoll. Spezifikation

Fernbedienung SIPROTEC 4 über LOGES 64k/M und LGH 64k

USB Datenerfassungs- und Steuerungsmodul HB628

LCD board EB

V.24-Schnittstelle Betrieb an der varix 14/200

Bedienungsanleitung PC-Software für CTS-7 C (V )

1. Kontinuierliche Datenerfassung Aufgabenstellung Voraussetzungen. Datei: AN046.DOC (5 Seiten)

11. Die PC-Schnittstelle

Berührungslose Datenerfassung. easyident Multireader. Art. Nr. FS Technische Daten. Stromversorgung: + 5V DC +/-5% Hardware Revision 1.

ANT-5 Software Upgrade - Installationshinweise

Kap 9. Bitoperationen und -strukturen

zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt

PROFINET-Adapter 99spne.. - Seite 1 -

Ausarbeitung eines Praktikumsversuches zum Design eines 1-Wire-Master-Controllers Falk Niederlein

UEM 300 Analoges Wählmodem

FAQ Kommunikation über IE

Bedienungsanleitung PC-Software für CTS-32 C

2017/01/23 15:50 1/5 Bedienung

Anleitung DGTV Fernbedienung

Mikrocomputertechnik

Technische Information

Data Monitor Anzeige der zuletzt gesendeten bzw. empfangenen Daten

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1

Handbuch SelectLine EDI-Modul

NOISY Datenimport vom LD 831

Fingerpulsoximeter. 1. Wie führe ich eine Echtzeitübertragung vom PULOX PO-300 zum PC durch und speichere meine Messdaten auf dem PC?

Schnittstellen. 1 Allgemein. 2 Parallele Schnittstelle. Abb. 1 Datenübertragungsarten

RGB-Sequenzer RS232 RS485 MDX512 AD / IO Platine

DS Teach-Programm Bedienungsanleitung. DST Version 2000/06 DS Keyboard Technic GmbH

Kurzanleitung für ANALYST 3Q und WinA3Q Inhalt:

HV-/Kombi-Tester F1-1x und F7-1x LGA. ELABO Service-Leistungen: Kalibrierung im Hause ELABO Kalibrierung vor Ort beim Kunden Leihgerätebeistellung

Betriebsanleitung Sartorius

Handbuch. TeKoWin plus. Version 1.11

Handbuch. 03/2016 BV_update_tutorial_de. BreakerVisu-Update. Handbuch. Update eines Programms im BreakerVisu Panel

Camat. Transfer-Modul

SIMATIC S5 SIEMENS. MODBUS-Protokoll RTU-FORMAT SIMATIC S5 ist Master. Kurzinformation. Sondertreiber für CP 524 / CP (S5-DOS) S5R004

Dateiübertragung mit ProComm Plus (Posten 6)

USB-BAT Bedien-Anzeige-Terminal

Manual TRUL 2.0 (Transpondertester UL)

Erster Einstieg in Ethernet TCP/IP Anbindung eines Ethernet-Gateways an einen PC oder an ein Ethernet-Netzwerk

COMM-TEC EIB-Gateway

INSTITUT FÜR FESTKÖRPERELEKTRONIK

Servo-Modul Version

BASIC-Tiger Starter Kit. Tel: +49 (241) Fax: +49 (241)

Transkript:

Institut für Biomedizinische Technik Fakultät Elektrotechnik und Informationstechnik Technische Universität Dresden Praktikum Versuch FMT1 MIKRORECHENTECHNIK II Computergestützte Messwerterfassung und -auswertung am Beispiel des EKG-Signals Inhalt Seite 1 Versuchsinhalt... 1 2 Grundlagen... 2 2.1 RS232-Schnittstelle... 2 2.2 USB-Schnittstelle... 4 2.3 Programmiersprache MICROSOFT VISUAL C++... 5 2.4 Elektrokardiogramm (EKG)... 10 3 Versuchsaufbau... 12 3.1 Gerätetechnik zur EKG-Erfassung... 12 3.2 Datenübertragung zwischen PC und Elektrokardiograph... 13 4 Vorbereitungsaufgaben... 16 5 Versuchsaufgaben... 18 6 Kolloquiumsschwerpunkte... 20 7 Literatur... 20 Anlagen: Anlage 1: Einstiegshilfe in das Programmsystem MICROSOFT VISUAL STUDIO 2008 Anlage 2: Quelltextbeispiel zu den Versuchsaufgaben 4 und 5 Anlage 3: Quelltextbeispiel zur Versuchsaufgabe 6 Anlage 4: Hinweise zum Arbeits- und Brandschutz (Liegen am Versuchsplatz aus) 1 Versuchsinhalt Die Studenten realisieren im Versuch den Computereinsatz in der Messwerterfassung am Beispiel der Aufnahme des Elektrokardiogramms (EKG). Schwerpunkte sind der Datenaustausch zwischen dem EKG-Messgerät mit einer RS232-Datenschnittstelle und dem PC mit USB-Anschluss und USB-2COM-Adapter sowie die Messwertbearbeitung im PC. Im Versuch erarbeiten sie sich praktische Fähigkeiten in: der PC-Bedienung, der Messwerterfassung und der Arbeitsweise serieller Datenübertragung, der Konfiguration der Hardware zur Datenübertragung zwischen PC und Messgerät, der Realisierung von Software zur Datenübertragung zwischen PC und Messgerät über die RS232-Datenschnittstelle mit Hilfe MICROSOFT VISUAL STUDIO 2008 / C++ und dem Export von Messwerten zum Softwaresystem EXCEL von MICROSOFT. Hinweis: Das EKG wird im Versuch nicht weiter behandelt. In der Versuchsdurchführung dient es als typisches Beispiel für ein elektrisches Biosignal in der Biomedizinischen Technik (siehe Lehrveranstaltung der Studienrichtung Fein- und Mikrotechnik, 5. Semester). 1

2 Grundlagen 2.1 RS232-Schnittstelle Die RS232-Schnittstelle ist eine serielle Datenschnittstelle [1] bis [3]. Ein zu übertragendes Datenbyte wird durch die serielle Schnittstelle in einen seriellen Bit-Strom umgewandelt und über eine Leitung als diskreter Spannungspegel mit in der Regel zwei Zuständen gesendet (Abb. 2.1). Der Empfänger muss den Spannungspegel über der Zeit als ankommenden Bit-Strom erkennen und diesen in ein Datenbyte zurück verwandeln. Damit die Daten fehlerfrei übertragen werden können, sind zwischen Sender und Empfänger einheitliche Festlegungen bezüglich der logischen Pegelzuordnung und der zeitlichen Dauer eines Bits unbedingt notwendig. Abb. 2.1: Erzeugung und Trennung des seriellen Bit-Stroms Die Signale der RS232-Schnittstelle zeigt Tabelle 2.1. Für eine serielle Übertragung sind nicht alle Signalleitungen der RS232- Schnittstelle notwendig. Sie sind von der Art der Übertragung und dem verwendeten Handshake-Verfahren abhängig. Abb. 2.2: 9-polige Buchse Tabelle 2.1: RS232 - Signalbezeichnung und Belegung der 9- (Abb. 2.2) und 25-poligen Steckverbinder DEE Abkürzung Buchse Buchse z.b. Maus 25-polige 9-polige DÜE RS232-Signalbezeichnung z.b. PC º Sendedaten, Transmit Data TxD 2 3 º» Empfangsdaten, Receive Data RxD 3 2» º DEE betriebsbereit, Data Terminal Ready DTR 20 4 º º Sendeteil einschalten, Request to Send RTS 4 7 º» DÜE betriebsbereit, Data Set Ready DSR 6 6»» Sendebereitschaft, Clear to Send CTS 5 8»» Empfangssignalpegel, Data Carrier Detect DCD 8 1» Betriebserde, Signal Ground SG 7 5 Spannungspegel und Logik der RS232-Schnittstelle sind einheitlich definiert (Abb. 2.3). Alle Signale sind bipolare Spannungen im Bereich von -15 Volt bis +15 Volt. Im Übergangsbereich von -3 Volt bis +3 Volt ist der Signalzustand nicht definiert. Die Zuordnung der Signalpegel zur Signalbedeutung sind bei Datenleitungen und Steuer- bzw. Meldeleitungen unterschiedlich: 2

S S bei Datenleitungen (RxD, TxD) gilt º Spannung gegenüber der Signalerde (SG) < - 3 V als Signalzustand logisch 1 (MARK - marking condition oder RUHEZUSTAND), > + 3 V als Signalzustand logisch 0 (Space - spacing condition); bei Steuer- bzw. Meldeleitungen gilt º Spannung gegenüber der Signalerde (SG) < - 3 V als AUS-Zustand, > + 3 V als EIN-Zustand. Abb. 2.3: RS232-Pegel für Datenleitungen Es werden zwei serielle Datenübertragungsarten unterschieden - die synchrone und die asynchrone Übertragung. Bei synchronen Verfahren wird zusätzlich ein Taktsignal parallel zum Datensignal übertragen. Bei asynchroner Übertragung wird jedem Datenbyte eine Synchroninformation hinzugefügt, um das Taktsignal beim Empfänger zu synchronisieren. Da es keine gemeinsame Taktquelle für Sender und Empfänger gibt, müssen bei der asynchronen Übertragung zwei getrennte Taktgeneratoren die gleiche Frequenz erzeugen und zeitlich synchronisiert werden. Dies geschieht bei der Übertragung eines Bytes immer wieder neu. Dazu muss zwischen Sender und Empfänger bezogen auf ein Datenbyte vereinbart sein: S der Beginn der Datenübertragung, S die Zeitdauer eines Bits (bzw. die Geschwindigkeit oder Schritte je Sekunde) S die Anzahl der übertragenen Daten-Bits, S die Anzahl zusätzlich zu den Daten-Bits übertragener Bits. Die Übertragung eines Datenbytes besteht aus vier Elementen (Abb. 2.4): 1. am Beginn ein Start-Bit zur Synchronisation des Empfängertaktgebers, 2. die (6, 7 oder 8) Daten-Bits beginnend mit dem niederwertigsten Bit (LSB), 3. optional ein Paritäts-Bit, 4. am Ende der Übertragung ein oder zwei Stopp-Bit zur Kontrolle des Zeichenrahmens auf Synchronisation. Abb. 2.4: Asynchroner serieller Bit-Strom für ein Zeichen Zur Fehlererkennung kann die Übertragung eines Paritäts-Bits vereinbart werden. Dazu wird die zwischen Start- und Stopp-Bit einschließlich Paritäts-Bit befindliche Anzahl logischer 1 auf eine gerade (even parity) bzw. eine ungerade Anzahl (odd parity) durch das Paritäts-Bit aufgefüllt. Nach dem Stopp-Bit kann eine Pause eintreten oder das nächste Datenbyte übertragen werden. Die Geschwindigkeit der Datenübertragung, auch als Baudrate bezeichnet, wird durch die Zeitdauer eines Bits bestimmt. Sie wird in Bit pro Sekunde (Baud) angegeben. Die Steuerung der Datenübertragung zwischen Sender und Empfänger kann durch verschiedene Quittierungsverfahren, auch als Handshake bezeichnet, erfolgen. Um die Empfangsbereitschaft zu signalisieren, werden sowohl Software- als auch Hardware-Handshake-Verfahren verwendet. 3

2.2 USB-Schnittstelle (USB - Universal Serial Bus) Der USB [4] ist eine serielle Schnittstelle zur Verbindung von Computer und externen Geräten. Trotz seiner Bezeichnung ist der USB kein klassisches Bussystem, wo mehrere Teilnehmer miteinander gemeinsame Busleitungen nutzen. Er realisiert immer nur eine serielle Punkt zu Punkt Verbindung in einer Baumstruktur. Die USB-Schnittstelle kann Geräte im laufenden Betrieb verbinden (Hot-Plugging). Dabei werden die Eigenschaften der angeschlossenen Geräte automatisch von der Schnittstellensteuerung (Host-Controller) abgefragt. Die Daten werden beim USB symmetrisch über zwei verdrillte Leitungen (Data+: direktes Signal; Data-: invertiertes Signal, Abb. 2.5) bitserielle übertragen. So verdoppelt sich der Spannungshub beim 0- und 1-Signalübergang. Zwei weitere Leitungen (V cc und GND) ermöglicht die Stromversorgung eines angeschlossenen Gerätes (5 V mit 100 ma [max. 500 ma]). Abb. 2.5: USB-Schnittstelle mit Signalbelegung und Steckertypen Die USB-Schnittstelle wird durch einen Host-Controller (Master) gesteuert, er organisiert die Kommunikation zu den Geräten (Slave-Clients). Es sind bis zu 127 Geräte an einen Controller anschließbar. Ein USB-Port kann immer nur ein Gerät belegen. Sollen an einem Host-Controller mehrere Geräte angeschlossen werden, muss ein Verteiler (Hub) zwischengeschaltet werden. So entsteht die charakteristische USB-Baumstruktur, die auch das USB-Symbol zeigt (Abb. 2.6). Zum Host-Controller werden flache Stecker (Typ A) verwendet. Zum peripheren Gerät werden die Kabel fest montiert oder über quadratische Steckverbinder (Typ B) angeschlossen. Entsprechend der USB-Standards besitzen USB Typ A- und Typ B-Verbinder vier Leitungen plus Schirm (Abb. 2.5). Abb. 2.6: Baumstruktur der USB-Schnittstelle Der Host-Controller vergibt den angeschlossenen Geräten je eine 7-Bit-Geräteadresse. Die 4

Adresse 0 wird automatisch von Geräten belegt, die neu angeschlossen werden. Der Host- Controller beginnt die Gerätekommunikation und ordnet dem Gerät eine neue Geräteadresse zwischen 1 und 127 zu. So kann keine Adresskollision entstehen. Der Host-Controller fragt zuerst nach einem Device-Deskriptor, der die Hersteller- und Produkt-ID sowie andere Informationen enthält. Damit nicht für jedes Gerät ein eigener Treiber nötig ist, definiert der USB-Standard verschiedene Geräteklassen, die sich durch einheitliche Treiber steuern lassen. Die Information zur Geräteklasse ist im Device-Deskriptor oder im Interface-Deskriptor untergebracht. Die USB-Geräte enthalten über Unteradressen mehrere sog. Endpunkte. Die Endpunkte werden von der Serial Interface Engine bedient. Über diese Endpunkte können verschiedene Datenströme laufen. Die Übertragungen von und zu den Endpunkten erfolgen unidirektional. Für die bidirektionale Übertragungen existieren je ein In- und ein Out-Endpunkt (vom Host-Controller aus betrachtet). Ein USB-Gerät hat max. 31 Endpunkte: je 15 In- und 15 Out-Endpunkte sowie den Control-Endpunkt. Über ihn (Adresse 0) läuft die Erkennung und Konfiguration des USB-Gerätes im sog. Control Transfer Mode. Die USB-Schnittstelle ermöglicht verschiedene Übertragungsmodi: Der isochrone Transfer ist für Daten geeignet, die eine garantierte Datenrate (z.b. Video, Audio) benötigen. Er wird von schnellen Geräten genutzt. Der Interrupt-Transfer dient der Übertragung von kleinen Datenmengen, die zu nicht genau bestimmbaren Zeitpunkten verfügbar sind. Geräte der sog. Human Interface Device Klasse (Tastatur, Maus und Joystick) nutzen den Interrupt-Transfer. Der Bulk-Transfer ist für große Datenmengen gedacht, die jedoch nicht zeitkritisch sind (z.b. Scanner, Drucker). Er ist niedrig priorisiert und wird erst gestartet, wenn alle isochronen und Interrupt-Transfers abgeschlossen sind. Der Control-Transfer ist ein Spezialdatentransfer, der nur mit Endpunkten möglich ist, die Inund Out-Operationen durchführen können. Control-Transfers werden generell in beide Richtungen ausgeführt, so dass es zur Rückmeldung kommt. Der Control-Transfer mit dem Endpunkt 0 dient dem Detektieren des USB-Geräts und zum Austausch der ersten Kommunikation (Initialisierung, Busmanagement). 2.3 Programmiersprache MICROSOFT VISUAL C++ Zur Programmierung der RS232-Schnittstelle werden folgende Grundelemente genutzt: S Datentyp Handle - Datentyp zur Handhabung der seriellen Schnittstelle als File S Befehl CreateFile - Befehl zum Öffnen der seriellen Schnittstelle S Statusbefehle SetCommConfig, GetCommConfig, SetCommTimeouts, GetCommTimeouts und CommConfigDialog - Befehle zum Initialisieren der seriellen Schnittstelle sowie zum Auslesen und Setzen der eingestellten Parameter S Befehl WriteFile - Befehl zum Schreiben auf der seriellen Schnittstelle S Befehl ReadFile - Befehl zum Lesen von der seriellen Schnittstelle S Befehl CloseHandle - Befehl zum Schließen der seriellen Schnittstelle Anweisungen für die formatierte Bildschirm- und Dateiausgabe sind: S Datentyp CString - Datentyp zur Handhabung der Zeichenketten S Befehl Format - Befehl zur Zeichenketten-Formatierung und Einfügen von Zahlen S Befehl AfxMessageBox - Befehl zur Bildschirmausgabe S Befehl CFileDialog - Erlaubt die Auswahl eines Dateinamens zum Öffnen/Speichern Eine Darstellung aller Befehlen ist in der Online-Hilfe von MICROSOFT VISUAL C++ enthalten. Zum Aufruf wird der Cursor auf das Schlüsselwort gesetzt und die Funktionstaste F1 betätigt. 5

Datentyp Handle Ein Handle ist ein Datenobjekt (Variable vom Typ unsigned int [positive ganze Zahl]), das die Verbindung zwischen einem Client (Auftraggeber) und einem Server (Dienstanbieter) darstellt. Er spezifiziert einen bestimmten Client, auf welchen die Funktionen des Servers angewendet werden sollen. Im vorliegenden Fall dient der Handle zur Festlegung der Schnittstelle und einer Datei, auf die sich alle weiteren Befehle beziehen sollen. Syntax: HANDLE Name; Name: Name des Handles Beispiel: HANDLE hcom; // Generiert einen Handle mit Namen hcom HANDLE hfile; // Generiert einen Handle mit Namen hfile Befehl CreateFile Der Befehl CreateFile erzeugt oder öffnet ein Objekt und gibt einen Handle zurück, welcher als Zugriff auf das Objekt verwendet werden kann. Im Versuch wird das serielle Schnittstellenobjekt geöffnet. Syntax: HANDLE CreateFile ( lpfilename, dwdesiredaccess, dwsharemode, lpsecurityattributes, dwcreationdisposition, dwflagsandattributes, htemplatefile); lpfilename: Name des Objektes, hier com1 bis com4 bzw. lpt1 bis lpt3 dwdesiredaccsess: Zugriffsart auf das Objekt, Lese- und/oder Schreibzugriff dwsharemode: legt fest, ob der Zugriff auf das Objekt geteilt werden kann lpsecurityattributes: enthält die Struktur mit den Sicherheitsinformationen dwcreationdisposition: legt fest, wie das File erzeugt werden soll, zum Beispiel kann ein vorhandenes File überschrieben werden dwflagsandattributes: setzt die Fileattribute, zum Beispiel versteckt oder sichtbar htemplatefile: muss bei Windows 95 null gesetzt werden Beispiel: CString m_strcom = "COM4"; hcom = CreateFile ( m_strcom, GENERIC_READ GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0 ); // Wenn vorhanden, wird die serielle Schnittstelle Com4 mit Lese- u. Schreibzugriff geöffnet. hfile = CreateFile ( dlg.getpathname(), GENERIC_READ GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, 0 ); // Es wird das angegebenen File dlg.getpathname() mit Lese- u. Schreibzugriff geöffnet. Statusbefehle - Übertragungsparameter Für die Festlegung der Übertragungsparameter wird der vorgegebene Datentyp DCB verwendet. Er beinhaltet eine umfangreiche Struktur zur Steuerung serieller Schnittstellen. Im Versuch werden nicht alle Parameter des Datentyps DCB benutzt. Für den Elektrokardiograph sind folgende Parameter einzustellen: DCB dcb; dcb.baudrate = 115200; // Baudrate dcb.bytesize = 8; // Bit-Anzahl je Zeichen dcb.parity = 0; // Parität einstellen: 0 keine,1 ungerade, 2 gerade dcb.stopbits = 0; // Anzahl: 0 1 Stopp-Bit, 1 1,5 Stopp-Bit, 2 2 Stopp-Bit Der Status kann nun mit dem Befehl GetCommState gelesen werden. Die Parameter sind hcom (Handle der Schnittstelle) und dcb (Struktur für die Einstellungen). GetCommState ( hcom, &dcb ); 6

Mit dem Befehl SetCommState kann nun eine neue Einstellung gesetzt werden. Auch hier sind die Parameter hcom (Handle der Schnittstelle) und dcb (Struktur für die Einstellungen). SetCommState ( hcom, &dcb ); Der Aufruf des Systemeinstellungsdialogs für Windows erfordert die Anweisung: CommConfigDialog ( com2, AfxGetMainWnd ( ) ->m_hwnd, &cc ); Statusbefehle - Timeoutmanagement Für die Festlegung der Timeoutparameter wird der vorgegebene Datentyp COMMTIMEOUTS verwendet. Eine mögliche Einstellung für den Elektrokardiograph lautet: COMMTIMEOUTS commtimeouts; commtimeouts.readintervaltimeout = -1; // Lese-Timeouts commtimeouts.readtotaltimeoutmultiplier = 0; // sichere Programmierung: commtimeouts.readtotaltimeoutconstant = 0; // fehlen Daten, kein Programm-Stopp commtimeouts.writetotaltimeoutmultiplier = 0; // Schreib-Timeouts commtimeouts.writetotaltimeoutconstant = 0; Der Status kann nun mit dem Befehl GetCommTimeouts gelesen werden. Die Parameter sind hcom (Handle der Schnittstelle) und commtimeouts (Struktur für die Einstellungen): GetCommTimeouts ( hcom, &commtimeouts ); Mit dem Befehl SetCommTimeouts kann eine neue Einstellung gesetzt werden. Auch hier sind die Parameter hcom (Handle der Schnittstelle) und commtimeouts (Struktur für die Einstellungen). SetComTimeouts ( hcom, &commtimeouts ); Befehl WriteFile Der Befehl WriteFile schreibt Daten in ein File. Syntax: BOOL WriteFile ( hfile, lpbuffer, nnumberofbytestowrite, lpnumberofbyteswritten, lpoverlapped ); hfile: lpbuffer: nnumberofbytestowrite: lpnumberofbyteswritten: lpoverlapped: Handle des Files, wird von CreateFile geliefert Name des Puffers, welcher geschrieben werden soll Größe des Puffers, der geschrieben werden soll Zahl der geschriebenen Bytes (Rückgabewert) Zeiger auf Overlapped-Struktur Beispiel: WriteFile ( hcom, &Buffer, sizeof ( Buffer ), &dwbyteswrote, NULL ); // Schreibt den Inhalt vom Puffer in ein File und gibt in // dwbyteswrote die Zahl der geschriebenen Bytes zurück. Befehl ReadFile Der Befehl ReadFile liest Daten aus einem File. Syntax: BOOL ReadFile ( hfile, lpbuffer, nnumberofbytestoread, lpnumberofbytesread, lpoverlapped ); hfile: Handle des Files, wird von CreateFile geliefert lpbuffer: Name des Puffers, welcher gelesen werden soll nnumberofbytestoread: Größe des Puffers, der gelesen werden soll 7

lpnumberofbytesread: lpoverlapped: Zahl der Bytes, die gelesen wurden (Rückgabewert) Zeiger auf Overlapped-Struktur Beispiel: ReadFile ( hcom, &rbuffer, sizeof ( rbuffer ), &dwbytesread, NULL ); // Liest den Puffer aus einem File und gibt in dwbytesread // die Zahl der gelesenen Bytes zurück. Befehl CloseHandle Der Befehl CloseHandle schließt einen offenen Objekthandle. Syntax: CloseHandle ( handle ); Beispiel: CloseHandle ( hcom ); // Schließt den Handle hcom. Formatierte Ausgabe auf den Bildschirm Ein kleines Beispiel soll die formatierte Bildschirmausgabe darstellen. Grundlage ist der Datentyp CString, die Befehle Format und AfxMessageBox. Der Inhalt der Variablen x und y soll in einen kleinen Text eingebunden und ausgegeben werden. int x = 5; // Wert von x auf 5 gesetzt int y = 10; // Wert vom y auf 10 gesetzt CString cs; // CString Objekt cs.format ( "Der Wert von x beträgt: %d und der Wert von y beträgt: %d., x, y ); AfxMessageBox ( cs, MB_OK, NULL ); Bei der Formatierung muss anstelle der Variablen ein %d für eine Zahl in den Text eingefügt werden. Danach werden die Variablen aufgelistet. Die Messagebox besitzt durch MB_OK einen OK-Button zur Bestätigung. Der Parameter NULL bestimmt ein Ausrufezeichen als Icon. Auf dem Bildschirm erscheint: º Der Wert von x beträgt: 5 und der Wert von y beträgt: 10. Auswahl eines Dateinamens zum Öffnen bzw. Speichern Es gibt eine Reihe von grundlegenden Dialogen, die von Windows selbst bereitgestellt werden. Der Befehl CFileDialog zur Auswahl eines Dateinamens gehört dazu. Syntax: BOOL CFileDialog ( BOOL bopenfiledialog, LPCTSTR lpdzdefext = NULL, LPCTSTR lpdzfilename = NULL, DWORD dwflags = OFN_HIDEREADONLY OFN_OVERWRITEPROMPT, LPCTSTR lpdzfilter = NULL, Cwnd* pparentwnd = NULL ); bopenfiledialog: lpdzdefext: lpdzfilename dwflags lpdzfilter pparentwnd TRUE erzeugt einen Datei-Öffnen-Dialog FALSE erzeugte einen Datei-Schließen-Dialog Es wird die Standarderweiterung des Dateinamens gesetzt Es wird ein standardmäßiger Dateiname gesetzt Festlegen von Eigenschaften (m_ofn) im Dialogfeld Es wird der Filter zum Anzeigen aller Dateinamen gesetzt Spezifiziert das Elternfenster Beispiel: CFileDialog dlg ( FALSE, "*.txt", "EKG.txt", OFN_OVERWRITEPROMPT, "Textdateien (*.txt) *.txt Alle Dateien (*.*) *.* " ); // Dialog für Fileablage if ( dlg.domodal ( )!= IDOK ) // Bei Ok Fileablage unter EKG.txt return; // Bei Abrechen keine Fileablage hfile = CreateFile ( dlg.getpathname(), GENERIC_READ GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0 ); // Fileablage 8

Mit diesem Aufruf wird ein Objekt vom Typ CFileObjekt mit dem Namen dlg angelegt und initialisiert. Es wird gleich der Konstruktor des Objektes aufgerufen. CFileDialog dlg erzeugt einen Speichern-unter-Dialog, der als Dateityp txt-dateien vorgibt und als Namen EKG.txt vorschlägt. Er lässt auch die Auswahl für Alle -Dateitypen zu. Der Parameter OFN_OVER- WRITEPROMPT öffnet ein Dialogfeld, wenn diese Datei schon vorhanden ist, und fragt nach, ob diese überschrieben werden soll. Die Anweisung º if ( dlg.domodal ()!= IDOK ) return ; ruft den Dialog dlg auf. DoModal liefert zurück, ob der Dialog mit OK oder ABBRECHEN beendet wurde. Wurde er mit ABBRECHEN beendet, wird die Funktion mit return verlassen. Wurde mit OK bestätigt ( IDOK ), wird eine Datei (mit Lese-/Schreib-Zugriffsrecht) durch den oben genannten Befehl CreateFile erzeugt. Die Anweisung º dlg.getpathname ( ) liefert einen CString mit Pfad- und Dateiname zurück. Gekapselte Fehlerbehandlung Für eine einheitliche Fehlerbehandlung und zur Vermeidung von Programmabbrüchen durch unbehandelte Fehler, werden alle Befehle der Funktion gekapselt. Die Kapselung erfolgt durch den Befehl try. Beim Auftreten eines Fehlers wird eine Exception (unerwarteter Programmzustand) mittels des Befehls AfxThrowUserException aufgerufen. Exceptionen werden aufgrund der Kapselung durch den Befehl catch abgefangen und dort behandelt, ohne dass das Hauptprogramm durch eine unbehandelte Exception beendet wird (Programmabsturz). MICROSOFT VISUAL C++ stellt Funktionen zum Auffangen und Entschlüsseln der Fehlermeldung bereit. Der Befehl GetLastError dient dem Auffangen der letzten Fehlermeldung und der Befehl FormatMessage dem Formatieren der Fehlermeldung. Systematik: try { Anweisungen, bei Fehler AfxThrowUserException ( ) } catch { Fehlerbehandlung } Beispiel: try { } if (!ReadFile ( hcom, &rbuffer, sizeof ( rbuffer ), &dwbytesread, NULL ) ) { CString cs; // Formatierung des aufgefangenen Fehlers FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError ( ), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT ), (LPTSTR) &lpmsgbuf, 0, NULL ); // Ausgabe des entschlüsselten Fehlers AfxMessageBox ( lpmsgbuf, MB_OK MB_ICONQUESTION, NULL ); // Ausgabe der gelesen Bytes und der Fehlernummer cs.format ( "Fehlernummer: %d, Bytes gelesen: %d ", GetLastError, dwbytesread ); AfxMessageBox ( cs, MB_OK, NULL ); AfxTrowUserException ( ); // Auslösen der Exception zum Verlassen der Funktion } else { cs.format ( "Es wurden %d Bytes gelesen", dwbytesread ); AfxMessageBox ( cs, MB_OK, NULL ); // Ausgabe der Anzahl gelesener Bytes } catch ( CException* except ) { except -> Delete ( ); AfxMessageBox ( Die Funktion wurde verlassen, MB_OK, NULL ); } // Tritt beim Lesen ein Fehler auf, wird dieser angezeigt, entschlüsselt und die Funktion // per Exception verlassen. Tritt kein Fehler auf, wird die Zahl der gelesenen Bytes angezeigt 9

2.4 Elektrokardiogramm - EKG Eine erregte Herzmuskelfaser ist an ihrer Zelloberfläche gegenüber einer unerregten Faser elektronegativ. Während des Erregungsablaufes entstehen daher in der Herzmuskulatur zwischen den erregten und den unerregten Zellen Potentialdifferenzen. Da das Herz im leitenden Medium Wasser eingebettet ist, breitet sich in seiner Umgebung ein elektrisches Feld aus. So lassen sich die vom Herzen ausgehenden Potentialänderungen an definierten Orten der Körperoberfläche als Elektrokardiogramm (EKG) erfassen (der Mediziner sagt: ableiten). Die Form des Elektrokardiogramms ist vom Erregungsablauf im Herzen und von den jeweils gewählten Ableitfor- Abb. 2.7: EKG-Spannungsverlauf [5] men, d.h. den Elektrodenpositionen auf der Körperoberfläche, abhängig. Abbildung 2.7 zeigt den charakteristischen Spannungsverlauf des EKG. Der EKG-Verlauf enthält Zacken und Wellen mit positiver oder negativer Ausschlagsrichtung. Sie werden mit den Buchstaben P bis U bezeichnet. Der Abstand zwischen zwei Zacken heißt Strecke. Zacken und Strecken werden zu Intervallen zusammengefasst, deren Dauer die zugehörige Zeit angibt. Die Nulllinie des EKG entspricht der isoelektrischen Linie. Die Zeit zwischen zwei aufeinander folgenden R-Zacken in Sekunden umfasst eine Herzperiodendauer (HPD), aus der sich die momentane Herzfrequenz (HF) errechnet: (2.1) Die einzelnen EKG-Abschnitte besitzen für die Diagnostik der elektrischen Phänomene der Herzerregung große Bedeutung, da die Zacken und Wellen des EKG in Beziehung zum Erregungsablauf im Herzen stehen (Abb. 2.8), z.b. entsteht die QRS-Gruppe durch die Erregungsausbreitung in den beiden Herzkammern. In der Elektrokardiographie werden verschiedene Ableitungssysteme (Erfassungsstrukturen) verwendet. Das EKG registriert in jeder Ableitung prinzipiell die gleiche elektrische Aktivität des Herzens. Da die elektrische Aktivität aus verschiedenen Positionen registriert wird, haben die Zacken und Wellen des EKG in jeder Ableitung ein unterschiedliches Aussehen. Dabei befinden sich die Elektroden an den Extremitäten und auf der Brustwand. Die von der Körperoberfläche erfassten EKG-Spannungen liegen bei max. 1 mv. Nach der Anordnung der Erfassungselektroden wird zwischen den Extremitäten-Ableitungen nach EINTHOVEN und den Brustwand-Ableitungen nach WILSON unterschieden. Extremitäten-Ableitungen nach EINTHOVEN Abb. 2.8: Erregungsausbreitung im Herzen vom Vorhof (1 Sinusknoten, 2 AV-Knoten, 3 His-Bündel) zur Herzkammer (4 Kammerschenkel, 5 PURKINJE-Fasern, 6 Septum) [5] Bei den als Standardableitungen nach EINTHOVEN bezeichneten Arten werden die Potentialänderungen zwischen jeweils zwei Extremitäten-Elektroden registriert. Es werden die drei Ableitungen I, II, III (Abb.2.9) verwendet: (2.2) (2.3) (2.4) 10

Nach der KIRCHHOFF-Regel gilt, die Summe der Spannungen im geschlossenen Kreis ist gleich Null. Um bei allen drei Standardableitungen auf die Zacken und Wellen bezogene ähnliche Kurvenbilder zu erhalten, wurde nach EINTHOVEN die Ableitung II entgegengesetzt zum Uhrzeigersinn geschaltet, siehe Gleichung (2.3): (2.5) Abb. 2.9: Elektrodenpositionen der Extremitäten-Ableitungen I, II, III nach EINTHOVEN [5] Brustwand-Ableitungen nach WILSON Die Brustwand-Ableitungen nach WILSON geben Auskunft über die Potentiale zwischen Massenmittelpunkt des Herzens und der Brustwand. Da im Massenmittelpunkt keine Elektrode anbringbar ist, wurde von WILSON ersatzweise eine Schaltung mit gleichem Effekt eingesetzt. Durch die Zusammenschaltung der drei Extremitäten-Elektroden R, L und F (Abb. 2.9) über 5kS-Widerstände (Abb. 2.10) wird ein zentraler Punkt (praktisches Null-Potential) als indifferente Elektrode geschaffen. (2.6) Des Weiteren werden sechs differente Elektroden (C 1 bis C 6 ) an genau festgelegten Punkten der Thoraxwand angebracht (Abb. 2.10). Abb. 2.10: Brustwand-Ableitungen nach WILSON Die sechs Ableitungsformen nach WILSON werden mit V1 bis V6 bezeichnet: (2.7) (2.8) (2.9) (2.10) (2.11) (2.12) 11

3 Versuchsaufbau 3.1 Gerätetechnik zur EKG-Erfassung Für den Praktikumsversuch COMPUTERGESTÜTZTE MESS- WERTERFASSUNG UND -AUSWERTUNG AM BEISPIEL DES EKG- SIGNALS steht ein Ergometrie-Messplatz mit einem Elektrokardiograph als Messgerät zur Verfügung. Der Praktikumsaufbau umfasst folgende Komponenten: S ein Computer mit USB-2COM-Adapter (Abb. 3.1), S ein 60 MHz Digital Speicher Oszilloskop angeschlossen an der COM3 (USB-2COM-Adapter), S die Programme zur Versuchsdurchführung COMTEST, Microsoft Visual Studio 2008 und EXCEL, S der Elektrokardiograph - das Messgerät angeschlossen an der COM4 (USB-2COM-Adapter). Abb. 3.1: USB-2COM-Adapter Das Digital Speicher Oszilloskop besitzt folgende technische Eigenschaften: S 60 MHz Echtzeit-Oszilloskop, S 20 MSamples/s Abtastrate im Digital-Betrieb, S einen Erfassungsspeicher von 8 KByte, S eine AUTO-SET-Funktion zur direkten Signalanzeige bei Echtzeit- und Digital-Betrieb sowie S Curser für Zeit-und Amplitudenmessungen im Digital-Betrieb. Das Programm COMTEST stellt für die Versuchsdurchführung die Kommunikation mit dem Elektrokardiograph zur Verfügung. Die jeweiligen Funktionen können durch Schalter oder über Menü ausgewählt werden. S Die Versuchsaufgaben 1 bis 6 werden durch die Schalter 1 2 3 4 5 6 oder im Menü Versuchsaufgaben/Versuchsaufgabe 1 bis 6 ausgewählt. S Mit dem Schalter E bzw. Menüpunkt EKG/Starten wird die EKG-Aufnahme durch eine Datenübertragung in Multitasking (als Hintergrundprozess laufender Thread) gestartet. Mit dem Schalter A bzw. Menüpunkt EKG/Beenden wird die EKG-Aufnahme wieder gestoppt. Die Spannungsverläufe der einzelnen EKG-Ableitungen werden farbig untereinander dargestellt. Dabei bewegt sich das Fenster mit dem zuletzt gezeichneten EKG-Wert mit. S Durch Drücken der linken Maustaste kann der Anfang eines Datenblockes, und durch Drücken der rechten Maustaste das Ende des Datenblockes festgelegt werden. Der Datenblock wird invertiert dargestellt. Sein Inhalt kann durch Drücken des Schalters C (Schere) oder Wahl des Menüpunktes Tools/Ausschneiden in ein File abgelegt werden. S Mit dem grünen Drucker-Schalter oder der Wahl des Menüpunktes Drucker/Drucker ein wird der Thermodrucker am Elektrokardiograph eingeschaltet und mit dem dann roten Drucker- Schalter oder der Wahl des Menüpunktes Drucker/Drucker aus wieder ausgeschaltet. Des Weiteren ist mit dem Standard-Drucker-Schalter oder der Wahl der Funktion Datei/Drucken eine Ausgabe der EKG-Grafiken auf den PC-Drucker möglich. S Mit den Funktionen Datei/Öffnen und Datei/Speichern können EKG-Daten im Nx8-ASCII- Matrix-Format (N Zeilen [Zeitachse] mit 8 Spalten [EKG-Ableitungen]) importiert und exportiert werden. Mit der Funktion Datei/Neu wird ein neues EKG-Datenfile angelegt. S Durch Betätigen des Setup-Schalters oder Wahl des Menüpunktes Optionen/Setup können die Eigenschaften der seriellen Schnittstelle am PC verändert werden. 12

S Durch Betätigen des Einstellung-Schalters oder Wahl des Menüpunktes Optionen/Einstellungen kann die zu verwendende serielle Schnittstelle (COM3 oder 4) ausgewählt und die EKG-Quelle (internes Test-EKG oder Patienten-EKG) festgelegt werden. S Durch Wahl des Menüpunktes?/Info oder Betätigen des Help-Schalters? wird die Infobox angezeigt. Die Programmsysteme MICROSOFT VISUAL STUDIO 2008 und EXCEL sind kommerzielle Programme und dienen in der Versuchsdurchführung einer modernen Programmentwicklung und dem standardisierten Datenaustausch. Der Elektrokardiograph ist für die EKG-Registrierung in der medizinischen Praxis vorgesehen und ist mit einer RS232-Schnittstelle zur Datenübergabe ausgestattet. Über eine Elektroden- Sauganlage werden die EKG-Signale vom Patienten erfasst (abgeleitet => deshalb auch Ableitung nach Name des Begründers dieser speziellen Messanordnung ). Im Praktikumsversuch wird kein EKG-Signal direkt vom Menschen verwendet, sondern ein im Elektrokardiograph für Servicezwecke abgelegtes TEST-EKG genutzt. 3.2 Datenübertragung zwischen PC und Elektrokardiograph Die Datenübertragung zwischen PC und Elektrokardiograph erfolgt über die RS232-Schnittstelle mittels einer Dreidrahtverbindung: RxD, TxD, Masse (Abschn. 2.1). Es findet kein Handshake- Betrieb statt. Es werden 16-Bit-Steuerworte zur Betriebsarteneinstellung am Elektrokardiograph (Tabelle 3.2) verwendet. Sie werden byteweise gesendet, wobei immer erst das LOW-Byte und dann das HIGH-Byte übertragen wird. Zwischen dem Senden der einzelnen Steuerworte an den Elektrokardiograph müssen Pausen von ca. 50 ms für die interne Steuerung (Mikrocontoller) eingehalten werden. Mit folgenden Parameter wird die RS232-Schnittstelle betrieben Baudrate: 115200 Bit/s Daten-Bits: 8 Stopp-Bits: 1 Parität: keine Handshake: kein Die EKG-Messdaten besitzen folgende Charakteristik Werteauflösung: 12-Bit-A/D-Wandlung, 2 :V pro LSB Abtastrate: 500 Hz Reale Rate: 160 Bit/Übertragungseinheit * 500 Übertragungseinheiten/s = 80000 Bit/s Da die serielle Schnittstelle jeweils nur ein Byte (Tabelle 3.4) überträgt, wird beim Senden immer erst das LOW-Byte und dann das HIGH-Byte zwischen PC und Elektrokardiograph bzw. umgekehrt übertragen. Durch bitweise Verschiebung und ODER-Verknüpfung werden dann die gemessenen 12-Bit-EKG- Werte aus dem Datenübertragungsformat (Tabelle 3.3) wieder zusammengesetzt und je nach verwendetem Datentyp unter Beachtung des Vorzeichens in eine 16-Bit- oder 32-Bit-Festkommazahl überführt. 13

Tabelle 3.2: Ausgewählte Steuerworte vom Elektrokardiograph Steuerwort (hex) Befehl 0580 Elektrokardiograph in den Grundzustand setzen 0180 Start Datenübertragung zum PC 2180 Start Elektrodentest und Datenübertragung zum PC 0280 Stopp Datenübertragung zum PC 1080 Test-EKG einschalten 2080 Test-EKG ausschalten 8080 Versionsnummer abfragen; Antwort ist 16 Byte lang; 1. Softwareversion = 1536: LOW-Byte / HIGH-Byte; 2. Geräteversion = 400: LOW-Byte / HIGH-Byte 1180 Drucker vom Elektrokardiograph einschalten 1280 Drucker vom Elektrokardiograph ausschalten Beispiele für Steuerwortfolgen 1. Start der EKG-Aufnahme mit dem Test-EKG 80h Elektrokardiograph in den Grundzustand setzen 05h 80h Test-EKG einschalten 10h 80h Start Elektrodentest und Datenübertragung zum PC 21h 2. Start EKG-Aufnahme mit Patienten-EKG 80h Elektrokardiograph in den Grundzustand setzen 05h 80h Test-EKG ausschalten 20h 80h Start Elektrodentest und Datenübertragung zum PC 21h 3. Stopp EKG-Aufnahme (Ende der Datenübertragung nach Übertragung eines vollständigen Elektrodenwertezyklus [maximal 16 Byte]) 80h Stopp Datenübertragung 02h Fehlermöglichkeiten sollten immer in Betracht gezogen werden, zum Beispiel: S Steuerworte wurden im falschen Format übertragen, statt 55 hex wurde 55 ASCII gesendet. S Die Reihenfolge von LOW- und HIGH-Byte wurde vertauscht. S Die Pausenzeiten zwischen den einzelnen Steuerworten war zu kurz. S Es wurden 16-Bit-Datenworte gelesen, LOW- und HIGH-Byte aber nicht sicher synchronisiert. In diesem Fall ist es besser 8-Bit-Datenworte zu lesen und im Anschluss zu 16-Bit-Datenworten zusammenzusetzen. Voraussetzung ist, dass LOW- und HIGH-Bytes durch Start- und Stopp-Bits überhaupt unterschieden werden können. Dies ist am Beispiel des EKG-Datenübertragungsformates mit dem Beginn der definierten Bit-Folge 1010 des HIGH-Bytes der R- Elektrode möglich. Hier dient die definierte Reihenfolge auch noch zur Festlegung des Beginns eines Datenblockes entsprechend des Datenübertragungsformates (Tabelle 3.3). S Bei der Vorzeichenkonvertierung von der n-bit-zahl des A/D-Wandlers zur m-bit-zahl für das PC-interne Datenformat wurde eine falsche Zahl angenommen (Integer-Zahl: m mit 16 oder mit 32). S Es kommt zu Verschiebungen in den Datensätzen, bedingt durch die Tatsache das Felder immer mit dem Feld 0 beginnen und nicht mit dem Feld 1. 14

Tabelle 3.3: Elektrokardiograph Datenübertragungsformat - Struktur einer Messwertübertragung Elektrode Wort\Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 R 0 1 0 1 0 R 11 R 10 R 9 R 8 R 7 R 6 R 5 R 4 R 3 R 2 R 1 R 0 L 1 0 P 2 P 1 P 0 L 11 L 10 L 9 L 8 L 7 L 6 L 5 L 4 L 3 L 2 L 1 L 0 F 2 0 P 5 P 4 P 3 F 11 F 10 F 9 F 8 F 7 F 6 F 5 F 4 F 3 F 2 F 1 F 0 C1 3 0 P S P 7 P 6 C 11 C 10 C 9 C 8 C 7 C 6 C 5 C 4 C 3 C 2 C 1 C 0 C2 4 0 B 2 B 1 B 0 C 11 C 10 C 9 C 8 C 7 C 6 C 5 C 4 C 3 C 2 C 1 C 0 C3 5 0 B 5 B 4 B 3 C 11 C 10 C 9 C 8 C 7 C 6 C 5 C 4 C 3 C 2 C 1 C 0 C4 6 0 B 8 B 7 B 6 C 11 C 10 C 9 C 8 C 7 C 6 C 5 C 4 C 3 C 2 C 1 C 0 C5 7 0 B 11 B 10 B 9 C 11 C 10 C 9 C 8 C 7 C 6 C 5 C 4 C 3 C 2 C 1 C 0 Zuordnung der Bit-Positionen zu den Elektroden-Messwerten: S 1010 Synchronisations-Bits (Bit 12...15 von R Elektrode) zur Erkennung des Datenfeldanfangs S R 0... R 11 Bits 0 bis 11, d.h. Messwert der Elektrode R (Elektrode an der rechten Hand) S L 0... L 11 Bits 0 bis 11, d.h. Messwert der Elektrode L (Elektrode an der linken Hand) S F 0... F 11 Bits 0 bis 11, d.h. Messwert der Elektrode F (Elektrode am linken Fuß) S Cn 0... Cn 11 Bits 0 bis 11, d.h. Messwerte der Brustwand-Elektroden 1... 5 (Cn: C1 bis C5) S B 0... B 11 Bits 0 bis 11, d.h. Messwerte der Brustwand-Elektrode C6 S P 0... P 7, P S Parameterkanal mit P s = 0: LOW-Byte und P S = 1: HIGH-Byte Tabelle 3.4: Bytestrom vom Elektrokardiograph zur Übertragung von Versionsnummer und Messwerten für alle neun Elektroden Lfd. Binäre Darstellung eines übertragenen Bytes Hex. Dez. Nr. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Dar. Dar. Übertragung der Versionsnummer (16 Bytes) 0 0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 0 1 1 0 06 6 2 1 0 0 1 0 0 0 0 90 144 3 0 0 0 0 0 0 0 1 01 1 4 0 0 0 0 0 0 0 0 00 0! Übertragung der Elektrodenmesswerte 0 1 0 1 0 0 1 1 0 A6 166 1 0 0 0 0 0 0 0 0 00 0 2 1 0 1 0 1 1 0 1 AD 173 3 1 0 1 0 0 0 0 0 A0 160 4 0 0 0 1 1 1 0 0 1C 28 5 0 1 0 0 0 0 0 0 40 64 6 1 1 1 0 0 1 0 1 E5 229 7 0 0 1 0 1 1 1 1 2F 47 8 0 1 0 1 0 1 0 0 54 84 9 0 1 0 0 0 0 0 0 40 64 10 1 0 0 1 0 0 0 0 90 144 11 0 0 0 1 0 0 0 0 10 16 12 0 1 0 0 1 1 1 0 4E 78 13 0 0 1 0 0 0 0 0 20 32 14 0 0 1 0 1 0 0 0 28 40 15 0 0 0 0 0 0 0 0 00 0 16 0 0 0 1 1 0 0 0 18 24 17 0 0 0 0 0 0 0 0 00 0 18 0 0 0 0 0 0 0 0 00 0 19 1 0 1 0 0 0 0 0 A0 160 20 0 0 0 1 1 0 0 1 19 25 21 0 0 0 1 0 0 0 0 10 16 15

4 Vorbereitungsaufgaben Jeder Versuchsteilnehmer hat die Vorbereitungsaufgaben vor dem Praktikum schriftlich (max. 4 A4-Seiten) auszuarbeiten. Sie können im Versuchskolloquium verwendet werden und sind Teil des Versuchsprotokolls! 4.1 Kontrollfragen - Stellen Sie das Grundprinzip der seriellen Datenübertragung dar! - Erläutern Sie den wesentlichsten Unterschied zwischen synchroner und asynchroner serieller Datenübertragung! - Welche Festlegungen müssen bei der asynchronen seriellen Datenübertragung getroffen werden? - Beschreiben Sie die Funktionsschritte vom analogen zum digitalen Signal! - Ein Analog-Digital-Umsetzung gibt die Zahlenfolgen 23 34 45 56 aus: welche Einstellung muss man kennen, um daraus den Messwertverlauf wieder rekonstruieren zu können? - Wie erfolgt die Messwertübertragung vom Elektrokardiograph zum PC? - Wodurch ist ein Messwertkomplex in der Datenübertragung gekennzeichnet und wie kann man im Datenstrom einen Messwertkomplex erkennen? 4.2 Signalverlauf Zur Vorbereitung der Versuchsaufgaben 1 und 2 zeichnen Sie den Signalverlauf einer seriellen asynchronen Übertragung für die Parameter aus Tabelle 4.1! Ermitteln Sie dazu die Impulsbreiten und die Übertragungsgeschwindigkeit - jeder Student wählt eine andere Aufgabe! Tabelle 4.1: Serielle asynchrone Übertragungsparameter Aufgabe a b c d Baudrate 1200 2400 4800 9600 Daten-Bits 8 8 8 8 Stopp-Bit 1 1 1 1 Parität keine keine keine keine Übertrag.-Art 3-Drahtverbindung, kein Handshake Zeichen 05 hex 55 hex AA hex FF hex 4.3 MFC-Anwendungsassistent Ein leistungsfähiges Arbeitsmittel bei der Programmerstellung mit MICROSOFT VISUAL STUDIO 2008 ist der MFC-Anwendungsassistent. Machen Sie sich mit den wesentlichsten Arbeitsschritten (Anlage 1) in Vorbereitung der Versuchsaufgaben 3 bis 6 vertraut! 4.4 Programm - Versionsnummer vom Elektrokardiograph abfragen (Steuerwort senden) Das in Anlage 2 dargestellte Programm übermittelt Steuerworte an die serielle Schnittstelle, wodurch die Versionsnummer vom Elektrokardiograph abgefragt werden kann. Die Steuerworte sind aus der Tabelle 3.2 zu entnehmen. Zwischen den gesendeten Steuerworten muss eine Pause von ca. 50 ms für deren Decodierung in der Steuerelektronik vom Elektrokardiograph berücksichtigt werden. S Arbeiten Sie das Programm in Anlage 2 durch! S Ergänzen Sie im Quelltext zur Versuchsaufgabe 4 die fehlenden Einstellungen zur Schnittstelle und die notwendigen Steuerworte für die Sende-Anweisungen, die während der Versuchsdurchführung in den vorgegeben Quellcode einzutragen sind! 16

4.5 Programm - Elektrokardiograph-Versionsnummer aufnehmen (Steuerwort empfangen) Das in Anlage 2 vorgegebene Programm dient auch dazu, die Versionsnummer vom Elektrokardiograph zu empfangen. Es wird ein Datenblock von 16 Byte übernommen und anschließend die Versionsnummer, d.h. die ersten vier Bytes auf den Bildschirm ausgegeben. S Arbeiten Sie das Programm in Anlage 2 durch! S Ergänzen Sie im Quelltext zur Versuchsaufgabe 5 die fehlenden Anweisungen zum Datenempfang und zur Dekodierung! S Zum Problemverständnis studieren Sie die Tabelle 3.4. Darin kennzeichnen Sie im Teil Übertragung der Versionsnummer (16 Bytes) die Software- und die Geräteversionsnummer. S Überprüfen Sie die jeweiligen dezimalen Zahlenwerte mit den Angaben in Tabelle 3.2. S Erstellen Sie eine Programmlogik für die Dekodierung der Versionsnummer entsprechend Tabelle 3.2! 4.6 Programm - Messwertübertragung und EKG-Berechnung bzw. Darstellung Datenübertragungsformat vom Elektrokardiograph - Zum Problemverständnis studieren Sie die Tabellen 3.3 und 3.4! - Kennzeichnen Sie in Tabelle 3.4 im Teil Übertragung der Elektrodenmesswerte Anfang und Ende eines Messwerte-Datenblockes entsprechend Tabelle 3.3! - Rahmen Sie die zur Erkennung eines Datenblockes relevante Bit-Folge ein! Wiederholung von logischen Einzel-Bit-Operationen Für die Versuchsaufgaben 5 und 6 ist es notwendig, die vom Elektrokardiograph gesendeten Daten durch Bit-/Byte-Operationen zu dekodieren. Die Programmiersprache C kennt folgende bitweise Operatoren: a << n Linksverschieben um n Stellen (von rechts mit 0 aufgefüllt, links gehen Stellen verloren - auch Vorzeichen!), a >> n Rechtsverschieben um n Stellen (von links mit 0 aufgefüllt), a & b Bitweises AND von a und b, a ^ b Bitweises XOR von a und b, a b Bitweises ODER von a und b. S S S S Erstellen Sie eine Programmlogik für die Dekodierung der Versionsnummer nach Tabelle 3.2 und der Elektroden-Messwerte nach Tabelle 3.3! Wiederholen Sie die Verknüpfungs- und Verschiebeoperationen! Was bewirkt eine Ziffern-Verschiebung nach links bzw. nach rechts? Welches Ergebnis entsteht, wenn die Werte 37 hex und 24 hex mit der logischen UND- bzw. ODER- Funktion verknüpft werden? Tabelle 4.2: 8-Bit-Zahlen-Beispiele 0010 0010 1001 1001 Binärdarstellung Hexadezimaldarstellung 50 AB Dezimaldarstellung Wiederholung von binärer Vorzeichendarstellung S Wiederholen Sie die Vorzeichendarstellung 1 binärer Zahlen! S Vervollständigen Sie die Tabelle 4.2! Beachten Sie dabei das bestimmende Bit für das Vorzeichen! -32 58 1 In der binären Festkommzahlendarstellung ist das höchstwertige Bit (MSB) verantwortlich für das Vorzeichen. Hat dieses Bit den Wert null, so ist die Zahl positiv und ergibt sich direkt aus den restlichen Bits. Hat das höchstwertige Bit den Wert eins, so ist die Zahl negativ. Der Wert ergibt sich aus dem Inversen der restlichen Bits addiert mit eins sowie multipliziert mit minus eins. Beispiele: 0011 0011 = 33 hex = +51 dez 1111 1111 = FF hex = - 1 dez 1101 1111 = DF hex = -33 dez 17

Vorzeichenkonvertierung Der Elektrokardiograph liefert 12-Bit-Zahlen, Programmiersprachen arbeiten mit 16- bzw. 32-Bit- Zahlenformaten. S Schreiben Sie einen Algorithmus zur Konvertierung einer 12-Bit-Zahl in eine 16- bzw. 32-Bit- Zahl unter Beachtung des 1. Bits! Hinweis: Unter BORLAND C++ ist das Format INTEGER eine 16-Bit-Zahl, während bei MICRO- SOFT VISUAL C++ INTEGER eine 32-Bit-Zahl definiert. Wird in einem MICROSOFT VISUAL C++ Programm nur eine 16-Bit-Integer-Zahl benötigt, so muss der Datentyp SHORT INT anstelle von INT verwendet werden. Entschlüsselung der Übertragungsdaten und Berechnung der EKG-Ableitungen S Entwerfen Sie unter Verwendung von Verknüpfungs- und Verschiebeoperationen einen Algorithmus, der aus dem übertragenen Bytestrom (Tabellen 3.3 und 3.4) + einen Messwertdatenblock erkennt, + aus den empfangenen LOW- und HIGH-Bytes die entsprechenden Elektrodenpotentiale (Messwerte) wieder zusammen setzt und + aus diesen Elektrodenpotentialen die Extremitäten-Ableitungen nach EINTHOVEN bzw. die Brustwand-Ableitungen nach WILSON, siehe Gleichungen (2.2) bis (2.4) sowie (2.7) bis (2.12) ermittelt! S Arbeiten Sie das Programm in Anlage 3 durch und ergänzen Sie im Quelltext zu Versuchsaufgabe 6 die fehlenden Anweisungen! 4.7 Datentransfer ins Programmsystem EXCEL S S Machen Sie sich mit der Bedienung des Programmsystems EXCEL vertraut! Notieren Sie sich für dieversuchsaufgabe 7 eine Anweisungsfolge zur Importierung und grafischen Darstellung eines Datensatzes sowie zur Auswahl der EKG-Ableitung 2! Hinweise: - Die vom Programm COMTEST erzeugten Messwert-ASCII-Files können im Programmsystem EXCEL unmittelbar mit Hilfe der Funktion Datei/Öffnen geladen werden. Dazu muss im Menü Öffnen als Dateityp Textdateien (*.prn;*.txt;*.csv) gewählt werden. Nach Auswahl der gewünschten Textdatei wird der Text-Assistent aktiv. - In den nun folgenden drei Schritten können der Dateityp, die Spaltenumbrüche und das Datenformat der Spalten festgelegt werden. - Nach Abschluss dieser Prozedur befinden sich die Messwerte, welche im ASCII-File in einer Spalte standen, im Programmsystem EXCEL auch in einer Spalte. Die Messwerte wurden erfolgreich transferiert. - Nun kann beispielsweise ein Stück einer EKG-Ableitung selektiert werden (Kennzeichnung mit der Maus bei gedrückter linker Taste). Mit der Funktion Einfügen/Diagramm... werden die Daten in eine Grafik überführt. Im Diagramm-Assistenten ist noch der Diagrammtyp auszuwählen. 5 Versuchsdurchführung 5.1 Aufgabe 1 - Senden als Lernteil Starten Sie das Programm COMTEST! Verbinden Sie den Sendeausgang der seriellen Schnittstelle am COM-Adapter (Abb. 2.2) mit dem Speicheroszilloskop! Im 1. Arbeitsschritt wählen Sie durch Betätigen des Einstellung-Schalters bzw. des Menüpunktes Optionen/Einstellungen die serielle Schnittstelle aus, d.h. für den COM-Adapter die COM3. Im 2. Arbeitsschritt wählen Sie über den Schalter 1 oder im Menü Versuchsauf- gaben/versuchsaufgabe 1 das zu sendende Zeichen (05, 21, 55, 65 oder FF hex) aus! Mit der 18

Bestätigung durch die Taste OK wird das eingestellte Zeichen entsprechend der Wiederholrate mit den danach einzustellenden Parametern (z.b. 2400 Baud) gesendet. Sie können im Echtzeitaber auch im Speicher-Betrieb den Signalverlauf dieser seriellen Übertragung auf dem Oszilloskop sehen (Voraussetzung: das Signal TxD ist angeschlossen). Nutzen Sie verschiedene Parametereinstellungen! Dokumentieren Sie den Signalverlauf mit den Spannungs- und Zeitgrößen zur gewählten Parametereinstellung (unbedingt mit angeben)! 5.2 Aufgabe 2 - Senden als Kontrollteil Nach dem Sie verschiedene Einstellungen getestet haben, wählen Sie über den Schalter 2 oder im Menü Versuchsaufgaben/Versuchsaufgabe 2 ein unbekanntes, zu sendendes Zeichen aus! Im Fenster Versuchsschema werden mehre Varianten angeboten, von denen drei Varianten auszuwählen sind. Es soll nun bestimmt werden, um welches Zeichen es sich bei der ausgewählten Variante handelt (2400 Baud, 8 Daten-Bits, kein Paritäts-Bit)! Dokumentieren Sie den Signalverlauf und den Zeicheninhalt als hexadezimale Zahl im Protokoll! Geben Sie die gewählte Variante mit an! 5.3 Aufgabe 3 - Arbeit mit dem MFC-Anwendungsassistenten Im Programm COMTEST unter dem Schalter 3 oder im Menü Versuchsaufgaben/Versuchsauf- gabe 3 ist die zu programmierende Aufgabe zum Vergleich bereits realisiert. Erstellen Sie ein erstes Windows-Programm mit der Fensterausgabe Hello world!. Nutzen Sie bei der Programmerstellung mit MICROSOFT VISUAL STUDIO 2008 den MFC-Anwendungsassistenten und die Kenntnisse aus der Versuchsvorbereitung zur Versuchsaufgabe 3 (Anlage 1). 5.4 Aufgabe 4 - Versionsnummer vom Elektrokardiograph abfragen (Steuerwort senden) Im Programm COMTEST unter dem Schalter 4 oder im Menü Versuchsaufgaben/Versuchsauf- gabe 4 ist die zu programmierende Aufgabe zum Vergleich bereits realisiert. Starten Sie MICROSOFT VISUAL STUDIO 2008! Verfahren Sie wie in der Versuchsaufgabe 3 und nutzen Sie weiterhin das Projekt PRAKTIKUM. Fügen Sie in einen weiteren Funktionsaufruf den Quelltext entsprechend der Vorbereitungsaufgabe 4.4 (Anlage 2) aus der Datei Versuchsaufgabe4.cpp ein. Ergänzen Sie im Quelltext die fehlenden Anweisungen entsprechend Ihrer Versuchsvorbereitung! Übersetzen Sie nun das Projekt PRAKTIKUM! Beseitigen Sie alle Fehler und führen Sie Ihr Programm aus! 5.5 Aufgabe 5 - Elektrokardiograph-Versionsnummer aufnehmen (Steuerwort empfangen) Im Programm COMTEST unter dem Schalter 5 oder im Menü Versuchsaufgaben/Versuchsaufgabe 5 ist die zu programmierende Aufgabe zum Vergleich bereits realisiert. Starten Sie MICROSOFT VISUAL STUDIO 2008! Verfahren Sie wie in der Versuchsaufgabe 4 und nutzen Sie weiterhin das Projekt PRAKTIKUM. Fügen Sie in einen weiteren Funktionsaufruf den Quelltext entsprechend den Vorbereitungsaufgaben 4.4 und 4.5 (Anlage 2) aus der Aufgabe 4 und der Datei Versuchsaufgabe5.cpp ein. Ergänzen Sie im Quelltext die fehlenden Anweisungen entsprechend Ihrer Versuchsvorbereitung! Übersetzen Sie nun das Projekt PRAKTIKUM! Beseitigen Sie alle Fehler und führen Sie Ihr Programm aus! 19

5.6 Aufgabe 6 - Übertragung und Darstellung eines kompletten EKG Die Funktion (einschließlich einer zusätzlichen Messwertanzeige) ist im Programm COMTEST unter dem Schalter 6 oder im Menü Versuchsaufgaben/Versuchsaufgabe 6 implementiert. Starten Sie MICROSOFT VISUAL STUDIO 2008! Verfahren Sie wie in den vorangegangenen Versuchsaufgaben und nutzen Sie weiterhin das Projekt PRAKTIKUM. Fügen Sie in einen weiteren Funktionsaufruf den Quelltext entsprechend der Vorbereitungsaufgabe 4.6 (Anlage 3) aus der Datei Versuchsaufgabe6.cpp ein. Ergänzen Sie im Quelltext die fehlenden Anweisungen entsprechend Ihrer Versuchsvorbereitung! Übersetzen Sie nun das Projekt PRAKTIKUM! Beseitigen Sie alle Fehler und führen Sie Ihr Programm aus! Nach erfolgreicher Daten-Übertragung kontrollieren Sie mit Hilfe des Programm COMTEST durch Öffnen und Anzeigen des abgelegten Messwertdaten-Files den EKG-Signalverlauf. 5.7 Aufgabe 7 - Datentransfer ins Programmsystem EXCEL Nehmen Sie in Ihrem Projekt PRAKTIKUM mit Hilfe der nun existierenden Funktion Versuchsaufgabe 6 einen Datensatz auf. Speichern Sie diesen ab. Danach importieren Sie diesen Datensatz in das Programmsystem EXCEL. Stellen Sie einen Ausschnitt der Extremitäten-Ableitung II nach EINTHOVEN in einem Diagramm dar. 6 Kolloquiumsschwerpunkte Im Rahmen des Kolloquiums werden die wesentlichsten Fragen der Vorbereitungsaufgaben angesprochen, wie: S Verfahrensprinzipien und notwendige Festlegungen bei der seriellen Datenübertragung, S Festlegungen und Schritte vom analogen zum digitalen Signal, S Datenübertragungsformat und Bytestrom vom Elektrokardiograph, S Verständnis und Interpretation der Quelltexte in Anlage 2 und 3, S Datenaustausch zwischen Softwaresystemen. Hinweis: Das Versuchsprotokoll schicken Sie innerhalb von 14 Tagen als PDF-Datei an die E-Mail-Adresse: Matthias.Rabenau@tu-dresden.de! 7 Literatur [1] Klaus R., Käser H.: Grundlagen der Computertechnik. Vdf Hochschulverlag AG an der ETH Zürich 1998. [2] Lohninger, H.: Angewandte Mikroelektronik. IWT, Vaterstetten, 1990, Band 2. [3] Preuß L., Musa H.: Computerschnittstellen. Carl Hanser Verlag München, 2. u. N. 1991. [4] USB - Universal Serial Bus, in Wikipedia, der freien Enzyklopädie, unter: http://de.wikipedia.org/wiki/universal_serial_bus Zugriff: 20. Juni 2011. [5] Sulyma M.G.: EKG Herzrhythmus Herzschrittmacher. Medikon Verlag, 3. Aufl., München 1993. [6] Koenig A., Moo B.E.: Intensivkurs C++. Pearson, München 2003. [7] Willms A.: Einstieg in Visual C++ 2008. Galileo Press, 2., aktualisierte Auflage, Bonn 2008. [8] Microsoft Visual Studio, in Wikipedia, der freien Enzyklopädie, unter: http://de.wikipedia.org/wiki/microsoft_visual_studio Zugriff: 20. Juni 2011. [9] Schels I.: Excel 2007 - Sehen und Können. Markt + Technik, München 2007. Bearbeiter: M.Rabenau / F.Sonntag / D.Fleischer 18. April 2016 20