Geschwindigkeitsmessung

Slides:



Advertisements
Ähnliche Präsentationen
Be.as WEB Technologie
Advertisements

programmiert April-Juni 2003 von Knut Riechmann
der Universität Oldenburg
Klassen - Verkettete Liste -
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Funktionen, Felder und Parameter-übergabe
Funktionen.
Sortieren I - Bubblesort -
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
IO - Hardwarestruktur, allgemein
Eine kleine Einführung
Wird euch präsentiert von Ben Polidori
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Spezifikation der Module / Programme
Java News & Music Der Chat
Java: Grundlagen der Sprache
Tiny TP Tiny TP gehört zwar zu den optionalen Komponenten wird aber dringend empfohlen. Tiny TP erfüllt folgende Aufgaben: 1.Zerlegung von großen Nachrichten.
Katja Bode MOdulator Der, Die, Das DEModulator.
V09 Fallende Formen, Geschwindigkeitsregelung und Timing Daniel Ebner Spieleprogrammierung mit DirectX und C++
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
FS_Geschwindigkeitsmessung
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Haupt- und Arbeitsspeicher
Windows 98 Microsoft Windows 98 - Ein technischer Überblick Jörg Kramer University Support Center.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Fli4l Der Ein-Disketten-Router von Sebastian Röhl von Sebastian Röhl.
Linux-HA-Cluster – Heartbeat mit DRBD
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
3D Programmierung Version 12 - Highscores. Die vom Spieler erzielte Punktzahl wird mit 5 vorgegebenen Punktzahlen verglichen und, falls nötig, in die.
Referat zum Thema „DLL“
Interrupt Bei dem Transport von Daten zu einem Speichermedium oder zu einer Schnittstelle, muss der PC seine aktuelle Arbeit unterbrechen Man bemüht sich,
Studienarbeit Mini-Web-Server auf einem Signalcontroller
von Julia Pfander und Katja Holzapfel E 12/2
Schnittstellen des Computers
G.Meininghaus, Konstanz1 Bilder / Fotos per verschicken.
Steuerung externer Komponenten über ein USB-Interface.
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Vortrag D. Braun, Praktikum. Übersicht Pleopatra API Pleopatra Tools Twitter Demonstration Ausblick.
1. Was ist Hardware? Hardware nennt man alle Geräte und Bauteile, die zu einem Computer gehören – also alles was man am Computer anfassen kann. Bsp: Monitor,
DYNTEST –Control Systems -Probleme beim Auslesen-
Speichermodulverwendung mit der kompakten Steuerung CP1L
Tobias Kluge: FAME Middleware / Karlsruhe / The FAME project – Middleware.
Der Aufbau eines Computers
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Internet und SMS Internet und SMS Daniel Rickenbacher Jeremy Deuel.
CGI (Common Gateway Interface)
Computerorientierte Physik VORLESUNG
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Μ Version 1.0Seite 1µVision Start Debugger Set Breakpoint µVision Debugger.
Meldungen über Ethernet mit FINS/UDP
BMEVIEEA100 Grundlagen der Programmierung
Masc CJD Jugenddorf Offenburg Die Installation ProfilAC … powered by Polikles ® 25. bis 27. Januar 2005 masc ag, rotkreuz
iMAS Schnittstellen - Übersicht
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
Anschlussmöglichkeiten beim Samsung S3
Partner Präsentation Interaktives Planen in der Fertigung.
Was wäre wenn….. SNMP (Simple Network Managment Protocol)
SKL/PM | März 2014| Seite 1 Anleitung Tablet - PC Sven Kleinsang.
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Spezifikation der Module / Programme
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
Motherboard zentraler Teil des Computers
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
 Präsentation transkript:

