Hallo, ich habe hier einen Nadeldrucker um Paketscheine zu beschriften. Mit einigen Tricks habe ich den Drucker dazu gebracht im gewünschten Zeilenabstand zu drucken und mit die Paketscheine richtig auszufüllen. Das ganze läuft unter XP und mit einem Word Makro. Jetzt habe ich versucht den Drucker unter Vista und Win7 zum laufen zu bringen. Der Drucker ist übrigends ein ND77 von Siemens Nixdorf (kompatibel zum Epson TM-U950). Dafür habe ich Vista 32 bit und Win 7 32 und 64 bit Treiber gefunden. Keine von den Treibern funktionieren, leider. Da mich das langsam echt aufregt, und der NUR zwei Adressen drucken soll, hab ich mir folgendes überlegt. Ich nehme einen µC und schließen dessen UART an seine Serielle Schnittstelle an, und der sorgt für die Fachauswahl, Formatierung, etc. In den µC kommen nur die reinen Textdaten (also Name, Adresse...) Nun stellen sich folgende Fragen: -Welche Schnittstelle kann ich unter Windows 7 für den Output verwenden? RS232 geht irgendwie nicht so recht (wobei ich meinen Programmer mit neuinstallation des Comports mal zum laufen gebracht habe) USB geht sicherlich irgendwie, bloß wie... Dann welche Sprache soll ich verwenden? Ich kann bisher nur C (reine Konsolenanwendungen und für µC's) und etwas VB, was aber für Win7 wohl der Oberschwachsinn ist. Wäre nett wenn mir jemand ein paar Tipps geben könnte. Danke
wo ist das Problem? Du brauchst doch für so ein drucker keinen Treiber. Schließe ihn einfach in den Comport oder einen USB zu Serial wandler an und schicke die kommandos an diesen comport. Die Druckerbefehle sollte im Handbuch zu drucker stehen.
mike schrieb: > Ich nehme einen µC und schließen dessen UART an seine Serielle > Schnittstelle an, und der sorgt für die Fachauswahl, Formatierung, etc. > In den µC kommen nur die reinen Textdaten (also Name, Adresse...) Das ist unnötig viel Aufwand. Den Drucker kannst Du unter jeder Windows-Version problemlos über die serielle Schnittstelle ansteuern. Du darfst nur nicht versuchen, über einen Windows-Druckertreiber zu drucken, Du musst die serielle Schnittstelle aus Deinem zu schreibenden Programm direkt ansteuern und die für den Drucker relevanten Steuerzeichen an den Drucker senden. Diese Vorgehensweise ist seit etlichen Jahrzehnten die übliche. Du musst allerdings eine Programmiersprache/-Umgebung verwenden, in der Du mit der seriellen Schnittstelle kommunizieren kannst, Word-Macros scheiden da eher aus. Wobei Du --für erste Gehversuche-- die Sache auch zweiteilen kannst: Erzeuge mit der Programmiersprache Deiner Wahl eine Datei, in der alle Steuerzeichen etc. drin sind, die Du an den Drucker senden möchtest. Diese kannst Du mit
1 | copy datei.dat COM2 /b |
an die serielle Schnittstelle ausgeben (statt COM2 natürlich den richtigen Namen angeben; ist die Nummer der Schnittstelle größer als 9, musst Du statt COM10 die Schreibweise \\.\COM10 verwenden). Vorher musst Du mit
1 | mode COM2 |
die Schnittstellenparameter so konfigurieren, wie sie der Drucker haben will, also Baudrate, Handshake etc. einstellen. Hilfe dazu gibts mit
1 | mode /? |
Wenn das klappt, kannst Du die Ansteuerung der seriellen Schnittstelle auch direkt in Dein Programm integrieren, wie man serielle Schnittstellen unter Windows programmiert, dürftest Du in etlichen Threads hier im Forum finden können.
am ende der Doku stehen die Benötigten commandos http://www.wincor-nixdorf.com/internet/cae/servlet/contentblob/49090/publicationFile/9154/ND77_Operating_Manual_german.pdf
Hallo Rufus, danke für die ausführlichen Informationen, ich mache mich gleich mal dran. Gruß Mike
Ah ja, wie kommen denn die Zeichen in die *.dat Datei rein? Einfach als Ascii code? Also beispielsweiße 27 105 sollte das Papier schneiden? Funktionier nämlich nicht so recht
mike schrieb: > Ah ja, wie kommen denn die Zeichen in die *.dat Datei rein? Einfach als > Ascii code? nein als hex oder binary. also für die 27 darf nur ein byte mit dem wert 27 reingeschrieben werden - ein ESC. Notepad++ kann sotwas machen. Oder jeder andere Hexeditor.
Ok, den zieh ich mir mal runter. Denn wenn ich 27 105 eingebe, kommen total wirre zeichen raus (Vista 64 bit). Find ich bisschen seltsam. Jetz probier ich erst den hexeditor
mike schrieb: > Vista 64 bit das ist zwar schön zu wissen, aber ziemlich egal. Es würde auch unter DOS das gleich rauskommen, wenn man es als klartext in eine Datei schreibt. Ich dachte du kannst C Programmieren, dann sollte sotwas eigentlich klar sein.
1B69 macht er mir aus ESCi (also ESC als Steuerzeichen, nicht in Ascii) Nach dem speichern, mach ich copy zum Com Port, aber er durckt wieder nur wirre zeichen...
Das hat nix mit Programmieren können zu tun oder nicht. Ich hab sowas nunmal noch nie gemacht. Wenn ich mein 1B69 habe, und es speichere, ist es doch immernoch als ASCII. Wie soll ich dass denn speichern, dass es richtig interpretiert wird? Woher soll der rechner wissen, dass es HEX ist? 0x1B0x69 klappt ebenfalls nicht
doch das hat sehr wohl mit den Grundlagen der Programmierung zu tun!! speicher doch mal die 27 in einer Datei - diese Datei darf dann nur 1byte groß sein und dort muss mit dem hexeditor eine 1B drin stehen.
Ich weiß, dass das eine Ascii Zeichen sind und in hex Nunmal der Code des ascii zeichen. Zudem habe ich jetz gerade WinXP ausprobiert. WinXP macht aus meinem 1B69 genau das was es soll. Es schneidet das Papier ab. Und unter Vista 64 Bit druckt er mir auf den BON eine Zeile mit irgendwelchen Zeichen. Warum weiß ich nicht, aber das muss ich wissen.
mike schrieb: > Das hat nix mit Programmieren können zu tun oder nicht. Ich hab sowas > nunmal noch nie gemacht. Wenn ich mein 1B69 habe, und es speichere, ist > es doch immernoch als ASCII. Ob etwas ASCII ist oder nicht, hängt davon ab, wer das File liest und wie er Bytes interpretieren will. Im File selbst stehen die Byte 1B 69 drinnen (zumindest hoffe ich das mal für dich). > richtig interpretiert wird? Woher soll der rechner wissen, dass es HEX > ist? > 0x1B0x69 klappt ebenfalls nicht Wie hast du das File erzeugt?
hast du auch mit der gleichen Datei gedruckt? Wenn es eine andere Datei ist kann es sein das sie eventuell als unicode gespeichert wurde? Es darf kein unterschied zwischen den Windowsversionen geben wenn man den gleichen inhalt an den Drucker schickt.
mike schrieb: > Es schneidet das Papier ab. Und unter Vista 64 Bit druckt er mir auf den > BON eine Zeile mit irgendwelchen Zeichen. Einstellung der Schnittstelle? Baudrate richtig? etc. AUch Vista schickt eine Datei Byte für Byte auf die Schnittstelle. Und zwar jedes Byte so, wie es in der Datei steht.
Also beide Einstellungen der Schnittstellen sind identisch. Die Datei habe ich gerade per USB Stick kopiert, und rübergeschickt. XP => Schneidet den Bon ab Vista => druck wirre Zeichen Ich verstehe es nicht
mike schrieb: > Also beide Einstellungen der Schnittstellen sind identisch. > > Die Datei habe ich gerade per USB Stick kopiert, und rübergeschickt. > > XP => Schneidet den Bon ab > Vista => druck wirre Zeichen > > > Ich verstehe es nicht Was ich tun würde: Anstelle des Druckers mal einen anderen PC anhängen, Terminalprogramm starten und mir ansehen, was da vom Vista so daherkommt.
dann verbinde doch mal das Vista mit dem XP über das serielle kabel (crossover) und schau was das jeweilige rechner sendet.
ALternativ: Es gibt auch Port-Sniffer, die die serielle Schnittstelle überwachen können und jedes Byte protokollieren, welches rein oder raus geht. Aber eines ist sicher: wenn du das Rätsel lösen willst, dann musst du dir Einblick verschaffen, was wirklich über die Leitung geht. Egal wie du das machst. Dasselbe File immer und immer wieder zum Drucker zu schicken bringt dich nicht weiter.
Da kommt garnichts raus...? Ich häng jetzt mal den logic Analyzer hin. Ich habe irgendwie das gefühl, dass das Mainboard eine Makke hatte (macht noch so andere Krumme Dinger, des komische AMD Teil)
Na super, jetzt stellt sich raus, dass die Schnittstelle kontinuierlich Müll über TD sendet... dann wundert mich nix mehr. Die Frage ist nur warum. Bord kaputt oder sonstwas
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.