Seite 1 von 2

Münzprüfer und Purebasic ?

Verfasst: 05.08.2011 15:16
von ram.zez
Hallo Liebe Pure´ler.
Ich habe mich die letzte Zeit sehr Intensiv mit PB ausseinander gesetzt und es gefällt mir sehr gut.
Es ist meine erste Sprache die ich lerne.

Ich würde gerne mir ein Internetcafe Interface coden.
Dafür muss ich auf einen Münzprüfer zugreifen.Dieser hat normal Treiber DDL´s und es gibt welche mit einem CCTalk Protokol was wie eine Lib anzusehen ist.Aber kann ich darauf auch auf mit Purebasic zugreifen? Der Prüfer arbeitet über USB.

Wäre nett wenn ich hier ein paar anregungen bekommen würde :)

Danke

Re: Münzprüfer und Purebasic ?

Verfasst: 05.08.2011 15:29
von STARGÅTE
PureBasic alleine wird die wohl nicht steuern können.

Aber du kannst mit PureBasic auf die Funktionen der DLL/Lib zugreifen und diese Ausführen lassen.
Dafür musst du natürlich wissen, welche Parameter erwartet werden.

Re: Münzprüfer und Purebasic ?

Verfasst: 05.08.2011 15:33
von ts-soft
Wenn es eine C-API Schnittstelle gibt, ist es kein Problem. Bei einer C++ (COM-Schnittstelle) wird es dann
schon aufwendiger und könnte Probleme geben.

Aber ohne vorliegende Doku (Header-Dateien usw.) läßt sich nicht viel sagen.

Re: Münzprüfer und Purebasic ?

Verfasst: 05.08.2011 16:07
von ram.zez
http://www.aus.at/support/cctalk.htm
Hier bei der Dokumentation 2 sind Header Daten und Co vorhanden.
Es gibt sau wenig Infos im Netz über CCtalk.Noch nichtmal Beispiel Sources in anderen Sprachen.

Re: Münzprüfer und Purebasic ?

Verfasst: 05.08.2011 16:39
von ts-soft
Wenn Du den Münzprüfer an die RS232 des PC angeschlossen bekommst, das Protokol nach PB übersetzt hast,
sollte es gehen. Dafür solltest Du über gute Englisch-Kenntnisse verfügen, viel Erfahrung in Programmierung,
Datentypen und PB haben.

Viel Glück :wink:

Re: Münzprüfer und Purebasic ?

