Habe ich auch so gemacht. Die Cover auf 5*5 cm verkleinert und dann ausgedruckt und auf die jeweilige RFID Karte geklebt.
VG KAMPI
Habe ich auch so gemacht. Die Cover auf 5*5 cm verkleinert und dann ausgedruckt und auf die jeweilige RFID Karte geklebt.
VG KAMPI
Display More
Ich habe mal eine Frage:
Bei mir läuft der MPD sauber, ich habe nur ein Problem beim laden von Playlisten mit dem Befehl "mpc load 'Playlistname'". Wenn in den Einträgen (Liste von MP3s) in der Playlist Umlaute vorkommen lädt er die Playlist nicht. Die Name der Playlist selber kann Umlaute enthalten. Auch kann ich die MP3s, welche Umlaute im Dateinamen haben mit "mpc add 'Dateiname.mp3'" ohne Probleme laden und abspielen. Es muss also an den Einträgen in der Playlist liegen.
Die Playlisten sind m3u Dateien und in der mpd.conf ist UTF-8 eingestellt.
Danke für eure Antworten im Voraus.
VG Christian
Habe es gerade selber rausgefunden. Hatte nicht drauf geachtet, als was die m3u Dateien gespeichert waren. Sie waren als "ANSI" gespeichert. Habe sie nun geöffnet und dann als "UTF-8" neu gespeichert. Dann funktioniert es natürlich auch mit dem Laden der Playlist im MPC.
Mfg KAMPI
So, habe jetzt durch weitere Test rausgefunden, was das Problem mit dem Python Script bzw. dessen Aufruf ist. Der komische Zeichenversatz kommt von den ersten beiden Zeilen der Initialisierungsroutine im Script. Seitdem ich die rausgenommen habe, passiert das nicht mehr.
Für mein Projekt habe ich es nun folgendermassen gelöst:
Beim Programmstart lasse ich durch das Pythonscript einmal das LCD initialisieren (damit es funktioniert, wenn es mal stromlos war) und danach nicht mehr. Dann kann ich das Script sooft aufrufen wie ich will und alles wird sauber dargestellt.
Warum das Ansteuern des Displays in C# und Mono nur im Debugger klappt und ohne nicht (was ja die eigentliche Frage in dem Thread von mir war) habe ich noch nicht herausgefunden und durch meine Lösung mit dem Python Script ist es jetzt auch nicht mehr nötig.
Ich danke allen, die mir hier mit Rat zur Seite gestanden haben!! Sehr nett von euch.
VG KAMPI
Hallo zusammen, habe heute wieder ein bisschen Zeit gefunden rumzutesten.
Habe folgendes Script, welches man vielfach im Netz findet, etwas angepasst, damit man über Argumente Sachen in eine bestimmte Zeile schreiben kann. Dabei ist mir folgendes aufgefallen. Wenn ich z.B. in Zeile 1 zwanzig Einsen schreibe und dann danach das Programm wieder aufrufe und in Zeile 2 zwanzig Zweien, dann hat das Auswirkungen auf die erste Zeile. Manchmal verschwinden dort mal ein paar Zeichen (meist 4 am Stück) oder werden durch Zweien ersetzt. Das führt sich dann fort. Wenn ich was in die dritte Zeile schreibe ändert sich auch was in den beiden vorhergehenden. Die Zeile, welche ich aktuell schreibe, wird immer richtig dargestellt. Was läuft da falsch? Ich habe schon gedacht, dass das Display einen Schuss weg hat und habe ein neues gekauft. Aber bei dem ist es das gleiche.
Hier der Code:
#!/usr/bin/python
#--------------------------------------
# ___ ___ _ ____
# / _ \/ _ \(_) __/__ __ __
# / , _/ ___/ /\ \/ _ \/ // /
# /_/|_/_/ /_/___/ .__/\_, /
# /_/ /___/
#
# lcd_16x2.py
# 20x4 LCD Test Script with
# backlight control and text justification
#
# Author : Matt Hawkins
# Date : 06/04/2015
#
# http://www.raspberrypi-spy.co.uk/
#
#--------------------------------------
# The wiring for the LCD is as follows:
# 1 : GND
# 2 : 5V
# 3 : Contrast (0-5V)*
# 4 : RS (Register Select)
# 5 : R/W (Read Write) - GROUND THIS PIN
# 6 : Enable or Strobe
# 7 : Data Bit 0 - NOT USED
# 8 : Data Bit 1 - NOT USED
# 9 : Data Bit 2 - NOT USED
# 10: Data Bit 3 - NOT USED
# 11: Data Bit 4
# 12: Data Bit 5
# 13: Data Bit 6
# 14: Data Bit 7
# 15: LCD Backlight +5V**
# 16: LCD Backlight GND
#import
import RPi.GPIO as GPIO
import time
import sys
# Define GPIO to LCD mapping
LCD_RS = 21
LCD_E = 20
LCD_D4 = 6
LCD_D5 = 13
LCD_D6 = 19
LCD_D7 = 26
#LED_ON = 15
# Define some device constants
LCD_WIDTH = 20 # Maximum characters per line
LCD_CHR = True
LCD_CMD = False
LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line
LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line
LCD_LINE_3 = 0x94 # LCD RAM address for the 3rd line
LCD_LINE_4 = 0xD4 # LCD RAM address for the 4th line
# Timing constants
E_PULSE = 0.0005
E_DELAY = 0.0005
def main():
# Main program block
GPIO.setmode(GPIO.BCM) # Use BCM GPIO numbers
GPIO.setup(LCD_E, GPIO.OUT) # E
GPIO.setup(LCD_RS, GPIO.OUT) # RS
GPIO.setup(LCD_D4, GPIO.OUT) # DB4
GPIO.setup(LCD_D5, GPIO.OUT) # DB5
GPIO.setup(LCD_D6, GPIO.OUT) # DB6
GPIO.setup(LCD_D7, GPIO.OUT) # DB7
# GPIO.setup(LED_ON, GPIO.OUT) # Backlight enable
# Initialise display
lcd_init()
count = 0
rowNumber = 0
for argument in sys.argv:
if count == 1:
if argument == '1':
rowNumber = 1
else:
if argument == '2':
rowNumber = 2
else:
if argument == '3':
rowNumber = 3
else:
if argument == '4':
rowNumber = 4
else:
if argument == '0':
lcd_byte(0x01,LCD_CMD) # 000001 Clear display
else:
if count == 2:
if rowNumber == 1:
lcd_string(argument,LCD_LINE_1,1)
else:
if rowNumber == 2:
lcd_string(argument,LCD_LINE_2,1)
else:
if rowNumber == 3:
lcd_string(argument,LCD_LINE_3,1)
else:
if rowNumber == 4:
lcd_string(argument,LCD_LINE_4,1)
count = count + 1
def lcd_init():
# Initialise display
lcd_byte(0x33,LCD_CMD) # 110011 Initialise
lcd_byte(0x32,LCD_CMD) # 110010 Initialise
lcd_byte(0x06,LCD_CMD) # 000110 Cursor move direction
lcd_byte(0x0C,LCD_CMD) # 001100 Display On,Cursor Off, Blink Off
lcd_byte(0x28,LCD_CMD) # 101000 Data length, number of lines, font size
# lcd_byte(0x01,LCD_CMD) # 000001 Clear display
time.sleep(E_DELAY)
def lcd_byte(bits, mode):
# Send byte to data pins
# bits = data
# mode = True for character
# False for command
GPIO.output(LCD_RS, mode) # RS
# High bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x10==0x10:
GPIO.output(LCD_D4, True)
if bits&0x20==0x20:
GPIO.output(LCD_D5, True)
if bits&0x40==0x40:
GPIO.output(LCD_D6, True)
if bits&0x80==0x80:
GPIO.output(LCD_D7, True)
# Toggle 'Enable' pin
lcd_toggle_enable()
# Low bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x01==0x01:
GPIO.output(LCD_D4, True)
if bits&0x02==0x02:
GPIO.output(LCD_D5, True)
if bits&0x04==0x04:
GPIO.output(LCD_D6, True)
if bits&0x08==0x08:
GPIO.output(LCD_D7, True)
# Toggle 'Enable' pin
lcd_toggle_enable()
def lcd_toggle_enable():
# Toggle enable
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)
def lcd_string(message,line,style):
# Send string to display
# style=1 Left justified
# style=2 Centred
# style=3 Right justified
if style==1:
message = message.ljust(LCD_WIDTH," ")
elif style==2:
message = message.center(LCD_WIDTH," ")
elif style==3:
message = message.rjust(LCD_WIDTH," ")
lcd_byte(line, LCD_CMD)
for i in range(LCD_WIDTH):
lcd_byte(ord(message[i]),LCD_CHR)
#def lcd_backlight(flag):
# Toggle backlight on-off-on
# GPIO.output(LED_ON, flag)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
Display More
Hier meine Aufrufe:
Zum clearen des Bildschirms:
Schreiben Zeile 1:
Schreiben Zeile 2:
Schreiben Zeile 3:
Schreiben Zeile 4:
Danke für eure erneute Hilfe im Voraus!
VG KAMPI
Ich habe mal eine Frage:
Bei mir läuft der MPD sauber, ich habe nur ein Problem beim laden von Playlisten mit dem Befehl "mpc load 'Playlistname'". Wenn in den Einträgen (Liste von MP3s) in der Playlist Umlaute vorkommen lädt er die Playlist nicht. Die Name der Playlist selber kann Umlaute enthalten. Auch kann ich die MP3s, welche Umlaute im Dateinamen haben mit "mpc add 'Dateiname.mp3'" ohne Probleme laden und abspielen. Es muss also an den Einträgen in der Playlist liegen.
Die Playlisten sind m3u Dateien und in der mpd.conf ist UTF-8 eingestellt.
Danke für eure Antworten im Voraus.
VG Christian
Habe es jetzt mal ohne SetCursor gemacht, sondern nur dieses hier (Versuche mit 1000ms Sleep, mit 10ms, ohne Sleep und mit/ohne Clear). Immer das gleiche.
_lcdConnection.Clear();
Thread.Sleep(10);
_lcdConnection.WriteLine(line1);
Thread.Sleep(10);
_lcdConnection.WriteLine(line2);
Thread.Sleep(10);
_lcdConnection.WriteLine(line3);
Thread.Sleep(10);
_lcdConnection.WriteLine(line4);
Habe mal ein python Script probiert, welches ich im Netz fürs Display gefunden habe. Das funktioniert auch einwandfrei, wenn ich die Anzeige alle 10ms ändere.
Habe mir auch von Githib die neusten Raspberry.IO dlls kompiliert.
Mfg KAMPI
Renão: Ohne Lauftext ist es das gleiche. Dann kommt es halt nicht so häufig vor, weil der Text ja immer nur geschrieben wird, wenn er sich ändert. Dann ändert er sich z.B. in Zeile drei nur bei einem Liedwechsel. In Zeile vier im Modus "Play" alle Sekunde wegen der Anzeige der aktuellen Zeit des Liedes.
Wegen der Überlagerung versuche ich deinen Ansatz mal aus. Obwohl man von einer Überlagerung eigentlich auch was in den Logs sehen müsste, oder nicht?
Melde mich nachher, wenn ich es ausprobiert habe.
Danke auf jeden Fall!
VG KAMPI
Automatisch zusammengefügt:[hr]
Habe es ausprobiert. Bringt keinen Unterschied. Habe auch ein Log geschrieben, wenn er in die neue Funktion reinkommt, wie da der Status des "es wird geschrieben" ist. Er war immer false. Also kommt er da nicht doppelt rein bzw. überholt sich nicht. Eigentlich ist das ganze Programm auch ein Cycle ohne verschiedene Threads. Kann also auch eigentlich nicht sein. Aber ausprobieren ist immer besser. Werde nachher mal weiterschauen.
Was mir auch noch aufgefallen ist, dass er manchmal nur noch die 1. und 3. Zeile anzeigt, dafür die Helligkeit der Pixel sehr zunimmt. Schaue mal ob da irgendwas mit der Spannung der Displayversorgung ist. Obwohl ich nicht weiss, ob die anderes sein kann, als wenn das Programm im Debug Modus läuft.
VG KAMPI
Erst mal noch mal ein dickes Danke für eure Ratschläge und Bemühungen. Sehr nett von euch. Versuche die ganze Zeit das Problem einzukreisen.
Aber er kommt trotz der Sleeps noch durcheinander.
Habe das mal in eine Logdatei geschrieben. Da sieht man, wann er welche Zeile schreibt und wann er Garnichts schreibt und die Anzeige einfach so lässt wie sie ist.
Ohne Sleeps hat er mit Debugger die ersten drei Zeilen immer mit einem Abstand von 5ms geschrieben und das alle 2 Sekunden. Ohne Debugger mit einem Abstand von 1ms und das alle 2 Sekunden. Habe gedacht daran könnte es liegen. Ist ja schon signifikant schneller.
Jetzt habe ich nach jeden WriteLine einen Sleep von 100ms eingebaut. (Mit 5ms hat es im Debugger-Modus ja geklappt, dann müsste es mit 100ms erst recht gehen).
Im Debugger schreibt er die Zeilen jetzt in einem Abstand von 105ms und ohne Debugger im Abstand von 101 ms. (Siehe unten).
Es scheint wohl schon mit an der Zeit zu liegen, aber ganz beheben tut es das Phänomen nicht. Komisch ist, dass im normalen Modus, wenn das LCD zwischen durch wieder ASCII Zeichen schreibt, dass Display auf einmal Garnichts mehr anzeigt. Nach ein paar Sekunden dann wieder anfängt was anzuzeigen.
Hier die Logs mit Sleep im Debug:
2017-01-18 17:00:16,247 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line1 - 'Dragons - Die Reiter' geschrieben
2017-01-18 17:00:16,349 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line2 - '01-Die Drachen-Akade' geschrieben
2017-01-18 17:00:16,451 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line3 - 'Die Drachenakademie ' geschrieben
2017-01-18 17:00:16,557 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line4 - ' 1/4 70% ' geschrieben
2017-01-18 17:00:16,760 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:16,864 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:16,966 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:17,069 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:17,172 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:17,275 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:17,377 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:17,480 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:17,583 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:17,685 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:17,788 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:17,897 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:18,000 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:18,102 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:18,205 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:18,308 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:18,410 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:18,513 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:18,616 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:18,718 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:18,821 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:18,924 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:19,026 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:19,129 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:19,232 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:19,336 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line1 - 'ragons - Die Reiter ' geschrieben
2017-01-18 17:00:19,437 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line2 - '1-Die Drachen-Akadem' geschrieben
2017-01-18 17:00:19,538 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line3 - 'ie Drachenakademie V' geschrieben
2017-01-18 17:00:19,741 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:19,843 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:19,946 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:20,049 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:20,152 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:20,254 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:20,357 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:20,469 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:20,571 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:20,674 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:20,776 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:20,879 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:20,981 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:21,084 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:21,186 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:21,289 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:21,392 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line1 - 'agons - Die Reiter V' geschrieben
2017-01-18 17:00:21,494 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line2 - '-Die Drachen-Akademi' geschrieben
2017-01-18 17:00:21,595 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line3 - 'e Drachenakademie Vo' geschrieben
2017-01-18 17:00:21,797 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:21,900 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:22,002 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:22,105 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:22,207 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:22,310 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:22,414 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:22,519 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:22,623 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:23,017 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:23,122 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:23,226 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:23,331 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:00:23,437 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line1 - 'gons - Die Reiter Vo' geschrieben
2017-01-18 17:00:23,539 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line2 - 'Die Drachen-Akademie' geschrieben
2017-01-18 17:00:23,641 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line3 - ' Drachenakademie Von' geschrieben
Display More
Und hier ohne Debugger:
2017-01-18 17:02:20,132 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line1 - 'Dragons - Die Reiter' geschrieben
2017-01-18 17:02:20,236 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line2 - '01-Die Drachen-Akade' geschrieben
2017-01-18 17:02:20,340 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line3 - 'Die Drachenakademie ' geschrieben
2017-01-18 17:02:20,447 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line4 - ' 1/4 70% ' geschrieben
2017-01-18 17:02:20,654 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:20,760 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:20,865 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:20,971 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:21,077 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:21,183 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:21,288 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:21,394 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:21,499 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:21,605 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:21,711 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:21,822 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:21,927 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:22,033 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:22,139 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:22,244 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:22,354 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:22,464 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:22,575 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:22,685 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:22,795 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:22,905 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:23,016 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:23,126 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:23,242 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line1 - 'ragons - Die Reiter ' geschrieben
2017-01-18 17:02:23,348 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line2 - '1-Die Drachen-Akadem' geschrieben
2017-01-18 17:02:23,453 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line3 - 'ie Drachenakademie V' geschrieben
2017-01-18 17:02:23,664 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:23,774 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:23,884 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:23,994 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:24,104 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:24,214 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:24,324 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:24,434 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:24,561 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:24,671 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:24,781 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:24,890 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:25,000 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:25,110 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:25,220 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:25,335 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line1 - 'agons - Die Reiter V' geschrieben
2017-01-18 17:02:25,441 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line2 - '-Die Drachen-Akademi' geschrieben
2017-01-18 17:02:25,546 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line3 - 'e Drachenakademie Vo' geschrieben
2017-01-18 17:02:25,756 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:25,866 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:25,975 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:26,085 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:26,195 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:26,305 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:26,415 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:26,525 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:26,634 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:26,744 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:26,858 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:26,968 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:27,078 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:27,188 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:27,298 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Keine Zeile geschrieben
2017-01-18 17:02:27,413 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line1 - 'gons - Die Reiter Vo' geschrieben
2017-01-18 17:02:27,518 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line2 - 'Die Drachen-Akademie' geschrieben
2017-01-18 17:02:27,624 INFO [Jukebox.Device.RaspberryPi.Connector.LcdConnection] Line3 - ' Drachenakademie Von' geschrieben
Display More
Meine Update Display Funktion sieht im Moment so aus:
public void UpdateDisplay(string line1, string line2, string line3, string line4)
{
if (line1 != null)
{
line1 = line1.PadRight(Columns);
}
if (line2 != null)
{
line2 = line2.PadRight(Columns);
}
if (line3 != null)
{
line3 = line3.PadRight(Columns);
}
if (line4 != null)
{
line4 = line4.PadRight(Columns);
}
// skip update if content is the same
if (line1 == _line1 && line2 == _line2 && line3 == _line3 && line4 == _line4)
{
log.Info(m => m($"Keine Zeile geschrieben"));
return;
}
lock (_lockject)
{
Hd44780Position myPosition = new Hd44780Position();
if (_line1 != line1)
{
myPosition.Column = 0;
myPosition.Row = 0;
// Thread.Sleep(1000);
_lcdConnection.SetCursorPosition(myPosition);
// Thread.Sleep(1000);
_lcdConnection.WriteLine(line1);
log.Info(m => m($"Line1 - '{line1}' geschrieben"));
Thread.Sleep(100);
}
if (_line2 != line2)
{
myPosition.Column = 0;
myPosition.Row = 1;
// Thread.Sleep(1000);
_lcdConnection.SetCursorPosition(myPosition);
// Thread.Sleep(1000);
_lcdConnection.WriteLine(line2);
log.Info(m => m($"Line2 - '{line2}' geschrieben"));
Thread.Sleep(100);
}
if (_line3 != line3)
{
myPosition.Column = 0;
myPosition.Row = 2;
// Thread.Sleep(1000);
_lcdConnection.SetCursorPosition(myPosition);
// Thread.Sleep(1000);
_lcdConnection.WriteLine(line3);
log.Info(m => m($"Line3 - '{line3}' geschrieben"));
Thread.Sleep(100);
}
if (_line4 != line4)
{
myPosition.Column = 0;
myPosition.Row = 3;
// Thread.Sleep(1000);
_lcdConnection.SetCursorPosition(myPosition);
// Thread.Sleep(1000);
_lcdConnection.WriteLine(line4);
log.Info(m => m($"Line4 - '{line4}' geschrieben"));
Thread.Sleep(100);
}
}
_line1 = line1;
_line2 = line2;
_line3 = line3;
_line4 = line4;
}
Display More
Wie man sieht habe ich es auch mal testweise mit sehr hohen Sleeps vor nach dem setzen der Position versucht. Ausserdem auch ohne setzen der Position. Hat auch nichts gebracht.
Mfg KAMPI
schnasseldag: Werde ich nachher mal ausprobieren. Aber noch als Info: Das Verhalten zeigt sich auch, wenn ich das gleiche Debug-Build "normal" starte. Zwischen der funktionierenden Ansteuerung im Debug Mode und dem nicht funktionierenden Ansteuern beim normalen starten ändere ich nichts am Code bzw. benutze genau das gleiche Build/Compilat.
Aber auch in einem Realease Build funktioniert es nicht, wenn ich es normal starte.
Mfg KAMPI
P.S. LCD ist übrigens ein HD44780
Also es scheint was mit der Schnelligkeit der WriteLine Befehle vom LCD zu tun zu haben.
Habe mal ein bisschen mit Sleeps rumgespielt.
Hier der Code:
Hd44780Position myPosition = new Hd44780Position();
if (_line1 != line1)
{
myPosition.Column = 0;
myPosition.Row = 0;
// Thread.Sleep(1000);
_lcdConnection.SetCursorPosition(myPosition);
// Thread.Sleep(1000);
_lcdConnection.WriteLine(line1);
}
if (_line2 != line2)
{
myPosition.Column = 0;
myPosition.Row = 1;
// Thread.Sleep(1000);
_lcdConnection.SetCursorPosition(myPosition);
// Thread.Sleep(1000);
_lcdConnection.WriteLine(line2);
}
if (_line3 != line3)
{
myPosition.Column = 0;
myPosition.Row = 2;
// Thread.Sleep(1000);
_lcdConnection.SetCursorPosition(myPosition);
// Thread.Sleep(1000);
_lcdConnection.WriteLine(line3);
}
if (_line4 != line4)
{
myPosition.Column = 0;
myPosition.Row = 3;
// Thread.Sleep(1000);
_lcdConnection.SetCursorPosition(myPosition);
// Thread.Sleep(1000);
_lcdConnection.WriteLine(line4);
}
Display More
Mit Sleeps ist es schon besser. Aber das Phänomen ist erst fast weg, wenn ich wirklich an die angezeigten Stellen 500 bis 1000 Millisekunden Sleeps reinpacke. So viel schneller kann das Programm ohne Debugger ja aber garnicht sein. Habe im Debbuger auch mindestens jede Sekunde (das habe ich wegen der Sekundenanzeige des Liedes gesehen) ein Update des Displays bekommen. Die Zeilen ändern sich eh nur höchstens sekündlich. Ansonsten werden die eh nicht geschrieben. Ein wenig komisch finde ich das schon.
Werde morgen mal weiterforschen.
Mfg KAMPI
@deets: Ist klar, das mache ich schon
Danke für den Tipp. Schaue mal ob ich da weiter komme.
Mfg KAMPI
Erst mal Danke für eure Antworten.
Renão: Ich habe mal zwei Bilder gemacht, die das Problem vielleicht etwas deutlicher machen:
So sieht es im Debug Modus aus:
https://www.dropbox.com/s/njsabqfocnk5x6p/IMG_6181.JPG?dl=0
So sieht es im "normalen" Modus aus:
https://www.dropbox.com/s/p2t4a8ksmj68akp/IMG_6182.JPG?dl=0
@deets: Können Race-Conditions denn, die in den Bildern zu sehenden, Sachen auslösen? Ich schaue mir die Threads mal an.
Schon mal danke für weitere Ideen.
Mfg KAMPI
Hat sich erledigt. Habe mit folgenden Befehlen Erfolg gehabt. Nun kann das Programm ohne Probleme auf den MPD zugreifen.
Jetzt funktioniert soweit alles inkl. Buttons, RFID, LCD, etc.
Ein Problem habe ich jetzt aber noch. Vielleicht kann mir da wer weiterhelfen.
http://www.forum-raspberrypi.d…g-und-direktes-ausfuehren
Vielen Dank im Voraus.
Mfg KAMPI
P.S. Mit sonix Genehmigung kann ich gerne meinen veränderten Quellcode für das Projekt zur Verfügung stellen, wenn alles läuft.
Hallo zusammen,
ich bin gerade bei meinem ersten Raspi Projekt. Und zwar baue ich dieses hier nach:
http://www.forum-raspberrypi.d…nder?pid=175963#pid175963
Ich habe einen Raspberry Pi 3 mit Raspbian Jessie light und mono-complete.
Einer der einzigen Unterschiede zu dem Projekt ist, dass ich ein 4*20 LCD Display habe. Habe den Code so umprogrammiert, dass ich jetzt mehr Zeilen/Spalten schreiben kann.
Das Projekt ist ja in C# geschrieben. Um das Projekt remote debuggen zu können, benutze ich Xamarin Studio.
Ich starte das Projekt auf dem Pi mit folgendem Befehl:
sudo mono --debug --debugger-agent=transport=dt_socket,address=0.0.0.0:12345,server=y Jukebox/Jukebox.Runtime.exe
Wenn ich jetzt das Projekt im Xamarin Studio starte, kann ich alles debuggen. Es läuft auch alles. Besonders auch die Anzeige auf dem LCD.
Nun wollte ich das Projekt das erste mal "normal" starten. Also habe ich die beiden folgenden Befehle eingegeben:
Leider werden auf dem Display jetzt fast nur kryptische ASCII Zeichen angezeigt. Man kann zwischendurch mal ein bisschen was vom normalen Text, der dort eigentlich stehen sollte, sehen. Auch ist der Text oft z.B. in der falschen Zeile. Der Rest (Buttons etc.) scheint zu funktionieren.
Warum funktioniert die Ansteuerung des LCD im Debug Modus, aber nicht im "normalen" Modus?
Hoffe jemand kann mir da helfen.
Vielen Dank für eure Antwort im Voraus!
Mfg KAMPI
P.S. mod: Hoffe es ist der richtige Forenteil für die Frage, sonst bitte verschieben
Hallo zusammen,
habe mich auch mal an den Bau einer Jukebox gemacht. Habe das Projekt von sonix nachgebaut.
Ich habe nur ein Problem mit seinem C# Programm. Wenn ich irgendwelche Befehle an den MPC schicke, passiert gar nichts. Ich kann auf einer SSH Console ganz normal den MPC bedienen. Auch mit einem Windows Programm geht das.
Ich habe mal mit dem Xamarin Studio remote debugged und er läuft eigentlich sauber durch alle Funktionen durch.
Hat dazu jemand eine Idee?
MPD Version ist die 0.19.0
Danke für eure Antwort und Hilfe im Voraus.
VG Christian