Forum: PC-Programmierung Daten von PC zu Registrierkasse


von Joedot (Gast)


Lesenswert?

Hallo,

ich habe eine Registrierkasse und einen PC. An der Registrierkasse ist 
zum einscannen für EAN-Artikel ein Barcodescanner über RS232 
angeschlossen.

Ich würde nun gerne vom PC über ein separates RS232-Kabel auf gleich 
weiße "EAN-Nummer" an die Registrierkasse sende. Das alles müsste über 
VBA realisiert werden.

Gibt es da Möglichkeiten?

Danke

von Digi S. (digispark)


Lesenswert?

Die Kommunikation mit der seriellen Schnittstelle erfolgt in VBA über 
eine extra OCX-Datei namens Mscomm32.ocx. Google einfach mal danach. Da 
solltest Du zig Beispiele für die Verwendung finden. Ich persönlich 
nutze für die Entwicklung von Anwendungen, die mit der COM-Schnittstelle 
interagieren aber lieber VB.NET wo möglich. Das .NET-Framework bietet 
bereits fertige Klassen für die Kommunikation mit der Schnittstelle.

von Joedot (Gast)


Lesenswert?

Ok vielen Dank schon mal.

Die Idee ist aus einer Access-Datenbank die EAN-Codes an die 
Registrierkasse zu übertragen. Deswegen auch VBA.
Keine Ahnung ob da auch VB.NET möglich ist.

Werde ich mir heute Abend mal alles durchlesen.

von Joedot (Gast)


Lesenswert?

Habe nun die Registrierkasse über ein Nullmodenkabel an den PC 
angeschlossen (Rs232).
Über VBA habe ich dann versucht mit Hilfe von XMcomm die EAN-Codes an 
die Registrierkasse zu schicken.

Quellcode sieht folgendermaßen aus:
1
Dim Port As XMCOMCRC.XMCOMMCRC
2
Set Port = CreateObject("xmcomcrc.xmcommcrc")
3
4
Port.CommPort = 1
5
Port.Settings = "9600,n,8,1"
6
Port.Output = "1234567891234"

Ich hatte mir erhofft die Zahlen "1234567891234" an die Registrierkasse 
zu senden. Leider reagiert die Registrierkasse nicht.

Bei der Registrierkasse habe ich ebenfalls die Einstellungen auf 
"9600,n,8,1" gebracht.


Ich kann auch leider nichts im Internet finden wie sonst ein 
"Outputfile" von einem Barcode-Scanner aussieht.

Kennt sich da jemand aus oder hat jemand eine Idee?

Kann mir nicht vorstellen, dass das Outputfile von den Barcode-Scannern 
kompliziert ist. Die sind ja eigentlich meißten mit allen Kassen 
kompatibel.

Danke
Mfg

von mh (Gast)


Lesenswert?

Joedot schrieb:
> ich habe eine Registrierkasse und einen PC. An der Registrierkasse ist
> zum einscannen für EAN-Artikel ein Barcodescanner über RS232
> angeschlossen.
>
> Ich würde nun gerne vom PC über ein separates RS232-Kabel auf gleich
> weiße "EAN-Nummer" an die Registrierkasse sende.

fsei??

von Amateur (Gast)


Lesenswert?

Bist Du Dir sicher, dass das Scanner Protokoll ist?
Wenn Du "1234567891234" zur Kasse sendest, erscheint mir das etwas zu 
wenig. Gibt es da keine "Begin-" und keine "Ende-Sequenz", zumindest ein 
Zeilenumbruch oder sogar Zeilenumbruch + Neue Zeile am Ende.

von Martin K. (maart)


Lesenswert?

Reagiert die Kasse auch auf ungültige EAN?

von Amateur (Gast)


Lesenswert?

Ich kann mir nicht vorstellen, dass es ungültige EANs gibt.
Du kannst Dir ja sogar Deine eigenen Codes erstellen.
Was aber stimmen muss sind das Format und eine eventuelle Prüfsumme.
Da die meisten Kassen aber ein Display haben, sollte ein geordneter 
Meckerer schon drin sein.

von Kassenfuzzi (Gast)


Lesenswert?