Verfasst: 05.08.2011 16:43
von ram.zez
Okey!
Megaviel Erfahrung habe ich in PB noch nicht.
Und überhauptweiss ich auch nicht wie ich das übersetzen sol,also wird e daran wohl scheitern :(

Re: Münzprüfer und Purebasic ?

Verfasst: 05.08.2011 16:50
von ts-soft
Ohne Programmiererfahrung sieht es eher schlecht aus, da würde ich erstmal mit anderen Dingen Programmier-
Erfahrung sammeln und die Idee später wieder aufgreifen. Ich hab mir ja nicht alles angesehen, aber die
Steuerung über die RS232 sollte mit PB problemlos funktionieren. Aber dafür muss dann das Protokoll auch
exakt eingehalten werden, sonst versteht Dich der Münzprüfer nicht. Alles mit Speicher, Strukturen usw.
solltest Du beherrschen und die richtigen Infos in der Doku finden. Das ist nichts von heute auf morgen.

Re: Münzprüfer und Purebasic ?

Verfasst: 05.08.2011 16:53
von ram.zez
Ja das es nichts von heute auf morgen ist,war mir soweit schon bewusst.
Ich lass es dann erstmal langsam angehen.
Aber warum RS232 ? Wird USB PBmäßig nicht unterstützt? Oder gibts dafür andere Hintergründe?

Re: Münzprüfer und Purebasic ?

Verfasst: 05.08.2011 17:23
von ts-soft
USB wird per Treiber genutzt, dafür gibt es keine spezielle Lib, da jedes Gerät andere Treiber benötigt,
lediglich Mäuse und Tastaturen wären nutzbar.

Dein Münzprüfer ist doch für die RS232 ausgelegt, bzw. Centronics wird wohl auch noch unterstützt.
RS232 über USB gibts da auch noch.

Re: Münzprüfer und Purebasic ?

Verfasst: 05.08.2011 21:01
von Falko
Dabei hat Thomas alias ts-soft doch ein hübsches Tool
PureDLLHelper veröffentlicht, womit man diese CCDLL.dll, welche dazu installiert
wird, in PB anzupassen. Den Rest müßte man sich aus der englischen Doku herauslesen,
wie diese Funktionen dann gehandhabt werden müssen. Ich habe mal aus Jux mit dem Programm
von ts-soft die DLL für PB ausgelesen. Nur ohne Gerät kann man das nicht ausprobieren.

Code: Alles auswählen

;==========================================================================
; Generated with PureDLLHelper, Copyright ©2011 by Thomas <ts-soft> Schulz
;==========================================================================

Prototype  CCClearsCom(a, b)
Prototype  CCGet_Adress(a, b, c)
Prototype  CCGet_Adress_Mode(a, b)
Prototype  CCGet_Buffer(a, b, c)
Prototype  CCGet_BuildCode(a, b)
Prototype  CCGet_Channel_Enable(a, b)
Prototype  CCGet_CoinId(a, b, c, d)
Prototype  CCGet_CommsStatus(a, b, c, d)
Prototype  CCGet_DB(a, b, c)
Prototype  CCGet_Equipement(a, b, c, d, e)
Prototype  CCGet_InputLines(a, b, c, d, e)
Prototype  CCGet_Manufacturer(a, b, c)
Prototype  CCGet_Manufacturing_Date(a, b, c, d)
Prototype  CCGet_Master_Inhibit(a, b)
Prototype  CCGet_Modification_Date(a, b)
Prototype  CCGet_Opto_Status(a, b)
Prototype  CCGet_Polling(a, b, c)
Prototype  CCGet_Product(a, b)
Prototype  CCGet_Serial_Number(a, b)
Prototype  CCGet_Simple_Poll(a, b, c, d)
Prototype  CCGet_Status(a, b, c)
Prototype  CCGet_cctalk_Version(a, b, c)
Prototype  CCModify_Sorter(a, b)
Prototype  CCReSet(a, b)
Prototype  CCRequest_Base_Year(a, b, c)
Prototype  CCRequest_Sorter(a, b, c)
Prototype  CCSend_Command(a, b, c)
Prototype  CCSet_Adress(a, b)
Prototype  CCSet_Channel_Enable(a, b, c, d)
Prototype  CCSet_Rand_Adress(a, b)
Prototype  CCSoftVersion(a, b, c)
Prototype  CCTestOutput(a)
Prototype  CCTestSolenoid(a, b)
Prototype  CCset_CoinId(a, b, c)

Global CCClearsCom.CCClearsCom
Global CCGet_Adress.CCGet_Adress
Global CCGet_Adress_Mode.CCGet_Adress_Mode
Global CCGet_Buffer.CCGet_Buffer
Global CCGet_BuildCode.CCGet_BuildCode
Global CCGet_Channel_Enable.CCGet_Channel_Enable
Global CCGet_CoinId.CCGet_CoinId
Global CCGet_CommsStatus.CCGet_CommsStatus
Global CCGet_DB.CCGet_DB
Global CCGet_Equipement.CCGet_Equipement
Global CCGet_InputLines.CCGet_InputLines
Global CCGet_Manufacturer.CCGet_Manufacturer
Global CCGet_Manufacturing_Date.CCGet_Manufacturing_Date
Global CCGet_Master_Inhibit.CCGet_Master_Inhibit
Global CCGet_Modification_Date.CCGet_Modification_Date
Global CCGet_Opto_Status.CCGet_Opto_Status
Global CCGet_Polling.CCGet_Polling
Global CCGet_Product.CCGet_Product
Global CCGet_Serial_Number.CCGet_Serial_Number
Global CCGet_Simple_Poll.CCGet_Simple_Poll
Global CCGet_Status.CCGet_Status
Global CCGet_cctalk_Version.CCGet_cctalk_Version
Global CCModify_Sorter.CCModify_Sorter
Global CCReSet.CCReSet
Global CCRequest_Base_Year.CCRequest_Base_Year
Global CCRequest_Sorter.CCRequest_Sorter
Global CCSend_Command.CCSend_Command
Global CCSet_Adress.CCSet_Adress
Global CCSet_Channel_Enable.CCSet_Channel_Enable
Global CCSet_Rand_Adress.CCSet_Rand_Adress
Global CCSoftVersion.CCSoftVersion
Global CCTestOutput.CCTestOutput
Global CCTestSolenoid.CCTestSolenoid
Global CCset_CoinId.CCset_CoinId

Procedure.i CCDll_LoadDLL()
  Protected hDLL.i

  hDLL = OpenLibrary(#PB_Any, "CCDll.dll")
  If hDLL <> 0
    CCClearsCom = GetFunction(hDLL, "CCClearsCom")
    CCGet_Adress = GetFunction(hDLL, "CCGet_Adress")
    CCGet_Adress_Mode = GetFunction(hDLL, "CCGet_Adress_Mode")
    CCGet_Buffer = GetFunction(hDLL, "CCGet_Buffer")
    CCGet_BuildCode = GetFunction(hDLL, "CCGet_BuildCode")
    CCGet_Channel_Enable = GetFunction(hDLL, "CCGet_Channel_Enable")
    CCGet_CoinId = GetFunction(hDLL, "CCGet_CoinId")
    CCGet_CommsStatus = GetFunction(hDLL, "CCGet_CommsStatus")
    CCGet_DB = GetFunction(hDLL, "CCGet_DB")
    CCGet_Equipement = GetFunction(hDLL, "CCGet_Equipement")
    CCGet_InputLines = GetFunction(hDLL, "CCGet_InputLines")
    CCGet_Manufacturer = GetFunction(hDLL, "CCGet_Manufacturer")
    CCGet_Manufacturing_Date = GetFunction(hDLL, "CCGet_Manufacturing_Date")
    CCGet_Master_Inhibit = GetFunction(hDLL, "CCGet_Master_Inhibit")
    CCGet_Modification_Date = GetFunction(hDLL, "CCGet_Modification_Date")
    CCGet_Opto_Status = GetFunction(hDLL, "CCGet_Opto_Status")
    CCGet_Polling = GetFunction(hDLL, "CCGet_Polling")
    CCGet_Product = GetFunction(hDLL, "CCGet_Product")
    CCGet_Serial_Number = GetFunction(hDLL, "CCGet_Serial_Number")
    CCGet_Simple_Poll = GetFunction(hDLL, "CCGet_Simple_Poll")
    CCGet_Status = GetFunction(hDLL, "CCGet_Status")
    CCGet_cctalk_Version = GetFunction(hDLL, "CCGet_cctalk_Version")
    CCModify_Sorter = GetFunction(hDLL, "CCModify_Sorter")
    CCReSet = GetFunction(hDLL, "CCReSet")
    CCRequest_Base_Year = GetFunction(hDLL, "CCRequest_Base_Year")
    CCRequest_Sorter = GetFunction(hDLL, "CCRequest_Sorter")
    CCSend_Command = GetFunction(hDLL, "CCSend_Command")
    CCSet_Adress = GetFunction(hDLL, "CCSet_Adress")
    CCSet_Channel_Enable = GetFunction(hDLL, "CCSet_Channel_Enable")
    CCSet_Rand_Adress = GetFunction(hDLL, "CCSet_Rand_Adress")
    CCSoftVersion = GetFunction(hDLL, "CCSoftVersion")
    CCTestOutput = GetFunction(hDLL, "CCTestOutput")
    CCTestSolenoid = GetFunction(hDLL, "CCTestSolenoid")
    CCset_CoinId = GetFunction(hDLL, "CCset_CoinId")

    ProcedureReturn hDLL
  EndIf

  ProcedureReturn #False
EndProcedure