Hallo, ich möchte einen Centronix-Drucker an einen AVR hängen. Dazu habe ich auch schon viele Seiten gefunden, auch einmal mit Code. Da ich nicht so viel vom Programmieren verstehe, hoffe ich hier auf Hilfe. Mein Problem: Wie muss ich den Code abändern, dass ein String gedruckt wird? (ohne die ganzen LEDs und Taster, nur mit GOTO) Der Code:
1 | $regfile = "m8def.dat" |
2 | $crystal = 1000000 |
3 | |
4 | Ddrb = &B00000000 'Port B komplett als Eingang |
5 | Ddrc = &B00001111 'Am Port C PC0 bis PC3 Ausgang, Rest Eingang |
6 | Ddrd = &B11111111 'Port D komplett als Ausgang |
7 | |
8 | Portb = &B00011110 'Pullup für PB1 bis PB4 aktivieren (Taster) |
9 | Portc = &B00001111 'Beim starten auf 0 setzen |
10 | Portd = &B00000000 'Beim starten auf 0 setzen |
11 | |
12 | Dim Nutzdaten As String * 30 |
13 | Dim Textstring As String * 30 |
14 | Dim Bytewerte(30) As Byte At Textstring Overlay |
15 | Dim X As Byte |
16 | Dim Y As Byte |
17 | |
18 | Led_gruen Alias Portc.0 |
19 | Led_rot Alias Portc.1 |
20 | Taster1 Alias Pinb.1 |
21 | Taster2 Alias Pinb.2 |
22 | Taster3 Alias Pinb.3 |
23 | Taster4 Alias Pinb.4 |
24 | |
25 | Strobe Alias Portc.3 |
26 | Init_signal Alias Portc.2 |
27 | Busy Alias Pinb.5 |
28 | Ack_signal Alias Pinb.6 |
29 | |
30 | 'Portd ist DATA0 - DATA7 der Centronics Schnittstelle |
31 | |
32 | Led_gruen = 0 'LED Grün an |
33 | Led_rot = 0 'LED Rot an |
34 | |
35 | Wait 1 'Test, ob beide LEDs funktionieren |
36 | |
37 | Led_rot = 1 'LED Rot aus |
38 | |
39 | |
40 | Do |
41 | If Taster1 = 0 Then 'Taster 1 gedrückt |
42 | Textstring = "!R! STAT1; EXIT; {012}" |
43 | Gosub Senddata 'Rote LED aus |
44 | Waitms 50 ' wegen dem Tastenprellen |
45 | End If |
46 | If Taster2 = 0 Then 'Taster 2 gedrückt |
47 | Textstring = "!R! FRPO I1, 1; EXIT;" |
48 | Gosub Senddata |
49 | Waitms 50 ' wegen dem Tastenprellen |
50 | End If |
51 | If Taster3 = 0 Then 'Taster 3 gedrückt |
52 | Textstring = "!R! ELOG; EXIT;" |
53 | Gosub Senddata |
54 | Waitms 50 ' wegen dem Tastenprellen |
55 | End If |
56 | If Taster4 = 0 Then 'Taster 4 gedrückt |
57 | Waitms 50 ' wegen dem Tastenprellen |
58 | End If |
59 | Loop |
60 | |
61 | |
62 | Senddata: |
63 | Led_gruen = 1 'Grüne LED aus |
64 | |
65 | Do |
66 | Loop Until Busy = 1 |
67 | |
68 | Led_rot = 0 |
69 | Init_signal = 0 'Init-Signal auf Low zum initialisieren |
70 | Waitms 50 '50 millisekunden warten |
71 | Init_signal = 1 |
72 | Waitms 50 |
73 | |
74 | Y = Len(textstring) |
75 | For X = 1 To Y Step 1 |
76 | Portd = Bytewerte(x) |
77 | Waitms 10 |
78 | Strobe = 1 |
79 | Waitms 10 |
80 | Strobe = 0 |
81 | |
82 | Do |
83 | 'Wartet, bis der Drucker ein ACK gesendet hat, um sicher zu gehen, dass kein Zeichen verloren geht |
84 | Loop Until Ack_signal = 1 |
85 | |
86 | Next X |
87 | |
88 | Led_gruen = 0 'Grüne LED an |
89 | Led_rot = 1 |
90 | Return |
91 | |
92 | End |
PS: Ich möchte nur Text drucken. Ohne Angaben zur Grösse und Schriftart.