Ich würde erstens mal einen gültigen EAN-Code senden, ungültige 
Warencodes wird die Kasse vermutlich ignorieren. "1234567891234" ist 
schon mal deshalb kein gültiger EAN13-Code, weil die Prüfziffer (13. 
Stelle) nicht stimmt. Wenn schon 123... dann sollte es "1234567891231" 
sein.

Auf folgender Seite ganz unten gibt es einen Javascript-Rechner, der dir 
die Prüfziffer aus den ersten 12 Stellen ausrechnet:

http://www.arndt-bruenner.de/mathe/scripts/pruefziffern.htm

Als zweites wäre, wie bereits erwähnt, die Kenntnis des 
Scannerprotokolls wichtig. Das kannst du aber leicht herausfinden, wenn 
du den RS232-Anschluss des Scanners an eine PC-Schnittstelle statt an 
die Kassa ansteckst. Die gesendeten Daten kannst du dann ja in einem 
Terminalprogramm ansehen.

von Kassenfuzzi (Gast)


Lesenswert?

>Ich kann mir nicht vorstellen, dass es ungültige EANs gibt.

Gibt es wohl. Du darfst auch nicht beliebige EAN13-Nummern einfach 
selber erfinden. Die Vergabe dieser Nummern ist in Europa eindeutig 
geregelt:

http://de.wikipedia.org/wiki/European_Article_Number

Die einzige Freiheit, die du hast, ist die Vergabe der Artikelnummer, 
das ist aber nur ein Teil der 13 Stellen.

von Martin K. (maart)


Lesenswert?

Amateur schrieb:
> Was aber stimmen muss sind das Format und eine eventuelle Prüfsumme.

Das meinte ich mit ungültig.

von Joedot (Gast)


Lesenswert?

Danke schon mal für die Infos.

Ich habe heute versucht einen gültigen EAN-Code (1234567891231) zu 
senden. Leider reagiert die Kasse immer noch nicht.

Normalerweiße reagiert die Kasse beim einscannen (Barcodescanner) eines 
neuen EAN-Codes. Man muss dann nur noch an der Kasse den Preis, Name und 
Warengruppe angeben.

Ich denke es scheitert immer noch an dem falschen Scannerprotokoll das 
ich sende. Leider habe ich nur keine Ahnung wie so ein Protokoll 
aussehen soll...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Joedot schrieb:
> Ich denke es scheitert immer noch an dem falschen Scannerprotokoll das
> ich sende. Leider habe ich nur keine Ahnung wie so ein Protokoll
> aussehen soll...

Dann schalte dich doch endlich mal mit dem PC dazwischen!

von Digi S. (digispark)


Lesenswert?

die meisten Scanner schicken am Ende der gescannten Zeichenfolge noch 
einen Zeilenumbruch (kann man in der Regel am Scanner konfigurieren). 
Häng mal in Access beim Senden eines der Zeichen
- vbCr
- vbLf
- vbNewLine
an den EAN-Code.

Das erst ist das sog. Wagenrücklaufzeichen. Das Zweite der eigentlich 
Zeilenvorschub und das dritte eine Kombination aus beiden. Unter 
Umständen wartet die Kasse auf eines davon. Probier die mal alle drei 
durch.

von Martin K. (maart)


Lesenswert?

Verbinde doch den Scanner mal mit HyperTerminal (HTerm) und siehe dir 
an, was er sendet.

von Joedot (Gast)


Lesenswert?

Habe Hterm installiert. (Danke für Info)

Danach habe ich das Nullmodenkabel an Com1 und Com2 (gleicher PC) 
angeschlossen.
Mit folgendem Quellcode aus Access bzw. VBA habe ich "1234567891231" + 
vbCrLf gesendet:
1
Private Sub Befehl1_Click()
2
3
Dim MyObject As XMComCRC.XMCommCRC
4
Set MyObject = CreateObject("xmcomcrc.xmcommcrc")
5
MyObject.Settings = "9600,8,n,1"
6
MyObject.Handshaking = comXOnXoff
7
MyObject.CommPort = 1
8
MyObject.PortOpen = True
9
MyObject.RTSEnable = True
10
MyObject.Output = "1234567891231" + vbCrLf
11
12
End Sub

Ergebnis war das ich in Hterm 1234567891231 + "newline" auf Com2 
empfangen konnte.
Also senden aus Access müsste funktionieren!

Da ich heute leider nicht an den Barcodescanner ran komme werde ich erst 
morgen/übermorgen testen können was der Barcodescanner senden.

