Münzprüfer und Purebasic ?

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
ram.zez
Beiträge: 5
Registriert: 05.08.2011 15:12

Münzprüfer und Purebasic ?

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Münzprüfer und Purebasic ?

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Münzprüfer und Purebasic ?

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
ram.zez
Beiträge: 5
Registriert: 05.08.2011 15:12

Re: Münzprüfer und Purebasic ?

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Münzprüfer und Purebasic ?

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
ram.zez
Beiträge: 5
Registriert: 05.08.2011 15:12

Re: Münzprüfer und Purebasic ?

Beitrag 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 :(
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Münzprüfer und Purebasic ?

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
ram.zez
Beiträge: 5
Registriert: 05.08.2011 15:12

Re: Münzprüfer und Purebasic ?

Beitrag 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?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Münzprüfer und Purebasic ?

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
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.0
Kontaktdaten:

Re: Münzprüfer und Purebasic ?

Beitrag 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
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Antworten