Nach parse von String zu Integer verliere ich Programmablauf!

Onliner

Mitglied
Hallo an alle ,

ich bin am Verzweifelt.
Ich arbeite mit einer Serieller Kommunikation. Dieser part funktioniert auch perfekt aber wenn ich mit den Werten arbeiten will bekomme ich zeitliche / synchron? Probleme!

Hier erst mal die Codes :

Wenn ein Signal von der Serielle Schnittstelle kommt reagiert diese Klasse! Er ruft bei vorhandene Daten als erstes einen Text an die Konsole und ruft die Methode serialPortDatenVerfuegbar().!

Java:
 class serialPortEventListener implements SerialPortEventListener {
		@Override
		public void serialEvent(SerialPortEvent event) {
			System.out.println("serialPortEventlistener");
			switch (event.getEventType()) {
			case SerialPortEvent.DATA_AVAILABLE:
				serialPortDatenVerfuegbar();
				break;
			case SerialPortEvent.BI:
			case SerialPortEvent.CD:
			case SerialPortEvent.CTS:
			case SerialPortEvent.DSR:
			case SerialPortEvent.FE:
			case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
			case SerialPortEvent.PE:
			case SerialPortEvent.RI:
			default:
			}
		}
	}
Bis hierher funktioniert auch alles denn in der Eclipse Konsole erscheint auch der Text!

So nun die Methode. Hier wird der InputStream (Es sind Zahlen von 1-1000) ausgelesen und in einem String zusammengesetzt! um die einzelnen Bytes wieder in einem Wert zu sammeln! contwert ist im oberen Teil meines Scrips als String definiert! Nach dem keine weitere Bytes kommen verlässt er die while schleife und gibt einmal in der Console den String aus! Bis hierher TOP! nun kommt mein Problem ich parse den String in einen Integer damit ich damit arbeiten kann! und rufe die methode Spiel501() auf!
Java:
void serialPortDatenVerfuegbar() {
		try {
			byte[] data = new byte[150];
			int num;
			while(inputStream.available() > 0) {
				num = inputStream.read(data, 0, data.length);
				contwert = (new String(data, 0, num));	
			}
			System.out.println("Empfange: "+ contwert); 
			zahlwert = Integer.parseInt(contwert);
			Spiel501();
			
		} catch (IOException e) {
			System.out.println("Fehler beim Lesen empfangener Daten");
		}
	}

mit der Methode mache ich nichts anderes wie die Buttons mit neuen Werten zu beschreiben! (gleich vorab alle Buttons mit Panel sind definiert und funkt auch alles!)

Java:
 public void Spiel501() {
		feld.setText(""+beginn);
		feld1.setText(""+contwert);
		feld2.setText(""+zahlwert);
	}

Mein Problem ist das wenn ich den Wert parse das Feld2 nicht neu beschrieben wird. Als Test habe die umwandlung entfernt und beide buttons(feld1 und feld2) den contwert (String) anzeigen lassen und das hat auch wunderbar geklappt. Nur sobald ich umwandle verliere ich die setText funktion von feld2.!! Ich komme nicht mehr weiter weil ich verstehe nicht warum. Ich kann mir nicht vorstellen das die Umwandlung so intesiv ist das dadurch der Programmablauf nicht mehr funktioniert. (weil das er die Umwandlung macht weiß ich weil wenn gleich nach dem ersten Signaleingang (treffer) ein zweites leeres Signal(preller) kommt schreibt er den Button feld2 neu mit dem wert davor! Also wie wenn er ein part hinterherhängt.)

ich habe eigentlich noch mehr mit dem Wert vor. Der Wert soll noch benützt werden um einen anderen Wert aus einem Array zu holen und ich möchte damit noch rechnen!

Ich hoffe ihr könnt mir helfen!

Liebe Grüße aus dem Schwarzwald
 

madboy

Top Contributor
Nur sobald ich umwandle verliere ich die setText funktion von feld2.!! Ich komme nicht mehr weiter weil ich verstehe nicht warum. Ich kann mir nicht vorstellen das die Umwandlung so intesiv ist das dadurch der Programmablauf nicht mehr funktioniert. (weil das er die Umwandlung macht weiß ich weil wenn gleich nach dem ersten Signaleingang (treffer) ein zweites leeres Signal(preller) kommt schreibt er den Button feld2 neu mit dem wert davor! Also wie wenn er ein part hinterherhängt.)
???:L

Wie kannst du eine Funktion verlieren und was genau funktioniert nicht? Bitte noch mal langsam und mit KSKB wenn möglich.


Btw: es gibt auch noch andere Satzzeichen außer dem Ausrufezeichen (Kommata und Konsorten). Ist sehr anstrengend zu lesen.
 

Onliner

Mitglied
Hey,

Ich will es versuchen und hoffe du meinst mit KSBS kurze sachliche Beschreibung. Ich weiß nicht wofür das stehen soll. Sorry

Also ich möchte den Wert wo ich über die Serielle Schnittstelle bekomme wie folgt verwenden.

1. Anzeigen des Wertes auf ein Button
2. Diesen Wert benützen um auf ein array zuzugreifen
3. Diesen Wert benützen für eine Rechenaufgabe

Punkt 1 funktioniert ganz problemlos weil ich den String problemlos als setText benützen kann und dies geschieht auch sofort nach erhalt.

für punkt 2 und punkt3 benötige ich einen Integerwert und hier kommt mein Problem, wenn ich nun den String mit Integer.parseInt umwandle und mir dann auf dem Button anzeigen lassen will passiert es aber nicht!
 
Zuletzt bearbeitet:

nazar

Mitglied
Hast du über "System.out." schonmal geschaut ob "zahlwert = Integer.parseInt(contwert);" überhaupt funktioniert? Da du dich nur über die Buttonanzeige beschwerst und ich nicht rauslesen kann, dass der Wert nicht da ist, kannst du doch auch einfach den String als Name anzeigen lassen.
Die Buttonanzeige scheint nicht das Problem zu sein, sondern dein Umwandlungsbefehl.
Dein Befehl sieht für mich korrekt aus, aber du kannst ja mal double "zahlwert=Double.valueOf( contwert ).doubleValue();" ausprobieren und schauen ob ne Zahl rauskommt.
 

Onliner

Mitglied
Hey

das es funktioniert weiß ich daher das wenn ein leerer String hinterkommt durch Preller zeigt es den Wert an und ich die Rechnung wird vollzogen.

ach und danke für den hinweis mit dem KSKB. Jetzt weiß ich was es bedeutet.

Aber mehr kompromieren also kleiner kann ich nichts machen. Die klasse serialPortEventListener und die Methode serialPortDatenVerfuegbar() sind bestandteil der Klasse OeffnenundSenden und zuständig das ich überhaupt seriell kommunizieren kann. Mein eigener Script ist nur die Methode Spiel501. Und um die Sache nicht zu komplizieren habe ich diese in der OeffnenundSenden Klasse untergebracht um erst mal den Umgang mit den Daten zu verstehen.

Ich werde vermutlich mich erst mal auseinander setzen müssen mit dem InputStream zu arbeiten wo ich mich bereits schon beschäftige und dazu habe ich bereits eine Frage!

Frage 1:
Wie die Daten wo am PC ankommen codiert werden hängt wo von ab? Vom Sender (Controller) oder von Java intern?

Danke schon mal im Voraus
 

nazar

Mitglied
Du drückst dich etwas unglücklich aus und es wird mit keinem Post klarer. Da wir keine volle Einsicht in den Code haben ist Hilfe somit schwer. Wenn ich z.B. Preller google stoß ich auf nix sinnvolles.

Zu der letzten Frage:
Wie und wohin Java die Daten sendet kommt drauf an was du Java gesagt hast. =)
Lies da mal die Java Insel Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 14 Dateien und Datenströme
oder kurz Java I/O für ne Übersicht über das Thema.

Also, was ich bisher von deinem Problem verstanden hab:
- Du hast einen Button dem du einen Namen zuweisen willst.
- Der Wert der dem Buttonnamen zugewiesen werden soll ist ein Integer.
- Der Integer ist vorhanden. (System.out. oder beim debuggen durchsteppen würde da Klarheit verschaffen, aber du bist dir ja sicher)
- "feld1.setText(""+contwert);" beschreibt den Button.

Der Befehl MUSS klappen wenn contwert vorhanden ist. Dann wird der Integer nämlich mit "" zu einem neuen String zusammengesetzt.

Daraus folgt entweder, dass ich bescheuert bin oder du dein Problem noch nicht kennst. :X
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Prellen dürfte mit Hardware zu tun haben - Kontakt prellen
Drücken -> String kommt.
Kontakt prellt noch X mal -> Leerstrings kommen.

Ach ja, was ist nun mit dem KSKB?
 
Zuletzt bearbeitet:

Onliner

Mitglied
Hey,

Ich habe einen Dartautomat via Arduino Controller mit dem PC verbunden. Die kommunikation untereinander ist seriell. Preller ist wie schon gesagt Hardware bezogen.

Weiteren Quelltext zu veröffentlichen macht keinen Sinn weil der Rest hierfür nicht benötigt wird. Wie zum Beispiel Öffnen Port und so weiter. Alles was nötig ist habe ich bereits veröffentlicht. Mein problem liegt schuss endlich einfach nur an der Konvertierung.

Hier die kleinste Variante!
Java:
void serialPortDatenVerfuegbar() {
		try {
			int num;
			int zahlwert=0;
			byte[] data = new byte[150];
			//Wenn Daten vorhanden schleife durchlaufen!
			while(inputStream.available() > 0) {
				//Hier lese ich den Inputstream aus!
				num = inputStream.read(data, 0, data.length);
				//Hier füge ich alle empfangene Daten in einen String
				contwert = (new String(data, 0, num));
			}
			//Zum Testen lasse ich mir den String an der Console ausgeben!
            System.out.println("Empfange: "+ contwert); 
            
            //Hier konventiere ich den String in einen Integer 
            zahlwert = Integer.parseInt(contwert);
            
            //Zum Testen lasse ich mir den Integer an der Console ausgeben!
            System.out.println("Empfangen: "+zahlwert);
            
            //Zur Kontrolle lasse ich mir den String an der Console ausgeben!
            System.out.println("Wiederholung: "+ contwert); 
            
		} catch (IOException e) {
			System.out.println("Fehler beim Lesen empfangener Daten");
		}
	}

Wenn ich nun ein Pfeil auf Automat werfe gibt er mir nur das erste System.out.println.

Blende ich die Zeile 17 mit // aus bekomme ich alle drei System.out.println.

Anders bekomme ich mein Problem nicht mehr erklärt! Ich bin einfach zu lange schon mit dem Projekt beschäftigt das für mich manche Dinge zu selbstverständlich sind! SORRY NOCHMAL!
 

Onliner

Mitglied
hallo

also über Umwegen bin ich zu einer Lösung gekommen! Eigentlich war der Tipp für nützer des Programms Proccesing. Da es aber ja auf Java basiert habe ich es probiert und hier die Lösung.

"ich muss den String erst in einen Float und danach in einen Integer konventieren!"

Somit funktioniert es jetzt!

Java:
 void serialPortDatenVerfuegbar() {
		try {
			int num;
			int zahlwert=0;
			float var;
			byte[] data = new byte[150];
			//Wenn Daten vorhanden schleife durchlaufen!
			while(inputStream.available() > 0) {
				//Hier lese ich den Inputstream aus!
				num = inputStream.read(data, 0, data.length);
				//Hier füge ich alle empfangene Daten in einen String
				contwert = (new String(data, 0, num));
			}
			//Zum Testen lasse ich mir den String an der Console ausgeben!
            System.out.println("Empfange: "+ contwert); 
            
            //Hier konventiere ich den String in einen Float 
            var = Float.parseFloat(contwert);
            
            //und hier den Float in einen Integer
            zahlwert = (int)var;
            	
            //Zum Testen lasse ich mir den Integer an der Console ausgeben!
            System.out.println("Empfangen: "+zahlwert);
            //Hier eine kleine Rechnung
            int Restwert = 501-zahlwert;
            //Zur Kontrolle lasse ich mir den String an der Console ausgeben!
            System.out.println("Wiederholung: "+ Restwert); 
            
		} catch (IOException e) {
			System.out.println("Fehler beim Lesen empfangener Daten");
		}
	}

Da ich noch absoluter Neuling bin würde ich mich über eine Erklärung(wieso der Umweg) sehr freuen!

Vielen Dank an alle!

Gruß Patrick
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
L 2 Dimensionale ListArray Abfrage nach einem Wert suchen Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
G Geotools Probleme nach PC-Wechsel Allgemeine Java-Themen 6
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
I In Java geschriebene Software nach Mac OS portieren Allgemeine Java-Themen 7
M TicTacToe Sound nach jedem Zug Allgemeine Java-Themen 21
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
J4n5chmiddi Methoden Website-URL im Browser öffnen nach erfolgreicher Basisauthentifizierung in Java Allgemeine Java-Themen 12
pkm Frage nach eventuellem syntaktischen Zucker bei der Konkatenation von ArrayLists Allgemeine Java-Themen 4
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
H Collections Aktuellen Index generell und nach Sortierung ausgeben Allgemeine Java-Themen 6
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
W Pdf verwerfen, weil Checkbox nach Unterschrift geaendert wurde Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
M Java 8 nach Java 6 konvertieren Allgemeine Java-Themen 7
N Neustarten des Codes nach der Fehlermeldung Allgemeine Java-Themen 17
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
J Jasper Reports - Compilerproblem nach Umstellung von Groovy auf Java Allgemeine Java-Themen 7
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
L Korrektur nach der Berechnung vornehmen, aber wie? Allgemeine Java-Themen 11
C Config nach bestimmten Wertdurchsuchen. Allgemeine Java-Themen 2
B Suche nach einem Testprogramm für meine BA Allgemeine Java-Themen 0
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
D BufferedReader bricht nach 1248 Iterationen ab Allgemeine Java-Themen 14
G Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
F Zurnung nach Buchstaben und deren Prüfung Allgemeine Java-Themen 9
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
MiMa Sortieren nach Stellenangaben Allgemeine Java-Themen 7
L Erste Schritte Liste von Datums filter nach Monate Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
J Ausgabe von Links nach Rechts ausgeben? Allgemeine Java-Themen 2
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
The Pi 2D-Grafik Tic Tac Toe nach Gewinn rot Allgemeine Java-Themen 1
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
L Suche nach CalDav Server API Allgemeine Java-Themen 0
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
K Auf einer Website nach einem String suchen Allgemeine Java-Themen 5
C Eclipse OutOfMemory nach dem exportieren Allgemeine Java-Themen 4
D Erste Schritte Array von einer forschleife nach ausserhalb trasferieren Allgemeine Java-Themen 3
VfL_Freak Große und seltsame Probleme nach Java-Update auf V1.8.0_91 Allgemeine Java-Themen 3
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
D Java Datei nach Eclipse Export funktioniert nicht Allgemeine Java-Themen 0
B Bild aus Jar kann nach Export nicht mehr gefunden werden Allgemeine Java-Themen 13
B Umgebungsvariable Anpassen der Umgebungsvariablen nach Java-Update ? Allgemeine Java-Themen 14
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
E Java wird beendet nach paar Sekunden Allgemeine Java-Themen 14
H Best Practice setHeader in jsp nach RequestDispatcher.include Allgemeine Java-Themen 0
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
M .jar nach Datei prüfen Allgemeine Java-Themen 2
F String nach Schlüsselwörtern durchsuchen und ganze Zeile ausgeben Allgemeine Java-Themen 4
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
VfL_Freak JDK installieren Problem mit Erstellungspfad nach Wechsel von Java7 auf Java8 Allgemeine Java-Themen 1
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5
thet1983 nach teilen eines Dateinamens suchen Allgemeine Java-Themen 6
F JLabel nach 5 Sekunden wieder leeren Allgemeine Java-Themen 7
M Fasta nach Mustern durchsuchen dauert zu lange Allgemeine Java-Themen 2
J Bilder halb in falscher Farbe nach kopieren aus Web Allgemeine Java-Themen 3
Thallius Neuen Prozess starten, der auch nach Beedingung des Starter-Prozesses weiterläuft? Allgemeine Java-Themen 5
T Nach Java Update: Jar Datein öffnen sich nicht mehr mit doppelklick Allgemeine Java-Themen 3
S Start des zweiten Threads erst nach Beenden des ersten Threads Allgemeine Java-Themen 13
A Funktionen aufrufen nach Schema x Allgemeine Java-Themen 2
G JavaFX Problem nach Update auf Java 8 Allgemeine Java-Themen 0
AssELAss String jeweils nach x Zeichen Zeilenumbruch Allgemeine Java-Themen 1
F E-Mail aus JAVA senden nach Umstellung auf Netbean 7.4 mit Java 7U45 nicht mehr möglich Allgemeine Java-Themen 4
J Ausgabe nach Excel Allgemeine Java-Themen 1
K PCM_UNSIGNED nach PCM_SIGNED Allgemeine Java-Themen 0
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
AssELAss Zeilenumbruch immer nach bestimmtem Zeichen Allgemeine Java-Themen 1
L Strings nach sortiertem String zurück ordnen Allgemeine Java-Themen 0
A Java - Suche nach Datensatz mit DateChooser Allgemeine Java-Themen 0
L Strings nach gleichem Muster ordnen Allgemeine Java-Themen 4
F Nach Export wird PDF Datei nicht mehr gefunden Allgemeine Java-Themen 0
K Sortieren nach Vorgabe Allgemeine Java-Themen 6
G nervendes Problem mit unterschieden zwischen Javax64 und x86 | je nach Programmbedarf beides nötig Allgemeine Java-Themen 2
L nach form submit textfeld an java übergeben? Allgemeine Java-Themen 2
L iText PDF Form-Felder werden nach Bearbeitung mit iText nicht mehr richtig erkannt. Allgemeine Java-Themen 2
C Objekt Datenverlust nach Methodenaufruf Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben