Hier mal der "vorraussichtliche" Code:
Was meint die Mehrzahl dazu? Irgendwelche Verbesserungsvorschläge? Neu ist eigentlich bloß, dass mit "Do - Loop until ACK = 1" vorgesorgt wird, dass keine Bytes verloren gehen.Code:$regfile = "m8def.dat" $crystal = 1000000 Ddrb = &B00000000 'Port B komplett als Eingang Ddrc = &B00001111 'Am Port C PC0 bis PC3 Ausgang, Rest Eingang Ddrd = &B11111111 'Port D komplett als Ausgang Portb = &B00011110 'Pullup für PB1 bis PB4 aktivieren (Taster) Portc = &B00001111 'Beim starten auf 0 setzen Portd = &B00000000 'Beim starten auf 0 setzen Dim Nutzdaten As String * 30 Dim Textstring As String * 30 Dim Bytewerte(30) As Byte At Textstring Overlay Dim X As Byte Dim Y As Byte Led_gruen Alias Portc.0 Led_rot Alias Portc.1 Taster1 Alias Pinb.1 Taster2 Alias Pinb.2 Taster3 Alias Pinb.3 Taster4 Alias Pinb.4 Strobe Alias Portc.3 Init_signal Alias Portc.2 Busy Alias Pinb.5 Ack_signal Alias Pinb.6 'Portd ist DATA0 - DATA7 der Centronics Schnittstelle Led_gruen = 0 'LED Grün an Led_rot = 0 'LED Rot an Wait 1 'Test, ob beide LEDs funktionieren Led_rot = 1 'LED Rot aus Do If Taster1 = 0 Then 'Taster 1 gedrückt Textstring = "!R! STAT1; EXIT; {012}" Gosub Senddata 'Rote LED aus Waitms 50 ' wegen dem Tastenprellen End If If Taster2 = 0 Then 'Taster 2 gedrückt Textstring = "!R! FRPO I1, 1; EXIT;" Gosub Senddata Waitms 50 ' wegen dem Tastenprellen End If If Taster3 = 0 Then 'Taster 3 gedrückt Textstring = "!R! ELOG; EXIT;" Gosub Senddata Waitms 50 ' wegen dem Tastenprellen End If If Taster4 = 0 Then 'Taster 4 gedrückt Waitms 50 ' wegen dem Tastenprellen End If Loop Senddata: Led_gruen = 1 'Grüne LED aus Do Loop Until Busy = 1 Led_rot = 0 Init_signal = 0 'Init-Signal auf Low zum initialisieren Waitms 50 '50 millisekunden warten Init_signal = 1 Waitms 50 Y = Len(textstring) For X = 1 To Y Step 1 Portd = Bytewerte(x) Waitms 10 Strobe = 1 Waitms 10 Strobe = 0 do 'Wartet, bis der Drucker ein ACK gesendet hat, um sicher zu gehen, dass kein Zeichen verloren geht loop until Ack_signal = 1 Next X Led_gruen = 0 'Grüne LED an Led_rot = 1 Return End






). Jetzt bitte ich die Profis (z.B. Vitis & Mehto) gerade den Teil "Datenübertragung - Praxis" auf Richtigkeit zu überprüfen, ob ich alles richtig verstanden habe.
Zitieren

Lesezeichen