Seite 1 von 1
Bon Drucker, Ansteuerung
Verfasst: 30.12.2011 00:53
von Gerold61
Ich habe einen Bon Drucker (NCR7193) mit serieller Schnittstelle.
Der Treiber ist installiert, der Drucker wird von Win XP (Com 1) richtig erkannt.
Das Drucken über DrawText, usw. funktioniert. Die Funktion "schneiden" kann ich über Ascii aber nicht ausführen.
Also habe ich es über die Com direkt versucht.
Das funktioniert auch, aber nur wenn der Drucker an Com 2 angeschlossen ist.
Wenn ich versuche Com 1 zu öffnen erhalte ich keinen Zugang.
Was mache ich falsch ?
Code: Alles auswählen
If OpenSerialPort(0, "COM2", 19200, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
Debug "Success"
Else
Debug "Failed"
End
EndIf
WriteSerialPortString(0, "Zeile 1 " +Chr(13), #PB_Ascii)
WriteSerialPortString(0, "Zeile 2 " +Chr(13) , #PB_Ascii)
WriteSerialPortString(0, "usw. " +Chr(13) , #PB_Ascii)
WriteSerialPortString(0, Chr(27)+Chr(109) , #PB_Ascii); Papier schneiden
CloseSerialPort(0)
Re: Bon Drucker, Ansteuerung
Verfasst: 30.12.2011 01:24
von Falko
Was sagt die Zahl 109 aus?
wenn ich in der hier gefundenen Beschreibung schaue, sollte dort 19 stehen.
http://www.alsys.ro/ncr/doc/Old%20Model ... _guide.pdf
bzw. sind dort mehrere HEX-Werte angegeben:
Code: Alles auswählen
--------------------------------
19 Full Knife Cut
1B 69
--------------------------------
1A Partial Knife Cut
1B 6D
--------------------------------
Gruß,
Falko
Re: Bon Drucker, Ansteuerung
Verfasst: 30.12.2011 01:55
von Gerold61
Stimmt, so steht es auch im Handbuch. Funktioniert aber so wie beschrieben.
Ist auch nicht meine Sorge.
Ich scheitere daran das ich nicht auf die Com1 zugreifen kann, über die der Drucker angemeldet ist.
Re: Bon Drucker, Ansteuerung
Verfasst: 30.12.2011 10:01
von Falko
Ok, dann habe ich das wohl falsch interpretiert.
Geräteeinstellungen hast du dann wahrscheinlich auch nachgeschaut,
das dein COM1 mit dem Drucker korrekt eingestellt ist.
Wenn alles überprüft ist, dürfte eher ein Fehler in deiner COM1-Schnittstelle
sein.
Programmtechnisch gesehen ist es soweit in Ordnung. Wenn du einen anderen
Computer hast, würde ich diesen Schnipsel mal auf den ausprobieren, ob das mit
COM1 funktioniert. Eine andere Möglichkeit wäre MVCOM zu probieren.
http://marc.vitry.pagesperso-orange.fr/mvcom.htm
Gruß,
Falko
Re: Bon Drucker, Ansteuerung
Verfasst: 30.12.2011 12:09
von DarkDragon
Greift ein anderes Programm oder vielleicht dein eigenes schon auf den Port "COM1" zu? Man darf ihn nur einmal öffnen. Vielleicht ist das Problem, dass er als Drucker im System eingetragen ist und das System den Port dauerhaft verwendet.
Re: Bon Drucker, Ansteuerung
Verfasst: 30.12.2011 15:58
von HeX0R
Versuche einfach mal mit Hyperterminal Com1 zu öffnen.
Wenn das auch nicht geht, musst du heraus bekommen, wer den Port dauerhaft besetzt.
MVCom wird wohl eher nichts bringen, die macht auch nicht viel anderes, als die PureBasic-Lib.
Hiermit kannst du dir anzeigen lassen, welche Com-Ports du überhaupt hast, und mit welchem Namen sie angesprochen werden können:
Code: Alles auswählen
Global NewList AvailableComs.s()
Procedure GetAvailableComPorts()
Protected hKey, lpcbName, lpName.s, a$, lType, i
If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "HARDWARE\DEVICEMAP\SERIALCOMM", 0, #KEY_QUERY_VALUE, @hKey) = #ERROR_SUCCESS
ClearList(AvailableComs())
lpName = Space(255)
Repeat
lpcbName = 255
If RegEnumValue_(hKey, i, @lpName, @lpcbName, 0, 0, 0, 0) = #ERROR_SUCCESS
a$ = Left(lpName, lpcbName)
If a$ = ""
Break
EndIf
lpcbName = 255
lType = 0
If RegQueryValueEx_(hKey, a$, 0, @lType, @lpName, @lpcbName) = #ERROR_SUCCESS
AddElement(AvailableComs())
AvailableComs() = lpName
EndIf
i + 1
Else
Break
EndIf
ForEver
RegCloseKey_(hKey)
EndIf
EndProcedure
GetAvailableComPorts()
ForEach AvailableComs()
Debug AvailableComs()
Next
Einige virtuelle Com-Port-Treiber nennen sich nämlich nicht zwangsläufig COMx und können dann auch so nicht geöffnet werden.
Re: Bon Drucker, Ansteuerung
Verfasst: 31.12.2011 04:13
von Gerold61
Vielen Dank für die Hilfe. Ich habe die Namen der Com überprüft, aber keinen Fehler erkannt.
Ich habe es schon fast befürchtet.
Es sieht wohl so aus das die Com vom Treiber permanent belegt ist.
Entferne ich den Treiber, kann ich problemlos auf die Com und den Drucker zugreifen.
Ich brauche einen anderen Weg, wie ich die Steuerzeichen an den Drucker senden kann oder einen neuen Drucker.
Re: Bon Drucker, Ansteuerung
Verfasst: 31.12.2011 10:15
von Falko
Ich habe jetzt irgendwo gelesen, das man diesen Bon Drucker nicht
über Windowstreiber nutzen kann und direkt über DOS die Codes auf
.... >COM gesendet hat.
http://www.gutefrage.net/frage/wie-und- ... de-aufgeht
Also müsste es ohne Treiber dann auch über
PB direkt auf COM ohne Treiber funktionieren indem du dann vielleicht
die Codes nach einem OpenCOM schickst. Aber das wirst du wahrscheinlich
schon probiert haben, oder?
[Edit]
Hier habe ich die technische Referenz dazu gefunden und so, wie das aussieht,
braucht man wohl den Treiber nicht und spricht den Drucker direkt über COM1 an.
Nur sind hier die Beispiele in VisualBasic gemacht, wie die Steuercodes gesendet werden
müssen.
Sorry, es sind nur einige Hinweise, da man selbst so was nicht zu Hause hat,
um es testen zu können. Ich hoffe dieser Link und die VB-Beispiele bringen dich weiter.
http://www.alsys.ro/ncr/doc/RealPOS/Pri ... _guide.pdf
Das ist eigentlich das gleiche Handbuch, aber auf Seite 80 steht ja, wie in VB die Steuerzeichen
ausgibt, wobei sie hier in HEX-Codes gesendet werden.
[/Edit]
Gruß,
Falko
Re: Bon Drucker, Ansteuerung
Verfasst: 31.12.2011 11:04
von DarkDragon
Gerold61 hat geschrieben:Es sieht wohl so aus das die Com vom Treiber permanent belegt ist.
Entferne ich den Treiber, kann ich problemlos auf die Com und den Drucker zugreifen.
Ich brauche einen anderen Weg, wie ich die Steuerzeichen an den Drucker senden kann oder einen neuen Drucker.
Eventuell hilft sowas:
http://www.heise.de/software/download/s ... tter/54435
Oder aber du schaust nach einem SDK von dem Hersteller des Druckers. Wenn solche Treiber installiert werden, sollte man die Geräte nur durch das Hersteller SDK ansteuern.
Re: Bon Drucker, Ansteuerung
Verfasst: 31.12.2011 16:27
von Gerold61
Vielen Dank für die Hinweise.
Das drucken über die Com, ohne Treiber ist natürlich möglich.
Ist aber etwas unbequem, gerade bei Grafiken und wechselnden Schriften.
Das Papierschneiden habe ich über die PaperEnd Funktion hinbekommen.
Ich habe jetzt die Com2 genutzt um die Kassenlade (per Relay) zu öffnen.
Den Kompromiss mußte ich eingehen, weil das Prog. ab dem nächsten Jahr laufen muß.
Ich kann nicht glauben das der Hersteller keinen Ascii Code vorgesehen hat um die Sonderfunktionen zu nutzen.
Damit werde ich mich als nächstes noch einmal intensiv beschäftigen.