Aber danke schon mal für eure Hilfe!

von Joedot (Gast)


Lesenswert?

Hi,

habe nun endlich mal messen können.

Habe versucht den Scanner an den PC anzuschließen und was einzuscannen. 
Leider ging dies nicht da der Scanner scheinbar seine Stromversorgung 
durch den Com-Port der Registrierkasse bekommt.


Glücklicherweise konnte ich den Rs232-Stecker an dem Scanner 
abschrauben. Angelötet ist Pin 1, Pin2, Pin 3, Pin 5, Pin 7 und Pin 9.

Ich habe nun mal die Pins an der Registrierkasse mit einem Multimeter 
durchgemessen. Spannung habe ich jeweils gegen Pin 5 (GND?) gemessen.
Ergebnis (Pins an der Registrierkasse):

Pin 1: 0V
Pin 2: 0V
Pin3: -5,5V
Pin 5: GND (?)
Pin 7: -5,5V
Pin 9: +5V


Danach habe ich den Scanner an die Registrierkasse angeschlossen und 
direkt an den Lötverbindungnen des RS232-Stecker gemessen
Ergebnis:

Pin 1: -6V
Pin 2: 5,5V
Pin3: 5,5V
Pin 5: GND (?)
Pin 7: -5,5V
Pin 9: -5V

Mit den Vorzeichen (+ bzw. -) bin ich mir  nicht sicher da ich das 
Gefühl habe manchmal sind die anders.

Glaub ist alle etwas komplizierter als ich mir erhofft habe.

Kann mir jemand helfen oder Tipps geben.

Ziel ist immer noch die EAN-Codes per Rs232 (Nullmodenkabel) von PC zur 
Kasse zu schicken.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Löte dir doch einfach einen 1:1 zwischenstekcer, an dem machst du dir 
einen Abzweig der (von Scannerseite gesehen) TX Leitung und hängst die 
am PC an die RX Leitung (ggf. Widerstand zur Strombegrenzung vorsehen 
falls doch unerwartete Spannungspegel auftreten). Dann kannst du die 
Sache "belauschen" und der Scanner bekommt trotzdem alle 
Daten/Spannungen von der Kasse.

Häufig hilft auch das Handbuch weiter, ggf. ist das gar kein "echtes" 
RS-232 und du brauchst noch einen Adapter in Form eines vorgefertigten 
Bausteins oder eines uC...

von Joedot (Gast)


Lesenswert?

So habe mir heut mal so ein Stecker gebastelt:

Hab an den Pin 2 von Scanner (female-Stecker) ein Kabel gelötet. Die 
andere Seite des Kabels habe ich an Pin 2 eines neuen RS232-Steckers 
(female) gelötet.

Den neuen Stecker habe ich dann in den PC gesteckt.
Leider konnte Hterm nichts empfangen...

Hab ich was falsch gemacht?

Müsste doch passen da Pin 2 (male) doch "Eingang" am PC ist oder?

von Amateur (Gast)


Lesenswert?

Reden die auch beide +/-12V?

hterm steht auf jeden Fall darauf.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Mach mal bitte ein Photo vom Aufbau und besorge dir die Anleitung von 
dem Scanner/Kasse, es kann sein das da ganz andere Spannungspegel 
herrschen als der PC erwartet.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Joedot schrieb:
> Hab an den Pin 2 von Scanner (female-Stecker) ein Kabel gelötet. Die
> andere Seite des Kabels habe ich an Pin 2 eines neuen RS232-Steckers
> (female) gelötet.

Du hast Masse (GND) vergessen. An 9poligen RS232-Schnittstellen ist das 
Pin 5.

von Joedot (Gast)


Lesenswert?

Thema noch aktuell.

Bin diese Woche leider nur geschäftlich unterwegs.

Hab mal Firmen angeschrieben und versuche die Anleitung zu bekommen. 
Denk aber mehr als die normale Bedienungsanleitung (da steht nichts 
drin) geben die nicht raus.

PC/hterm erkenn aber glaub auch Spannungen unter +-12V. Dies dürfte 
nicht das Problem sein.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Joedot schrieb:
> PC/hterm erkenn aber glaub auch Spannungen unter +-12V.

Das macht nicht das Programm, dafür ist die Hardware der Schnittstelle 
zuständig.

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.