Hallo zusammen
ich habe ein Problem und habe noch keine vernünftige Lösung gefunden.
Vielleicht hat jemand eine bessere Idee.
Ich verwende das intelligente Display von Electronic Assembly eDIPTFT43. Ich steuere das Display über die Serieschnittstelle.
Problem: Zur Steuerung wird eine Zeichenkette gesendet die in den Bytes (4-7) die Startposition beinhaltet.
Da die Position mit 2 Bytes übertragen wird (Low und Highbyte) und der Bereich 1...480 sowie 1...272 Pixel abdeckt MUSS für die Werte 1...255 das Highbyte auf 0 gesetzt werden.
Leider ist die 0 auch das Stringendezeichen; tritt es innerhalb des Strings auf wird es verworfen respektive wird als Stringende interpretiert. Somit wird die 0 nie gesendet und das Display reagiert nicht.
Meine provisorische Abhilfe:
Statt 0 wird die Zahl 255 verwendet. In der Sub Write_edit wird auf 255 geprüft und wenn ja durch 0 ersetzt.
Die Zeichen werden dann mittels PRINTBIN gesendet da sonst die 0 wegen der automatischen ASCII-Konvertierung der PRINT-Routine ebenfalls nicht gesendet wird.
Durch den Trick kann die Pixelposition 255 jedoch nicht angesteuert werden da sie dann durch 0 ersetzt wird.
Weiss jemand eine andere Lösung? Ich möchte gerne die Stringfunktionen behalten.
Beispielcode:
Alles anzeigen
Gruss
jepe
ich habe ein Problem und habe noch keine vernünftige Lösung gefunden.
Vielleicht hat jemand eine bessere Idee.
Ich verwende das intelligente Display von Electronic Assembly eDIPTFT43. Ich steuere das Display über die Serieschnittstelle.
Problem: Zur Steuerung wird eine Zeichenkette gesendet die in den Bytes (4-7) die Startposition beinhaltet.
Da die Position mit 2 Bytes übertragen wird (Low und Highbyte) und der Bereich 1...480 sowie 1...272 Pixel abdeckt MUSS für die Werte 1...255 das Highbyte auf 0 gesetzt werden.
Leider ist die 0 auch das Stringendezeichen; tritt es innerhalb des Strings auf wird es verworfen respektive wird als Stringende interpretiert. Somit wird die 0 nie gesendet und das Display reagiert nicht.
Meine provisorische Abhilfe:
Statt 0 wird die Zahl 255 verwendet. In der Sub Write_edit wird auf 255 geprüft und wenn ja durch 0 ersetzt.
Die Zeichen werden dann mittels PRINTBIN gesendet da sonst die 0 wegen der automatischen ASCII-Konvertierung der PRINT-Routine ebenfalls nicht gesendet wird.
Durch den Trick kann die Pixelposition 255 jedoch nicht angesteuert werden da sie dann durch 0 ersetzt wird.
Weiss jemand eine andere Lösung? Ich möchte gerne die Stringfunktionen behalten.
Beispielcode:
Quellcode
- Buffer = Chr(27) + "ZL" + Chr(1) + Chr(255) + Chr(220) + Chr(255) + "Font7x12.1---------2---------3---------4---------5" + Chr(13)
- Gosub Write_edip
- Sub Write_edip
- Dat = 17 'Startbyte DC1
- M = Len(buffer)
- Bcc = 17 + M
- Print Chr(dat) ; 'DC1
- Print Chr(M) ; 'LEN
- For M = 1 To Len(buffer)
- C = Mid(buffer , M , 1) 'aktuelles Zeichen
- if C = Chr(255) then C = Chr(0)
- Printbin C ;
- Bcc = Bcc + Asc(c) 'Zeichen wird für die Checksumme benötigt
- Next M
- Print Chr(bcc) ; 'und noch Checksumme senden
- End Sub
jepe