Forum: Mikrocontroller und Digitale Elektronik Etikettendrucker OS-214 mit AVR ansteuern per RS232 (Bascom)


von Tom Z. (tom_z)


Lesenswert?

Hallo,

ich möchte den Drucker OS-214 mit einem AVR per UART ansteuern.
http://duotecsysteme.de/shop/pub/OS-203_2x4_Handbuch_de.pdf

Als Hardware habe ich das Pollin Board. Den AVR hab ich auf externen 
Quarz mit 14,7456mhz gestellt. Die Hardware ist nicht das Problem, da 
alle Zeichen richtig ankommen.

Wenn ich jetzt als Test mal das an den Drucker schick, dann blinkt die 
Power LED, dh. zB: (laut Handbuch) Serieller E/AFehler.
1
$crystal = 14745600
2
$baud = 9600
3
Config Portd.5 = Output
4
Portd.5 = 1
5
Print "54:65:73:74"
6
Toggle Portd.5
7
End

Was muss ich an den Drucker schicken, damit er irgentwas druckt. Wie 
wähle ich eine Font aus?

Bascom schickt doch CR LF hinterher oder?

Kann mir jemand bitte auf die Sprünge helfen?

Danke

MfG Tom

von Johannes G. (gutenberg)


Lesenswert?

Du kannst doch nicht einfach Zeichen an den Drucker schicken. Du musst 
das Protokoll kennen um mit ihm zu kommunizieren.

von Tom Z. (tom_z)


Lesenswert?

Hab jetzt nochmal im Internet gesucht und herausgefunden, dass ältere 
Etikettendrucker in ZEBRA angesprochen werden. Ich les mir grad ein PDF 
durch(Syntax in ZEBRA). Kennt sich da einer genauer aus?

von Johannes G. (gutenberg)


Lesenswert?

In deinem Handbuch steht aber auf S. 51 dass er PPLA spricht.

Hab aber noch nie was davon gehört. Wahrscheinlich irgendein 
herstellerspezifisches Ding.

von Johannes G. (gutenberg)


Lesenswert?


von mtrj (Gast)


Lesenswert?

kaum zu glauben , mit welcher Naivität hier Leute unterwegs sind.

von olaf (Gast)


Lesenswert?

....einfach mal bei der kommunikation mitlauschen wenn er am pc hängt?

von Tom Z. (tom_z)


Lesenswert?

olaf schrieb:
> ....einfach mal bei der kommunikation mitlauschen wenn er am pc hängt?
hab ich mir auch schon gedacht, nur muss ich noch die passende Software 
finden. Da ich nur den Drucker, ohne weiteres zubehör, bekommen hab.


Danke Johannes.

wenn ich als Beispiel: <STX>F (Feed a  page) sende passiert gar nix.

Diese Schreibweisen hab ich schon probiert:
1
Print "<STX>F"
oder:
1
Print "02H"
2
Print "F"
3
Print "0d"
4
Print "0a"
oder:
1
Print "02HF0d0a"
oder:
1
Print "<STX>F<CR>"

Gleiches Problem wie vorher.

von Tom Z. (tom_z)


Angehängte Dateien:

Lesenswert?

Hallo,

hab grad was auf der Herstellerseite gefunden.
Siehe Anhang.

Hier der Link vom Hersteller.

MfG Tom

von Johannes G. (gutenberg)


Lesenswert?

Tom Z. schrieb:
> wenn ich als Beispiel: <STX>F (Feed a  page) sende passiert gar nix.

Deine Idee war schon richtig, STX ist nur ein Symbol, was du sendest ist 
aber nicht 02H, sondern 0x02 (ist einfach eine andere hex-Schreibweise). 
Also in diesem Fall ein Byte mit dem Wert 2, gefolgt vom Befehl.

Also probier mal 0x02 (ich weiss nicht wie man das in Bascom schreibt) 
und dann ein "F"

von Alex W. (a20q90)


Lesenswert?

Du musst nach dem "Print"-Befehl ein Semikolon setzen (;) :

Print "Bla";

Dann sendet er auch nur ein "Bla"  zum drucker, ansonsten ein 
"Bla"<cr><lf>

von Tom Z. (tom_z)


Lesenswert?

wenn ich das hier schicke Print "0x02f"; passier auch nichts.
Das war der Hersteller Link zur Software, den ich oben vergessen hatte:
http://www.argox.com/content.php?sno=0000033&P_ID=17

MfG Tom

von Johannes G. (gutenberg)


Lesenswert?

Ich glaub du schickst immer noch das falsche an den Drucker. Das F muss 
übrigens gross sein. Kannst du dir einen String basteln aus vier Bytes 
mit dem Inhalt:

0x02 0x46 0x0d 0x0a

Das entspräche dann <STX> F <CR> <LF>

Oder wenn das cr lf automatisch gesendet wird lass es weg.

von Johannes G. (gutenberg)


Lesenswert?

Hältst du dich eigentlich daran?

Baud-Rate: 2400, 4800, 9600, 19200 und 38400.
(durch Befehl programmierbar)
Datenformat: immer 8 Datenbits, 1 Startbit und 1 Stopbit.
Parität : immer keine Parität
Handshaking : XON/XOFF sowie CTS/RTS
(Hardware-Flusskontrolle).

von Tom Z. (tom_z)


Lesenswert?

so hab jetzt weiter probiert. Geht leider immer noch nicht.
Werd jetzt einfach weiter Befehle probieren.

Wegen Baudrate:
Wenn ich die Feedtaste gedrückt halte und einschalte druckt er mir die 
Config Einstellungen:

Da steht 9600 8N1

Bei der Flusskontroller hab ich jetzt nichts gemacht. Wenn ich CTS und 
RTS verbinde, dann kommt das blinken nicht, er reagiert erst gar nicht 
drauf, deswegen offen.

von Johannes G. (gutenberg)


Lesenswert?

Tom Z. schrieb:
> Wenn ich die Feedtaste gedrückt halte und einschalte druckt er mir die
> Config Einstellungen:
>
> Da steht 9600 8N1

Ja aber das heisst wohl dass der Drucker diese Parameter erwartet. Meine 
Frage war ob du auch so sendest.

Einfach weitere Befehle zu senden halte ich für relativ zwecklos. Beim 
Pagefeed Befehl kannst du nicht viel falsch machen weil er so einfach 
ist, und du siehst das Resultat sofort. Wenn das nicht klappt, klappt 
auch sonst nichts.

Viel Glück noch.

von Tom Z. (tom_z)


Lesenswert?

Johannes G. schrieb:
> Tom Z. schrieb:
>> Wenn ich die Feedtaste gedrückt halte und einschalte druckt er mir die
>> Config Einstellungen:
>>
>> Da steht 9600 8N1
>
> Ja aber das heisst wohl dass der Drucker diese Parameter erwartet. Meine
> Frage war ob du auch so sendest.
>
> Einfach weitere Befehle zu senden halte ich für relativ zwecklos. Beim
> Pagefeed Befehl kannst du nicht viel falsch machen weil er so einfach
> ist, und du siehst das Resultat sofort. Wenn das nicht klappt, klappt
> auch sonst nichts.
>
> Viel Glück noch.

In Bascom hab ich das:
1
$crystal = 14745600
2
$baud = 9600

Danke für deine Hilfe

MfG Tom

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tom Z. schrieb:
> In Bascom hab ich das:
>  $crystal = 14745600
>  $baud = 9600

Und hast Du auch die Fuses des AVR so gesetzt, daß der Quarzoszillator 
verwendet wird? Wenn nicht, dann läuft der AVR mit einem internen 
RC-Oszillator und einer ganz anderen Frequenz.

von olaf (Gast)


Lesenswert?

Tom Z. schrieb:
> wenn ich das hier schicke Print "0x02f"; passier auch nichts.

...und du programmierst in bascom?
kann es da sein,das deine programmierkenntnisse noch ganz am anfang 
stehen?
ich programmiere leider nicht in bascom,aber kann mir nicht 
vorstellen,das du jetzt eine hexadezimale zahl geschickt hast,eher einen 
asciistring, welcher in deinen anführungszeichen steht,oder?
du solltest aber ein steuerzeichen schicken und das liegt nun mal 
ausserhalb der normalen asciizeichen zur darstellung unserers 
schriftsatzes!

ein suchergebnis bei google mit dem begriff "bascom hexadezimal" ergibt

print hex(hexzahl)
oder:
string=hex(hexzahl)
print string

denk nochmal drüber nach ;-)

von Norbert S. (norberts)


Lesenswert?

Hi,

wenn Du dieses <STX> senden willst (&H02 in ASCII), dann muß das so 
aussehen:
Printbin &H02
oder einfach dezimal:
Printbin 2
Bei Printbin sendet Bascom kein CR und LF hinterher sondern nur das eine 
Byte, hier mit dem Wert 2.
Print sendet immer ASCII.
Also Print "<STX>" sendet 5 Zeichen plus CR und LF.

Gruß,
Norbert

von olaf (Gast)


Lesenswert?

Norbert S. schrieb:

> oder einfach dezimal:
> Printbin 2


...komische programmiersprache...bei Printbin würde ich eher von einer 
binären schreibweise ausgehen,wie eben das -bin schon andeutet,also 
sozusagen binär=00001100 (was dezimal=12 und hex=0Centspricht)...aber 
dem ist wohl nicht so ;-)

von Tom Z. (tom_z)


Lesenswert?

Hallo,

der Zeilenvorschub geht! :)
1
Printbin 2
2
print "F";

so sieht der code in Bascom aus.
Danke an alle.
Jetzt muss ich nur noch schauen, wie ich drucken kann.

PS: <STX>T (Print test pattern) geht auch

MfG Tom

von Norbert S. (norberts)


Lesenswert?

olaf schrieb:
> Norbert S. schrieb:
>
>> oder einfach dezimal:
>> Printbin 2
>
>
> ...komische programmiersprache...bei Printbin würde ich eher von einer
> binären schreibweise ausgehen,wie eben das -bin schon andeutet,also
> sozusagen binär=00001100 (was dezimal=12 und hex=0Centspricht)...aber
> dem ist wohl nicht so ;-)

Naja, Printbin heisst eben den Wert binär an die Uart schicken.
Bascom ist sehr an Dezimalzahlen orientiert und macht aus der 2 ein 
00000010 was dem Zeichen <STR> entspricht. Printbin ist aber völlig 
losgelöst von dem ASCII, deshalb auch kein LF und CR.

Edit:
Printbin &b00000010
oder
Printbin &h02
würden natürlich das Gleiche machen.

Gruß,
Norbert

von Tom Z. (tom_z)


Lesenswert?

Hallo,

danke Norbert für deine Erklärung nochmal.

hab noch was gefunden im Internet zu PPLA.
http://www.teleprinter.com/soporte/Manuales/Argox/Argox%20Manual%20programacion%20impresoras%20Argox%20PPLA.pdf

Aber wie kriege ich jetzt den Drucker zum drucken?

Diese Befehle verstehe ich ja (<STX>XX) aber wie sieht es mit den 
Befehlen auf Seite 30 vom Aufbau her aus?
www.primera.com/pdfnew/cyclone_om.pdf

MfG Tom

von Johannes G. (gutenberg)


Lesenswert?

So wie ich das verstehe (ungetestet):
1
' Eine einfache Etikette definieren und im Drucker speichern
2
3
printbin 2
4
print "L";
5
print "190001000000000Gutenberg";
6
' hier brauchts evt. noch ein printbin 2 dazwischen
7
print "E";
8
9
10
' Gespeicherte Etikette drucken
11
12
printbin 2
13
print "G";

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.