Geschwindigkeitsmessung PDV Vertiefung Projekt Geschwindigkeitsmessung 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Aufgabenstellung Positionsbestimmung einer Modelleisenbahn durch Geschwindigkeitsmessung. MIT : Messvorrichtung Programm zur Geschwindigkeitsermittlung Weiterverarbeitung durch Javaprogramm 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Projektplanung Umsetzung der Messung durch Funkmaus. Entwicklungsumgebung (C++, VB, Java, C#,….). Laufzeitumgebung des fertigen Programms (Windows, Linux, Dos). Schnittstelle für Java Programm. 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Projektplanung Was für ein Maustyp ? USB Funkmaus USB Funkmaus mit seriellem Adapter PS2 Funkmaus Serielle Funkmaus Problem Serielle Funkmaus nur schwer bzw. gar nicht zu beschaffen Serieller Adapter ist nicht immer mit jeder USB Maus kompatibel  Deshalb USB Maus 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Weitere Probleme Messmaus darf nicht als „normale Maus“ vom BS erkannt werden. (Messverfälschung) Keinen direkten Zugriff auf Hardware unter Win2000/XP/NT Einsatz eines generischen Treibers mit Win32 API Schnittstelle Vorteile Plug & Play durch USB Treiber Läuft unter fast allen gängigen BS (Win95/98/2000/NT/XP) HW wird nicht als Maus erkannt vom Betriebssystem 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Aufbau des Universal Serial Bus Alle Aktivitäten gehen vom Master (PC) aus. Datenpakete werden wahlweise von 8 – 256 Bytes versendet/empfangen. Jedes USB Gerät hat : - 1 Device-Deskriptor - 1 od. mehrer Configuration-Deskriptor - 1 od. mehrer Interface-Deskriptor - 1 od. mehrer Endpoint-Deskriptor 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

USB Descriptor Hierarchie Das System fragt neben dem Konfiguration-, Interface- auch die Endpoint-Deskriptoren ab. Jedes Gerät wird anhand der beiden 16-Bit-Zahlen (Vendor-ID/Produkt-ID) genau Identifiziert. 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Einbindung des generischen USB Treiber Benutzt wurde das USBIO Development Kit V2.0(LT) der Firma Thesycon. Durch Benutzung der Programmierschnittstellen wurde ein direktes Auslesen der Daten von der USB Maus möglich. Programm ist als Freeware zu bekommen. Entwicklung eines eigenen Treibers entfällt. 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Win32 USB Treiber Stack 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Einbindung des generischen USB Treiber Einfache Installation durch Setuproutine. Nach der Installation erfolgt die Konfiguration (Umleiten des gewünschten USB Gerätes). Die Funkmaus wird hier als HID (Human Interface Device) bezeichnet. 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Einbindung des generischen USB Treiber 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Das Programm ReadPipe Die Hauptaufgaben : Stellt die Verbindung zum USB Gerät her. Ließt die Daten kontinuierlich aus der USB Maus aus. Errechnet aus diesen die Aktuelle Geschwindigkeit. Speichert Messdaten in eine Textdatei für spätere Auswertung. 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Das Programm ReadPipe Das Programm wird momentan noch mit 2 Parametern aufgerufen. Para1 = Datei zum Speichern der Messdaten Para2 = Endpoint Adresse des USB Gerätes z.B. 0x81 Folgende Include Dateien werden benötigt : #include <windows.h> #include <stdio.h> #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <sys/timeb.h> #include <sys/types.h> #include <string.h> #include <time.h> #include <winioctl.h> #include <setupapi.h> #include "usbio_i.h„ #include "usbspec.h“ Die Includedatei usbio_i.h stellt USBIO Treiber Interface da. 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Das Programm ReadPipe Die externe Funktion IoctlSync( ) Die IoctlSync ist eine generische Unterstützungsfunktion, um die IOCTL Request´s zum USBIO Gerätetreiber weiterzuleiten. Diese Funktion wird intern verwendet, um die asynchrone USBIO API zu handeln. Sie ruft unter anderem den Gerätetreiber auf. 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Das Programm ReadPipe Funktion IoctlSync() DWORD IoctlSync( HANDLE FileHandle, DWORD IoctlCode, const void *InBuffer, DWORD InBufferSize, void *OutBuffer, DWORD OutBufferSize, DWORD *BytesReturned ) { DWORD Status; DWORD BytesRet = 0; BOOL succ; OVERLAPPED Overlapped; ZeroMemory(&Overlapped,sizeof(Overlapped)); Overlapped.hEvent = CreateEvent(NULL,FALSE,FALSE,NULL); if ( Overlapped.hEvent==NULL ) { return USBIO_ERR_NO_MEMORY; } /* Ruft den Gerätetreiber */ succ = DeviceIoControl( FileHandle, // driver handle IoctlCode, // IOCTL code (void*)InBuffer, // input buffer InBufferSize, // input buffer size OutBuffer, // output buffer OutBufferSize, // output buffer groesse &BytesRet, // anzahl der zurückgegebenen bytes &Overlapped // OVERLAPPED structure ); if ( succ ) { Status = USBIO_ERR_SUCCESS; } Else { …………………… 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Das Programm ReadPipe Main() Auflisten aller angeschlossener USBIO Geräte mit der Funktion SetupDiGetClassDevs( ); Aufzählen der Geräte-Interfaces Auslesen der Interfaces Detail Daten 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Das Programm ReadPipe Main() Öffnen des Gerätes mit der Funktion CreateFile( ); // Gerätehandle erstellen Danach Konfiguration des USB Gerätes durch Aufruf der Funktion IoctlSync( ) Nun muss noch der Gerätehandle an eine Pipe gebunden werden, wieder durch IoctlSync( ) // nur eine Pipe pro Handle 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Das Programm ReadPipe Main() Herzstück des Programms: Endlos For Schleife wird nur bei _kbhit() unterbrochen. Mit der Funktion ReadFile() lesen wir nun die Daten in unseren Buffer. Abfrage ob das Auslesen korrekt gelaufen ist Buffer auslesen und Geschwindigkeit ausrechnen. 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Das Programm ReadPipe Main() BufferPosition=2; result=(char)(Buffer[BufferPosition]); sum = sum+result; BufferPosition=BufferPosition+4; stop = clock(); VerstricheneTime = (double)(stop - start) / CLOCKS_PER_SEC; GesamtTime = (double)(stop - gtime) / CLOCKS_PER_SEC; if (VerstricheneTime >= MSEC) { start = clock(); deltasum = sum - tmpsum; tmpsum = sum; strecke = (double)((double)(deltasum*EICHUNG)/MOUSE_AUFLOESUNG); gesamtstrecke = (double)((double)(sum*EICHUNG)/MOUSE_AUFLOESUNG); geschwindigkeit = (strecke/VerstricheneTime); …….//Ausgabe } 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Aufbau einer Maus I Logitech Funkmaus(Logi CL Maus €32) Reichweite ca. 2m Ball an der Unterseite eingelassen Übertragung der Bewegung über eine Walze zu der Codierscheibe Abnahme der Bewegung mit Leucht- und Fotodiode 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Aufbau einer Maus II Signale werden von Chip codiert Codierung in 5 Byte breite Wörter 1 2 3 4 5 00 FA Knöpfe Links-Rechts Vor/Zurück Scroll-Rad ?? 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Anforderungen an die Maus USB (wegen Hilfstool) Ball zur Bewegungsaufnahme (wegen Übertragung Achse-Codierscheibe) Funkübertragung Mind. 2m Reichweite => Logitech Funkmaus(Logi CL Maus €32) 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Der Umbau I Fragestellung: Maus auf die Schiene oder Maus auf den Wagen ? 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Der Umbau II Entfernen aller Komponenten vom Mausgehäuse Aussägen der Halterung für die Codierscheibe und eine nicht Verwendete Markieren der Position der Halterungen auf dem Wagen Position ist abhängig von der Achse 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Der Umbau III Durchbohren des Wagens zur Achse Halterungen mit Heißkleber befestigen Auslöten der LED´s aus der Hauptplatine und auf Trägerplatine (1cm x 1cm) löten Verbinden der Träger- platine mit der Hauptplatine und in Halterung stecken 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Der Umbau IV Hauptplatine festkleben Keilriemen aufziehen (von Handschuh) Batterien anschließen 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Der Umbau V => Fertig !! 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Aufgetretene Probleme und Erkenntnisse Bei höheren Geschw. Wegverlust (Datenverlust) Resultierend aus der Trägheit der Diode => Übersetzung durch einen Keilriemen, anstatt Direktmontierung auf der Achse Verlust aufgrund von Schlupf sollte vernachlässigbar sein 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Weitere Erkenntnisse Optische Maus nicht geeignet Durch Beschaffenheit der Gleise Abstand Gleise – Mausoptik Aufbau der Messeinrichtung auf der Lokomotive nicht geeignet Wegen Platzmangel 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Kommunikation mit dem JAVA-Programm Shared Memory Segment (-) TCP (+) UDP (++) 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper UDP Anforderungen die wir stellen: Kurze Nachrichten versenden (+) Schnell und unkompliziert einzurichten (+) Schneller Transport Wiederholen der Anfrage bei keiner Antwort => UDP Verbindung 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

UDP Programm Aufbau (Client/Server) Erzeugen eines Sockets ( Socket (...) ) Binden des Sockets an den gewünschten Port ( bind(...) ) Abrufen des nächsten Pakets Mit recv(...) (Thread blockiert) Inhalt interpretieren Ggf. antworten ( send(...) ) 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

PAP für Kommunikation und Auswertung 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Quellcodebeispiele zur Kommunikation Client/Server: while( rc != SOCKET_ERROR ) { rc = recv(connectedSocket,buf,256,0); //Empfangen der Daten(Anforderung) ........ empfang[rc]='\0'; //Zur Vorsorge Terminieren if( 0 == strcmp(empfang,"99999") ) anfrage = true; //Setzen das es eine Anfrage gibt while( ready != true ) //Wartet bis das Ergebnis berechnet ist } rc = send(connectedSocket,ergebnis,strlen(ergebnis),0); ready = false; anfrage = false; if( 0 == strcmp(empfang,"0815") ) //Beendet den Server break; 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Messdatenauswertung I eine Runde 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Messdatenauswertung II Mittel von 10 Runden 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Messdatenauswertung III Gleis 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

Erkenntnisse und Zukunftsperspektiven Hinreichend genaue Messergebnisse Trägheit der Dioden setzen Grenzen Abweichungen pro Runde im Bereich von 9-20 Pixel entspricht 3-7mm Perspektiven Stromversorgung über Gleisanlage Umbau der Messeinrichtung auf die Lok 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper

VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper Quellen http://www.c-programming.de/ http://www.thesycon.de http://ac16.uni-paderborn.de/arbeitsgebiete/messtech/elektro_grundlagen/usb/index.html http://www.microsoft.com 15.05.2003 VPDV – Geschwindigkeitsmessung @ by D. Pötz / D. Pröpper