Hallo Zusammen, gibt es hier im Forum ein paar Leute, die sich gut mit java auskennen? Für einen kleinen Selbstbau Logik Analysator Beitrag "Logic Analyser mit Pollin CPLD Board" möchte ich eine Java-PC-Oberfläche anpassen http://www.sump.org/projects/analyzer/downloads/la-src-0.8.tar.bz2 Jetzt stellt sich die Frage, wie man das am besten macht. Die Klasse für die Kommunikation mit der Hardware über die serielle Schnittstelle heist "Device.java". Dort gibt es ein Funktion "run()" welche die Konfiguration zum Logikanalysator überträgt und von dort die Messdaten abholt. Jetzt könnte ich einfach die "run()" Funktion per Spaghetticode-Eingriff verändern. Damit scheinen mir allerdings die Vorteile der Objektorientierten Programmierung vertan. Wie kann man es besser machen? Besten Dank im Vorraus für die Hilfe, befro
Hm.. also ich kenn mich shcon etwas besser mit Java aus ;) Naja der Code ist nicht soooo optimal aufgebaut das könnte man besser machen, z.B. durch eine Abstrakte Klasse, egal. Objektorientierter Ansatz: Du erstellst eine Klasse
1 | public class MyDevice extends Device { |
2 | private void blabla() { |
3 | //Meine Tolle Extra funktion
|
4 | }
|
5 | |
6 | @Override |
7 | public CapturedData run() throws IOException, InterruptedException { |
8 | //Tue etwas...
|
9 | |
10 | |
11 | }
|
12 | }
|
Jezt müßtest du schauen wo das Device erzeugt wird und dort einfach dein "MyDevice" erzeugen, oder als zusätzliche Auswahl hinzufügen, oder oder oder ;) Wenn du willst könnt ich dich da etwas unterstützen, habe aber selber leider kein Pollinboard um das Aktiv zu testen (könnte höchstens versuchen das auf nem Spartan3 zu portieren)
Hey, super, das klingt gut. >Jezt müßtest du schauen wo das Device erzeugt wird und dort einfach dein >"MyDevice" erzeugen, oder als zusätzliche Auswahl hinzufügen, oder oder >oder ;) Hmm, könnte man dann nicht genausogut einfach die Funktion "run()" durch eine Funktion "run2()" in Device ersetzten? Ich werde mal versuchen herauszufinden, wo die Klase Device instanziert wird. >Wenn du willst könnt ich dich da etwas unterstützen, habe aber selber >leider kein Pollinboard um das Aktiv zu testen (könnte höchstens >versuchen das auf nem Spartan3 zu portieren) Darüber würde ich mich sehr freuen. Ich würde gerne der Einfachheit halber erst einmal eine Simulation einbauen, sodass das Programm auch ohne angeschlossene Hardware laufen kann, d.h. die Funktion run() kann einfach mal künstlch erzeugte Werte zurückgeben.
Hallo Läubi, dank Deines Tipps bin ich schon mal ein Stück weiter gekommen. Ich habe ein neues Device "SimualatedDevice" erstellt. Es muss in der Klasse "DeviceController" eingebunden werden. Das Javaprogramm läuft damit. Es werden die Zählersignale auf dem Bildschirm bei einer Abtastfrequenz von 1Khz dargestellt.
1 | package org.sump.analyzer; |
2 | import java.io.IOException; |
3 | |
4 | public class SimulatedDevice extends Device { |
5 | @Override |
6 | public CapturedData run() throws IOException, InterruptedException { |
7 | int samples = 512; |
8 | int[] buffer = new int[samples]; |
9 | |
10 | int n; |
11 | for(n=0;n<samples;n++) buffer[n]=n; |
12 | int pos=0; |
13 | int rate=1000; // Hz |
14 | int channels=8; |
15 | return (new CapturedData(buffer, pos, rate, channels, channels)); |
16 | }
|
17 | }
|
Hier die Version 1.0 des Java-Programms. Es ist ein Eclipse-Projekt. Leider weiss ich nicht, wie man es für den Desktop ausführbar macht. Das Programm funktioniert, das Jedec-File für das Pollin-CPLD ist auch enthalten. Es werden im Moment nur 128 Werte übertragen und die Abtastrate ist fest auf 2MHz eingestellt.
Aaah ja, man findet die sourcen dort, wenn man ins SVN geht .. z.b. über http://jlac.cvs.sourceforge.net/viewvc/jlac/client/
Hallo Frank, meine Sourcen habe ich von http://www.sump.org/projects/analyzer/downloads/la-src-0.8.tar.bz2 heruntergezogen. Ich nehme an, Du bist einer der Entwickler, die auf Sourceforge arbeiten. @Jörg >Aaah ja, man findet die sourcen dort, wenn man ins SVN geht .. z.b. über >http://jlac.cvs.sourceforge.net/viewvc/jlac/client/ Auf der Sourceforgeseite kann man sich nur die einzelnen Files runterziehen, was ich ziemlich mühselig finde. Hier wäre es besser, wenn man das Packet als ganzes ( wie sonst auf Sourceforge üblich ) herunterziehen könnte. So weit ich es einschätzen kann, sind die Sourcen auf Sourceforge tatsächlich neuer, weil bei den Devices ein zweiter Logikanalysatortyp eingebunden wird. An die Java-Experten: Wie mache ich aus meinem Eclipseprojekt ein JAR-File bei dem auch RXTX schon eingebunden ist und eine start.bat Datei, sodass die User das Ganze einfach durch Mausklick ohne große Installation starten können?
Das geht so einfach nicht... Du kannst dir aber JSmooth runterladen, dort das RXTX Paket als zusätliche Libary einbinden, dann muß man nurnoch das RXTX Paket+DLL und die erzeugte Exe in einem Ordner sein.
>Das geht so einfach nicht... Meinst Du wirklich? Ich glaube Malte hat es mit seinem Programm ganz gut geschaFft http://www.mikrocontroller.net/attachment/48244/DSOControl-0.01.zip blos weis ich leider nicht, wie man Eclipse dazu überredet, das ganz Projekt inclusive RXTX zu exportieren um es ähnlich wie Malte hinzukriegen.
Was Malte gemacht hat ist das ganze als ZIP Datei zu exportieren... klar ist das "eine Datei" aber ausführen durch Doppelklick ist da nicht. Wenn du es so wie Malte machen willst, warum nimmst du dann nicht seins als Vorlage? Da ist ja sogar schon ne BatchDatei incl. Aufruf dabei...
abo ...weil ich das Pollin board bestelle und Java nun schon seit Ewigkeiten programmiere. Mal sehen ob ich was weitermachen kann. Gruss Micha
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.