Hallo zusammen, ich möchte gerne einen Münzautomat ansteuern. Wichtig ist, dass ich irgendwo den Münzwert abspeichern kann. Hat hier jemand Erfahrung mit cctalk und das mit JAVA ? Ich würde gerne einen solchen Münzautomaten ansteuern: http://www.whberlin.de/uploads/pics/EMP800_14v6_09.jpg Ich freue mich über jede Hilfe. Viele Grüße
Ein kurzes Googeln verrät, dass es mehrere unfertige oder rudimentäre ccTalk Java Bibliotheken gibt. Hast du die von mal ausprobiert? Wenn ja, und die taugen nichts, hast du zumindest die Hardware und Treiber für ccTalk? Vorher muss man sich nicht über Java unterhalten. Und dann, hast du eine JNA oder JNI Interface zum Treiber / der Hardware?
Das Ganze hat erstmal nichts mit Java im Speziellen zu tun, daher hier mal die Basics: Das ccTalk-Protokoll kann man sich hier herunterladen: http://www.cctalk.org/ Für den Anfang reichen eigentlich drei Befehle aus, wenn es nur um einen Münzprüfer geht: 231: Modify Inhibit Status (setzt eine Annahme-Maske (welche Münzen dürfen angenommen werden)) 228: Modify Master Inhibit Status (wie 231, nur globales Flag verundet mit den einzelnen Inhibit-Bits)) 229: Read Buffered Credit or Error Codes (liefert die eingeworfenen Münzen zurück) Die Befehle kann man auch erstmal nur über ein Terminal-Programm an den Münzprüfer schicken und danach in Java implementieren. Man muss nur beachten, dass ccTalk Halb-Duplex-Betrieb mit 5V-Pegeln macht. Zum Anschluss an eine RS232-Schnittstelle ist also noch ein Konverter nötig (entweder gleich mitbestellen oder nach "RS232 ccTalk converter" suchen und selber bauen).
ccTalk kenn ich, hab ein paar Slaves nachprogrammiert. Das Protokoll von Hand zu implementieren ist super einfach. Alles was du da in Java brauchst, ist eigentlich nur eine Lib um auf die serielle Schnittstelle zuzugreifen. Christoph B. schrieb: > Man muss nur beachten, dass ccTalk Halb-Duplex-Betrieb Richtig, das Halb-Duplex muss man beachten, der rest ist ziemlich einfach. Marc M. schrieb: > Münzautomat Genaugenommen ist es ein Muenzpruefer :) Das Protokoll ist immer so aufgebaut:
1 | [Zieladresse][Anzahl der Datenbytes][Quelladresse][Kommando][Checksumme] |
1 | 0x04 0x00 0x01 0xFE 0xFB |
Ziel: Slave mit Adresse 0x04 Anzahl der Datenbytes: 0 Absender: 0x01 Kommando: 0xFE Checksumme: 0xFB Ist die Anzahl der Datenbytes != 0, so stehen die Datenbytes zwischen dem Kommando und der Checksumme
1 | [Zieladresse][Anzahl der Datenbytes][Quelladresse][Kommando][Datenbytes][Checksumme] |
Das was der Master sendet und was der Slave antwortet ist also immer (naja, fast immer. Es gibt ein oder zwei kommandos wie die antwort kuerzer ist) mind. 5 Byte lang, und maximal 5 + 255 Datenbytes lang. Wir reden hier immer ueber Byte = 8 Bit! Die Adressen (Ziel/Absender) sind bytes, gehen also von 0 bis 255. anzahl der Datenbytes: 0-255, Kommando: 0-255 usw. Christoph B. schrieb: > Für den Anfang reichen eigentlich drei Befehle aus, wenn es nur um einen > Münzprüfer geht: Ich wuerde die 230 mit nehmen, um zu pruefen, ob der Status wirklich gesetzt wurde. 209 & 210 koennte man auch mitnehmen.
Hallo, erstmal vielen Dank für die schnelle Antworten. Noch eine Ergänzung zunächst: Der Münzautomat soll über USB laufen, also nicht über RS232. Da ich noch nicht viel von der Thematik verstehe, wollte ich zunächst prüfen/fragen, ob das überhaupt mit JAVA möglich ist. bevor ich den Münzprüfer überhaupt kaufe. Wo finde ich diese rudimentäre ccTalk Java Bibliotheken Welche Schritte sind meinerseits notwendig? 1) Zuerst benötige ich das oben genannten Modell natürlich (EMP800) 2) Herunterladen des ccTalk Protokoll ? 3) ... Was genau macht das ccTalk Protokoll? Ist das quasi dazu da, dass wenn eine Münze eingeworfen wird, dass dann ein Befehl ausgeführt wird? Vielen Dank für jede Hilfe.
:
Bearbeitet durch User
Marc M. schrieb: > Der Münzautomat soll über USB laufen, also > nicht über RS232. USB-Seriell-Wandler dazwischen. Der Muenspruefer braucht aber eine eigene Spannugsversorgung, den kannst du nicht ueber USB mit Strom versorgen. Kann sein, dass der 12V als Spannungsversorgung braucht, aber ist ja dem Datenblatt des Herstellers zu entnehmen. Marc M. schrieb: > 2) Herunterladen des ccTalk Protokoll ? Du solltest dir die Spezifikationen anschauen, ja, denn da steht drin, welche Befehle es gibt, und welche Antworten darauf zu erfolgen haben. Marc M. schrieb: > Was genau macht das ccTalk Protokoll? Es ist einfach nur ein Protokoll, was regelt, wer, wann, wie redet bzw. wie die nachrichten aufgebaut sind. Das hab ich ja oben dargestellt. Marc M. schrieb: > Ist das quasi dazu da, dass wenn > eine Münze eingeworfen wird, dass dann ein Befehl ausgeführt wird? Nein! Das Protokoll hat nichts damit zu tun, was du tust, wenn eine Muenze eingeworfen wird. Du wirfst eine Mueze ein, und der Muenzpruefer registriert das. Punkt, mehr nicht. Der Muenzprueffer, und auch Hopper, sind die Slaves. Du bist der Master. Entsprechend dem Master-Slave-Prinzip halten die Slaves solange die Klappe, bis du sie was fragst. Wenn du als Master also wissen moechtest, ob eine Muenze eingeworfen wurde, musst du den Slave frage: Hallo Muenzpruefer, wurde eine Muenze eingeworfen? Darauf kann der Muenzprufer nun mit Nein antworten, oder er Antwortet mit einem Ja, und sagt dir auch, was fuer eine Muenze eingeworfen wurde. Vielleicht erkennst du jetzt schon: Wenn du etwas wissen willst, musst du aktiv anfragen, d.h. du musst deine Slaves die ganze Zeit pollen. Natuerlich kannst du nicht so schnell pollen wie dein PC das hergibt, denn durch die Halb-Duplex-Uebertragung musst du immer auf eine Antwort warten. Marc M. schrieb: > wollte ich zunächst > prüfen/fragen, ob das überhaupt mit JAVA möglich ist. Natuerlich. Das kannst du auch gerne in Assembler machen, wenn du lust darauf hast :) Du brauchst zugriff auf einen Seriellen Port/Usb-Port und du musst ein bisschen Bitmanipulation betreiben. sollte also in jeder Sprache gehen. C/C++, Python, Java, C#,... such dir was aus :) Marc M. schrieb: > Was genau macht das ccTalk Protokoll? Ist das quasi dazu da, dass wenn > eine Münze eingeworfen wird, dass dann ein Befehl ausgeführt wird? Neben ccTalk gibt es noch das MDB-Protokoll - Multi-Drop-Bus - das ist aber... naja, schon ziemlich kacke. Da wird, soweit ich weiss, mit 9 bit statt mit 8 bit uebertragung gearbeitet. Das bringt mal ganz andere Probleme mit sich... Stell dir das alles mal nicht zu kompliziert vor. das Protokoll regelt nur wie eine Nachricht auszusehen hat und wie die uebertragen wird, mehr nicht. Was du dann tust, wenn du als Antwort z.B. ein 0xCD bekommst, hat nichts mit dem Protokoll zu tun, zumindestens solange du Master bist.
Kaj G. schrieb: > Marc M. schrieb: >> Der Münzautomat soll über USB laufen, also >> nicht über RS232. > USB-Seriell-Wandler dazwischen. WH hat Münzprüfer mit USB-Anschluss, da wird kein USB-Seriell-Wandler mehr benötigt. Ich weiß aber nicht, ob die dann einfach nur einen virtuellen COM-Port emulieren oder spezielle Treiber benötigen. Das steht aber im Datenblatt des Münzprüfers mit Sicherheit drin und ansonsten hat WH auch einen guten Support. Wir setzen immer nur Münzprüfer mit ccTalk direkt ein. Von MDB würde ich auch erstmal die Finger lassen. Wir haben das zwar komplett implementiert in unserem Software-Stack, aber wenn es nur um einen Münzprüfer geht, ist ccTalk einfacher und schneller umzusetzen.
Christoph B. schrieb: > WH hat Münzprüfer mit USB-Anschluss ok, das wusste ich nicht. Wir haben nur Azkoyen...
Vielen Dank für die weiteren Antworten. So langsam kommt Lichts ins Dunkle. Was mir allerdings noch unklar ist, wie programmiere ich generell den Münzautomaten? Ich meine damit: irgendwie muss ich dem Münzautomat ja sagen, welche Münzen er annehmen darf, wie die Münzgröße ist usw.? In der Beschreibung des Münzautomaten wird hierbei von einer Software gesprochen: wheasy 4 - wird das damit gemacht? Zusätzlich habe ich dann mein JAVA Programm am Laufen, welches mir dann quasi alle x Sekunden (oder wie auch immer eingestellt) prüft, ob es eine neue Münze gibt etc.? Ist das so korrekt?
Marc M. schrieb: > Was mir allerdings noch unklar ist, wie programmiere ich generell den > Münzautomaten? Gar nicht. Der Münzprüfer enthält eine Firmware, die genau das macht, was sie machen soll. Wenn du genug von den Dingern kaufst, kannst du dem Hersteller ein paar vorgaben zu dem Protokollablauf machen, der Hersteller setzt das dann um, und flasht das ganze. Der Münzprüfer ist für dich eine Blackbox, die einfach so funktioniert. Anschließen, befehle senden und auf antwort warten. Fertig :) Marc M. schrieb: > wie die Münzgröße ist usw.? Die Münzgröße ist dem Münzprüfer bekannt, oder glaubst du, du musst dem Teil sagen, welchen durchmesser die Münzen haben? Vergiss das ganz schnell wieder. Der Münzprüfer weiß alles, was er über Münzen wissen muss. Marc M. schrieb: > irgendwie muss ich dem Münzautomat ja sagen, welche > Münzen er annehmen darf, wie die Münzgröße ist usw.? > In der Beschreibung des Münzautomaten wird hierbei von einer Software > gesprochen: wheasy 4 - wird das damit gemacht? Ja, kann sein, dass du damit noch ein paar einstellungen an dem Münzprüfer vornehmen kannst. http://www.crownleisure.co.uk/Documents/Manuals/WH%20Munzprufer/WHTools/program%20files/whTools%204/Doc/wheasy%204%20%20Kurzanleitung.pdf Marc M. schrieb: > Zusätzlich habe ich dann mein JAVA Programm am Laufen, welches mir dann > quasi alle x Sekunden (oder wie auch immer eingestellt) prüft, ob es > eine neue Münze gibt etc.? Jap. Wobei es da (im echten leben, also in entsprechenden Automaten) noch mehr zu prüfen gibt. Marc M. schrieb: > Ist das so korrekt? Im großen und ganzen: ja :)
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.