AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

signal an Kassenschublade

Ein Thema von Privateer3000 · begonnen am 19. Jul 2006 · letzter Beitrag vom 19. Jul 2006
Antwort Antwort
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#1

signal an Kassenschublade

  Alt 19. Jul 2006, 17:21
Hallo Gemeinde,

folgendes möchte ich realisieren:
per Buttonknopf soll ein Char an den com-port gesendet werden
an dem wiederum ein Interface hängt das einen Kondesator auflädt
und eine herkömmliche Kassenschublade öffnet.
Lt. Hersteller des Interfaces soll man so vorgehen:
Zitat:
Normaler Modus:
Schicken Sie irgendein Zeichen zwischen ASC(000) und ASC(255) zum 8005/1A (Interface).
Hat jemand schon einmal damit Erfahrung gemacht?

PS: Der Hersteller hat auch einen Beispielcode im Lieferumfang, allerdings in "C".

Grüße
Privateer
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: signal an Kassenschublade

  Alt 19. Jul 2006, 17:55
Hi,
was genau ist denn eigentlich deine Frage? Ob jmd. damit Erfahrung hat? Such mal hier nach Kassenschublade u.Ä., dürftest du einiges finden.

Wenn du nicht weißt wie man per RS 232 kommuniziert such danach (Com Port sollte auch helfen).

Wenn du C Code hast und einzelne Teile nicht verstehst, auch dazu wird dir hier geholfen. Aber du muss ein wenig sagen woran genau du gerade scheiterst.

Was den C-Code angeht, vergiss den erstmal. Alles was du brauchst ist eine einfache RS 232 Kapselung. Ich würde dir TComPort empfehlen (findest du bei Sourceforge). Hast du diese Komponente installiert, sind alle wichtigen Funktionen gekapselt. Du ziehst dir einfach ein TComport auf dein Formular, klickst doppelt auf das Icon, stellst alles ein. Im Programm kannst du dann mit WriteStr(chr(irgendwas zwischen 0 und 255)) ein beliebiges Zeichen verschicken und schauen was passiert.
Sollten dann Probleme auftreten, oben steht wo du überall suchen kannst und wonach.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: signal an Kassenschublade

  Alt 19. Jul 2006, 18:53
Danke, soweit habe ich alles befolgt und die Komponente installiert.
Wie verschicke ich aber nun dieses WriteStr an die Komponente?
Delphi-Quellcode:
procedure TForm1.oeffnenClick(Sender: TObject);
begin
....
end;
das ist mir nicht klar...

Danke nochmal
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: signal an Kassenschublade

  Alt 19. Jul 2006, 19:48
Nichts zu danken.

Wichtig ist es, dass du die Kommunikationsparameter (Baudrate, Parität, ...) richtig einstellst, soweit die Kasse die Kommandos interpretiert (schein ja hier nicht wirkich der Fall zu sein?). Dann muss dein TComport den Eigenschaftswert von Connected auf true setzen (standardmässig false).
Nun kannst du einfach mit
Code:
// Comport1 soll jetzt hier eine nicht umbenannte Instanz von TComport sein
Comport1.WriteStr(chr(10)); <- schreibt den Character mit dem Wert 10 
Comport1.WriteStr('A'); <- Schreibt den Character A, Wert 65
So, das ist schon alles. Um den Rest kümmert sich die Kapselung. Schöner als der Weg den ich dir gerade beschrieben habe ist es natürlich, dass du nicht vorweg (zur Designzeit) die Kommunikationsparameter und den Comport festlegst.
Alle RS 232 Ports, die der aktuelle Rechner besitzt listet dir die Funktion enumComPorts der Unit CPort auf (genauer gesagt werden die in ein TStrings geschrieben).
Code:
var s : TStrings;
begin
  s := TStringList.Create;
 
  try
    CPort.enumComPorts(s);
    ... <- in s stehen jetzt all die Namen der Comports die Verfügbar sind
    // z.B. könnte man alle in eine TComComboBox zur Auswahl des Ports nehmen
    // einfach vom selben Reiter auf das Formular, autoApply auf True und als ComPort den
    // verwendeten TComport (hier jetz ComPort1) zuweisen

    ComComboBox1.Items.Assign(s); // <- hier werden alle verfügbaren Port eingetragen
    // nun führt ein Wechsel des angezeigten Ports automatisch dazu, dass dieser ausgewählt wird
  finally
    s.Free;
  end;
end;
Dieser Weg ermöglicht eine hohe Flexibilität. Ein paar etwas ältere Lösungen erlauben gerne mal die Wahl zwischen Com1 .. Com4. Probleme gibt es dann immer, wenn a) mehr als 4 RS 232 Ports verfügbar sind oder b) z.B. ein virtueller Port Com99 der eigentlich über einen Netzwerkadapter angesprochen wird eine Nummer > 4 hat. Mit der oben gezeigten Methode stellt man sicher, dass der Port auch wirklich vorhanden ist und jeder vorhandene Port selektiert werden kann.

Solltest du eine Antwort von der Kasse erwarten, gibt es zwei interessante Ereignisse für dich: OnRxChar und OnRxFlag.
Das erste Event wird immer ausgelöst, wenn Daten im Puffer landen. Bei auslesen ist immer vorsicht geboten, denn die Kommunikation erfolgt asynchron. Es kann ein unvollstäniger Teil einer Nachricht oder mehr als eine Nachricht im Puffer landen. Häufig wird zum Trennen ein bestimmtes Zeichen (gerne #13 / Carriage Return) verwendet. Gibt es ein solches Zeichen, kann es als EventChar festgelegt werden. Das OnRxFlag Ereignis tritt dann ein, wenn dieses EventChar empfangen wurde (aber eben nur dann, OnRxChar bei jedem Zeichen).

Hoffe das hilft ein wenig weiter.
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: signal an Kassenschublade

  Alt 19. Jul 2006, 21:13
Alles klar, alles funktioniert.
Danke auch für die Zusatzinfos.

Grüße
Privateer
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz