Shuddi Geschrieben December 29, 2015 at 06:45 Geschrieben December 29, 2015 at 06:45 Hi, ich habe folgendes "Problem": Ich habe einen Masterbrick mit einem LCD 20x4 Bricklet und kann mein Programm aus mir unerfindlichen Gründen nur im Debug-Modus ausführen. Grundsätzlich besteht mein Programm nur aus Textausgabe aufs Bricklet und einem ButtonPressedListener der auf Tastendruck den Cursor bewegen soll. Im Debug-Modus funktioniert soweit alles.. aber sobald ich das Programm normal ausführen will (mit Eclipse aber auch mit javac über die Konsole), wird der Tastendruck zwar erkannt (Ausgabe auf Konsole) aber sonst passiert nix. Hat von euch evtl. jemand eine Idee? Danke schonmal und LG Zitieren
remotecontrol Geschrieben December 29, 2015 at 10:36 Geschrieben December 29, 2015 at 10:36 Vermutlich endet Dein Programm im "Normalbetrieb" direkt wieder. Du solltest die Sourcen mal mit posten. Zitieren
Shuddi Geschrieben December 29, 2015 at 12:21 Autor Geschrieben December 29, 2015 at 12:21 Ja, vermutlich bin ich Betriebsblind oder sowas in der Art.. Ende beim normalen run ist der.. lcd.writeLine((short)0, (short)2, "Hallo!"); lcd.writeLine((short)1, (short)2, "1. Starten"); lcd.writeLine((short)2, (short)2, "2. Beenden"); lcd.writeLine((short)1, (short)0, ""); lcd.setConfig(false, true); ..mehr tut sich dann nicht mehr. public static void main(String args[]) throws Exception { try{ IPConnection ipcon = new IPConnection(); // Create IP connection BrickletLCD20x4 lcd = new BrickletLCD20x4(UID, ipcon); // Create device object ipcon.connect(HOST, PORT); // Connect to bricked lcd.clearDisplay(); lcd.backlightOn(); lcd.writeLine((short)0, (short)2, "Hallo!"); lcd.writeLine((short)1, (short)2, "1. Starten"); lcd.writeLine((short)2, (short)2, "2. Beenden"); lcd.writeLine((short)1, (short)0, ""); lcd.setConfig(false, true); // Add button pressed listener lcd.addButtonPressedListener(new BrickletLCD20x4.ButtonPressedListener() { public void buttonPressed(short button) { System.out.println("Button Pressed: " + button); switch (button){ case 0: BUTTON0 = true; break; case 1: BUTTON1 = true; break; case 2: BUTTON2 = true; break; case 3: BUTTON3 = true; break; } } }); //Schleife while(EXIT != true){ //runter if(BUTTON2 == true){ cursor++; if(cursor > 2){ cursor = 1; } lcd.writeLine((short)cursor, (short)0, ""); BUTTON2 = false; } //rauf if(BUTTON1 == true){ cursor--; if(cursor < 1){ cursor = 2; } lcd.writeLine((short)cursor, (short)0, ""); BUTTON1 = false; } //OK if(BUTTON3 == true){ switch(CursorPosition(cursor)){ case 1: BUTTON3 = false; cursor = 1; RunPennyBank(lcd); break; case 2: EXIT = true; BUTTON3 = false; break; default: break; } } //Beenden if(BUTTON0 == true){ EXIT = true; } }//while lcd.clearDisplay(); lcd.backlightOff(); System.out.println("Press key to exit"); System.in.read(); ipcon.disconnect(); }//try catch(Exception e){ System.out.println("Exception"); System.in.read(); } //catch }//main Zitieren
remotecontrol Geschrieben December 30, 2015 at 06:24 Geschrieben December 30, 2015 at 06:24 Sieht zumindest nicht so aus, als würde das Programm sofort enden. Allerdings macht die while Schleife keine Pausen, d.h. zieht 100% CPU auf einem Core. Bau mal einen Sleep von 1ms ein oder Bau es auf Semaphores um. Zitieren
Shuddi Geschrieben December 30, 2015 at 07:02 Autor Geschrieben December 30, 2015 at 07:02 Hm, das macht Sinn.. ok danke! Mal schauen was ich hinbekommen Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.