Bon Drucker, Ansteuerung

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
Gerold61
Beiträge: 12
Registriert: 09.01.2010 12:05
Computerausstattung: WIN 10
PureBasic 7.52 für Windows (x64 64-bit)
Wohnort: Cuxhaven

Bon Drucker, Ansteuerung

Beitrag 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)
PureBasic 4.4
XP SP3
INTEL CORE QUAD
2 GB
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Re: Bon Drucker, Ansteuerung

Beitrag 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
Bild
Win11 Pro 64-Bit, PB_6.11b1
Gerold61
Beiträge: 12
Registriert: 09.01.2010 12:05
Computerausstattung: WIN 10
PureBasic 7.52 für Windows (x64 64-bit)
Wohnort: Cuxhaven

Re: Bon Drucker, Ansteuerung

Beitrag 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.
PureBasic 4.4
XP SP3
INTEL CORE QUAD
2 GB
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Re: Bon Drucker, Ansteuerung

Beitrag 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
Bild
Win11 Pro 64-Bit, PB_6.11b1
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Bon Drucker, Ansteuerung

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
HeX0R
Beiträge: 2961
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Bon Drucker, Ansteuerung

Beitrag 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.
Gerold61
Beiträge: 12
Registriert: 09.01.2010 12:05
Computerausstattung: WIN 10
PureBasic 7.52 für Windows (x64 64-bit)
Wohnort: Cuxhaven

Re: Bon Drucker, Ansteuerung

Beitrag 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.
PureBasic 4.4
XP SP3
INTEL CORE QUAD
2 GB
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Re: Bon Drucker, Ansteuerung

Beitrag 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
Bild
Win11 Pro 64-Bit, PB_6.11b1
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Bon Drucker, Ansteuerung

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Gerold61
Beiträge: 12
Registriert: 09.01.2010 12:05
Computerausstattung: WIN 10
PureBasic 7.52 für Windows (x64 64-bit)
Wohnort: Cuxhaven

Re: Bon Drucker, Ansteuerung

Beitrag 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.
PureBasic 4.4
XP SP3
INTEL CORE QUAD
2 GB
Antworten