
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
' ============================================================================ ' An der Seriellen Schnittstelle der Open-Maxi mit 7 Datenbits empfangen ' In OCBASIC 1.12a_e1 von Dietmar Harlos am 19. November 2018 ' ============================================================================ ' Die externe Quelle sendet im Format 9600 Baud, 7 Datenbits, gerade Parität ' und 1 Stopbit. Zum Testen läßt sich Terminal32.EXE verwenden. Es muß in ' diesem Fall mit dem Parameter "1,9600,e,7,1" gestartet werden. Die Open-Maxi ' empfängt im Format 9600 Baud, 8 Datenbits, keine Parität und 1 Stopbit. ' Wie hier gezeigt, funktioniert das Empfangen trotzdem. Das gesendete ' Paritätsbit kann vom Anwender entweder ausgewertet oder verworfen werden. ' Zum Testen kann im Terminalprogramm die Taste "Strg" zusammen mit einer ' Buchstabentaste gedrückt werden: "Strg+A" sendet das Byte mit dem Wert 1. ' "Strg+B" sendet 2. "Strg+C" sendet 3, usw. Mit "Strg+Leertaste" wird 0 ' gesendet. Die Ausgaben der Open-Maxi erscheinen ebenfalls im Terminal- ' programm. Das Paritätsbit wird so gesendet, daß die 1er Bits im gesendeten ' Byte eine gerade Anzahl ergeben. Beispielsweise ist beim Senden von 1 das ' Paritätsbit gesetzt. Die Open-Maxi empfängt deshalb $81. ' Die Open-Maxi bietet eine in Hardware implementierte Serielle Schnitt- ' stelle, die mit einem Empfangsinterrupt und 32 Byte Empfangsbuffer ' ausgestattet ist. ' --- Definitionen für das System -------------------------------------------- INCLUDE "omax.def" 'Definitionen für die Open-Maxi ' --- Definitionen des Anwenders --------------------------------------------- DIM data BYTE 'eine Variable ' --- Das Hauptprogramm ------------------------------------------------------ WHILE TRUE IF RXD THEN GET data 'ein Byte über die Serielle Schnittstelle empfangen PUT ASC("$") 'empfangenes Byte im Hexdezimalformat ausgeben hex data PUT ASC(" ") IF data>=&h80 THEN 'wenn größer/gleich 128: gerade Parität gesendet PUT "E" ELSE PUT "-" END IF PUT ASC(" ") PUT ASC("$") hex data AND &h7f 'Paritätsbit löschen, nur die unteren 7 Bits PUT ASC(" ") ' verwenden PUT data AND &h7f 'und als Echo die unteren 7 Bits im ASCII-Code PRINT ' senden END IF PAUSE 5 WEND End2Host=ON 'Nach Programmende in den Host-Modus END 'Programmende, Neustart mit der Enter-Taste ' --- Subroutinen ------------------------------------------------------------ ' HEX$ für BYTE in Kleinbuchstaben unter Verwendung von nur einer Variable. ' Besonderheit: Die Variable wird nicht verändert. PROCEDURE hex(data) PUT (data SHR 4)+48+(((data SHR 4)>9) AND 39) PUT (data AND 15)+48+(((data AND 15)>9) AND 39) RETURN END PROCEDURE ' --- Programmende ---------------------------------------------------------- Passender Link: Bedienungsanleitung zur Open-Macro und Open-Maxi Meine Homepage: http://ccintern.dharlos.de |
| Antwort schreiben |