Hallo!
Im zuge unseres Maturaprojekts versuchen wir mittels eines am Fahrzeug angebrachten Beschleunigungssensors die Geschwindigkeit des Fahrzeugs extern und permanent zu ermitteln. Das funktioniert so: Der piezoresistive Beschleunigungsmesser gibt für eine bestimmte Beschleunigung eine bestimmte Spannung aus. Diese wird auf ein hochfrequentes Signal moduliert, gesendet und dann beim Empfänger wieder demoduliert. Über einen 10-Bit A/D-Wandler wird nun dieses Signal seriell dem Computer zugeführt - und dort beginnt dann mein Teil der Arbeit. Das Signal muss eingelesen werden und verschiedene Parameter müssen errechnet werden. Diese Parameter sollen dann auf einer schön gestalteten Benutzeroberfläche ausgegeben werden (eventuell auch auf externe Anzeige).
Meine Frage ist nun: Mit welcher Programmiersprache ist das am einfachsten zu realisieren? Ich weiß, dass die Benutzeroberfläche sehr einfach in Java programmierbar ist, jedoch diese Sprache nicht sehr maschinennahe ist, sodass Probleme beim Einlesen der seriellen Daten auftreten könnten. C++ wieder hätte mit dem Einlesen keine Problem, jedoch wäre mir der Rest zu anstrengend.
Welche ist die beste Sprache?
-
-
Da müsste es ja eine Möglichkeit geben, das Ganze auf die 2 Komponenten aufzuteilen...
Nun ja, als nicht unbedingt der Programmierprofi fallt mir jetzt außer Dateien, die sich möglicherweise nicht wirklich gut dazu eignen, kein eleganter Weg des Datenaustauschs ein, also, wer hilft mir mal kurz?
Weil eine maschinennahe Sprache, die viel komfortabler ist als C++, naja, also, irgendwie gibts da auch nicht so viel Auswahl...
-
Ich würd eine Mischung aus c (Hardware-Teil) und c++ (User Interface) machen... mit dem gtk in c++ isses in etwa so angenehm/unangenehm eine GUI zu programmieren wie mit awt/swing in java. Die Zusammenarbeit zwischen User Interface und dem Rest wäre aber erheblich einfacher.
Wenn allerdings das Eingangssignal als "normaler" Datenstrom über den seriellen Port daherkommt, müsste es auch in java recht einfach gehen, weil man dann ja davon lesen kann wie von einer normalen Datei. -
Ich würd C# mit dem Visual Studio .NET dafür nehmen (jaja Microsoft buuu), hab die SE1-Übung damit gemacht (und quasi von NULL angefangen, da meine letzten Programmiertätigkeiten schon ein paar Jährchen zurücklagen bis auf EPROG in Java).
Ich finde, das hat folgende Vorteile:
man kann C#, C++ und Visual Basic (letzteres is aber nix für richtige Männer) einfach miteinander kombinieren, weil das Visual Studio .NET dafür vorgesehen ist
Die Benutzeroberfläche kann man ganz einfach zeichnen und zusammenbasteln (wie in vielen anderen Programmen ja auch wie z.B. Borland (J++. C++)
Für die Formulare gibts so mächtige Komponenten wie z.B. das dataGrid (aber das is wohl mehr was für Datenbanken und so)
C# ist einfach genial (Java und C++ in gewisser Hinsicht auch aber C# ist doch am geilsten)ich denke, mit dem Ding kommst Du am schnellsten zu einer Lösung
BTW - ein paar Absätze im Text würden nicht schaden, die paar Bytes vertrag ma schon noch
-
Ich hab beschlossen das ganze in Java zu programmieren. Die Hardware-Komponente wäre dann wohl am leichtesten mit den sog. Native Interfaces zu realisieren. Dort kann ich ja dann praktisch in C++ arbeiten. Weiß irgendwer, ob und wo es vielleicht fertige Programmbeispiel oder -teile über die Einbeziehung der seriellen Schnittstelle gibt?
Danke
Soxios -
Von der seriellen Schnittstelle solltest du wie von einem File lesen können... unter Windows sollte der Dateiname COM1 bzw. COM2 etc sein (good old DOS *g*), je nachdem halt.... unter linux sollte die serielle als /dev/ttyS0 oder /dev/ttyS1 etc zu finden sein. Das schreiben auf den parallelen Port kann man auf alle Fälle so machen.
-
Hardwaremäßig ist ja da nix zu machen. die serielle Schnittstelle wird dann einfach über die vom jeweiligen System zur Verfügung gestellten API angesprochen. Sowas würde ich mit gewöhnlichen Standard-Entwicklungs-Umgebungen machen (C++: MS-VS, BCB, Java: NetBeans, Pascal: Delphi, Kylix)
MfG, Michael -
ohne bitmanipulationen hardware-interfaces machen ist eine ziemlich aussichtslose sache...
edit: ich kenn bitsets, nur wenns direkt in der sprache eingebaut ist, isses viel einfacher zu verwenden und hat weniger overhead. und C-structs mit bitfields sind schon extrem praktisch (ich sprech aus erfahrung)
-
Zitat von Soxios
Ich hab beschlossen das ganze in Java zu programmieren. Die Hardware-Komponente wäre dann wohl am leichtesten mit den sog. Native Interfaces zu realisieren. Dort kann ich ja dann praktisch in C++ arbeiten. Weiß irgendwer, ob und wo es vielleicht fertige Programmbeispiel oder -teile über die Einbeziehung der seriellen Schnittstelle gibt?
Danke
Soxiosich glaube was Du suchst ist die javax.comm API .
Damit habe ich schonmal gearbeitet, funktionierte einwandfrei.
Eine kleine googlesuche hat auch eine kleine Einführung
zu Tage gebracht.Ich hoffe das hilft Dir weiter.
Bejo
-
Ich empfehle dir in dem Fall Visual Basic, denn da hast du schon ein fix und fertiges Steuerelement für die serielle Schnittstelle inkludiert, und brauchst dich nicht um den Kleinkram kümmern. Außerdem ist eine Benutzeroberfläche mit VB um einiges leichter zu machen als z.B. mit Java (finde ich). Und noch ein Vorteil: es ist wohl eine der leichteren Sprachen (zum erlernen).
Auch wenn es viele Gegner zu VB gibt, ich mag sie ganz gernHab das Zeug ja auch schon mal für ein Projekt verwendet und hat wirkl. einwandfrei funktioniert!!!!
lg
-
VB für serielle Kommunikation hab ich in der Schule mal in einem Projekt verwendet. Wir ham alle 0.5 sec 5 verschiedene Temperaturmesswerte auslesen müssen und in einer Tabelle speichern. Im Endeffekt war das Ding dann so langsam, dass wir nur alle 2-5 sec einen Wert bekommen haben, und das ganze Ding zum schmeißen war
Zum Programmieren gings allerdings ziemlich gut, das stimmt. -
Es stimmt schon, dass VB nicht die schnellste Sprache ist (vor allem im Vergleich zu C oder C++) aber dass es schon bei 0.5sec regelmäßigen Tätigkeiten in die Knie geht? - Vor allem bei sowas wie Messwerte auslesen????
Also ich hab ein Programm geschrieben, wo alle 700ms 2 Bilder verglichen werden: da merkt man es dann natürlich schon...
lg
-
das problem war vor allem glaub ich, dass die daten in eine excel-tabelle via OLE gespeichert wurden, das hat dieser Pentium 1 damals nicht verkraftet (was besseres gabs in der schule damals nicht).
-
also ich weiss zwar net wie oft du die daten auslesen willst (also wie aktuell die sein sollen) aber bei allem was irgendwie von zeit abhängig ist, würd ich eher zu was elementareren greifen als java (vb is genauso lahm)
obwohl ich ein ziemlich java-fan bin (oder auch sandkastenprogrammierer *g*) würd ich für sowas net unbedingt zu java greifen
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!