Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ZVT-Protokoll
marv100
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

ZVT-Protokoll

beantworten | zitieren | melden

Hallo zusammen,

ich wollte mal fragen, ob hier schon mal jemand mit dem ZVT-Protokoll gearbeitet hat?

ZVT = Zahlungsverkehrsterminal Link


Gruß, marv100
"Niemand wird je mehr als 640KB RAM benötigen!"

Bill Gates, 1981
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo marv100,

schreib doch schon mal, was deine eigentliche Frage ist, wenn jemand deine obige Frage mit ja beantwortet.

herbivore
private Nachricht | Beiträge des Benutzers
marv100
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

ich bin momentan noch nicht im Projekt drin aber ich soll eine Schnittstelle zwischen dem Kassensystem aus unserer Software und dem ZVT-Protokoll herstellen.
Bin grad dabei mir das "Handbuch" dazu durch zu lesen aber ich blick da gar nicht durch.

Deswegen wollte ich wissen, ob jemand schon mal damit gearbeitet hat und mir evtl ein paar Tipps geben könnte wie genau ich da vorgehen muss.
"Niemand wird je mehr als 640KB RAM benötigen!"

Bill Gates, 1981
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo marv100,

je konkreter du fragst, desto höher ist die Wahrscheinlichkeit einer Antwort. Was ist dein Problem? Wo hängst du? Was ist unklar? Was für Tipps stellst du dir vor?

herbivore
private Nachricht | Beiträge des Benutzers
marv100
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

wie gsagt momentan hab ich erst noch die Doku vor mir liegen. Bekomm ein Testgerät irgendwann nächste Woche.
Würde gerne wissen wie man mit dem Protokoll vorgeht.
  • Terminal anmelden
  • Karte lesen
  • PIN ok?
  • Geldbetrag buchen
  • Kassenbon drucken
  • Tagesabschlussrechnung
  • uns was sonst noch dazu gehört
"Niemand wird je mehr als 640KB RAM benötigen!"

Bill Gates, 1981
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo marv100,

hm, aber genau das steht doch in der Spezifikation. Im Wesentlichen musst du Bytefolgen zum Gerät senden und vom Gerät empfangen. Ich verstehe leider immer noch nicht, wo dein Problem liegt.

herbivore
private Nachricht | Beiträge des Benutzers
marv100
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

Ich denke ich schreibe das genau Problem nächste Woche mal, wenn ich das Testgerät hier stehen habe.
"Niemand wird je mehr als 640KB RAM benötigen!"

Bill Gates, 1981
private Nachricht | Beiträge des Benutzers
marv100
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

So.... ich habe nun endlich mein Test-Terminal bekommen. Habe alles angeschlossen und Passwort und TerminalID eingegeben.

Jetzt steh ich schon vor dem ersten Problem. Ich muss das Gerät an meiner Kasse registrieren. Was in der Doku dadrüber steht, versteh ich nicht ganz. Ich weiß nicht, wie mein String aussehen muss, den ich übergebe.

Könnt ihr mir vielleicht mal helfen?
Hier der link zur Doku (Seite 14) klick

Ich denke wenn ich weiß wie der String aussehen muss dann werden die nächsten Schritte etwas einfacher gehen (hoffe ich zumindest)
"Niemand wird je mehr als 640KB RAM benötigen!"

Bill Gates, 1981
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1928
Herkunft: NRW

beantworten | zitieren | melden

Hallo!

Also in der Doku steht doch genau drin, was gesendet werden muss. Zumal es sich nicht um einen String, sondern - wie auch herbivore schon bemerkte - um eine Folge von Bytes handelt, welche in der Doku auch bei Bedarf bitgenau erklärt sind.

Um zu wissen, was gesendet werden soll, musst du natürlich erstmal die Informationen zusammentragen, und dafür dann die entsprechenden Werte in der Doku nachschlagen.
Nobody is perfect. I'm sad, i'm not nobody
private Nachricht | Beiträge des Benutzers
marv100
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

Mache das in VB aber das ist ja für den Übergabewert uninteressant. Hab den so zusammengebastelt, funktioniert aber nicht :(
MSComm1.Output = "06 00 ** ** ** 0000 0010 [09 78[03 00]]"

Wobei ** ** ** das pw ist. Was mach ich falsch?
"Niemand wird je mehr als 640KB RAM benötigen!"

Bill Gates, 1981
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo marv100,

leider ist wohl eine weitere Wiederholung fällig:
Zitat
Zumal es sich nicht um einen String, sondern - wie auch herbivore schon bemerkte - um eine Folge von Bytes handelt.

herbivore
private Nachricht | Beiträge des Benutzers
marv100
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

und wie mach ich das?
habs versucht den string als byte umzuwandeln, funtkioniert aber auch nicht.
"Niemand wird je mehr als 640KB RAM benötigen!"

Bill Gates, 1981
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo marv100,

äh, das sind doch Grundlagen. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1. Wenn du den String so wie er ist in Bytes umwandeln würdest, würde vermutlich was ganz anderes als erwartet herauskommen. Es ist einfacher direkt die Bytes zu senden, also z.B. 0x06.

herbivore
private Nachricht | Beiträge des Benutzers
marv100
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

ich krieg den scheiß mit VB nicht hin....
"Niemand wird je mehr als 640KB RAM benötigen!"

Bill Gates, 1981
private Nachricht | Beiträge des Benutzers
marv100
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

Ich habe mich jetzt über eine Woche mit dem Problem beschäftigt und habe es immer noch nicht geschafft, das Terminal an der Kasse anzumelden.

Kann mir nicht irgendjemand mal dabei helfen? Vielleicht ein kleines Beispiel wie ich das machen muss.
Ich bin momentan echt überfordert damit und weiß nicht mehr weiter.
"Niemand wird je mehr als 640KB RAM benötigen!"

Bill Gates, 1981
private Nachricht | Beiträge des Benutzers
online-style
myCSharp.de - Member



Dabei seit:
Beiträge: 1

crc xmodem berechnung

beantworten | zitieren | melden

Hi liebe leute,

ich wurde beauftragt, ein Warenwirtschaftssystem für eine Boutique zu schreiben, kein Problem soweit, die Anbindung an das EC Terminal hat auch funktioniert.

Zum Testen und vergleichen, habe ich einfach den Code verwendet, welcher durch andere EC-Software am Seriellen Port erzeugt worden ist.

Ich habe drei verschiedene Transaktionsstring ausgelesen und habe diese zum testen in mein VB Porgamm verbaut, die Kommunikation und übergabe der Werte klappt auch soweit.

0,01 cent = "10 02 06 01 07 04 00 00 00 00 00 01 10 03 2F 0D" (checksumme: 2F0D)

0,10 cent = "10 02 06 01 07 04 00 00 00 00 00 10 10 10 03 66 81" (checksumme: 6681)

1Euro cent = "10 02 06 01 07 04 00 00 00 00 01 00 10 03 2B 4E" (checksumme: 2B4E)

Mein Problem beginnt mit der Übergabe von beliebigen beträgen,.. und der CRC CCITT xmodem Prüfsumme ich komme einfach nicht auf den Wert (siehe oben),...

Ich habe den Quellcode von "terminalhersteller.de" verwendet, doch mein ergebnis ist immer falsch und wird somit nicht vom Terminal akzeptiert.

Das Polynom ist angeblich: X**16 + X**12 + X**5 + 1

in einer anderen doku findet man allerdings auch dieses Polynom: x ^ 16 + x ^ 15 + x ^ 10 + x ^ 3

Quellcode:

  Dim CRCT(0 To 255) As Long       ' Codetabelle für CRC-16-Check
  Dim CRC As Long                  ' Kurzzeitige Verwendung
  Dim i As Integer                 ' Schleifenvariable
  Dim j As Integer                 ' Schleifenvariable
  Dim HB As Long                   ' CRC-Highbyte
  Dim LB As Long                   ' CRC-Lowbyte
 
  ' * Codetabelle erzeugen (CRC-16) *
  ' Dieses braucht nur 1x gemacht werden.
   For i = 0 To 255
      CRC = i
      For j = 1 To 8
         If (CRC And 1) = 1 Then
            CRC = Fix(CRC / 2) Xor 33800
         Else
            CRC = Fix(CRC / 2)
         End If
      Next j
      CRCT(i) = CRC
   Next i
   Debug.Print CRC
  
 
   ' CRC über den String "Daten$" berechnen.
   ' Werte von CRC-Highbyte ist dann in HB, CRC-Lowbyte ist dann in LB.
   'CRC = 0
   For i = 1 To Len(daten$)
      HB = Fix(CRC / 256)
      LB = CRC - (256 * HB)
      CRC = CRCT(LB Xor Asc(Mid$(daten$, i, 1))) Xor HB
   Next i
   HB = Fix(CRC / 256)    ' CRC-High-Byte
   LB = CRC - (256 * HB)  ' CRC-Low-Byte
Debug.Print "LB="; "hex--"; Hex(LB); "--dezimal"; LB
Debug.Print "HB="; "hex--"; Hex(HB); "--dezimal"; HB
Welche Bytes muss ich verwenden? Ich habe es so verstanden, dass beispielsweise bei "10 02 06 01 07 04 00 00 00 00 00 01 10 03 2F 0D"(0,01cent) nur die 06 01 07 04 00 00 01 03(also alle Dle Etx und STX nicht miteinbezogen in die CRC berechnung,.. habe auch beliebig viele anderekombinationen versucht, doch nie komme ich auf den Wert in den drei beispielen oben,...

ich denke es liegt an der 33800 in der ersten For-Schleife (Tabellen erzeugung) ich denke diese Berechnung (der Wert "33800) ist für ein anderes Polynom,...

doch ich habe schon alles versucht wo ist der Fehler, das Projekt ist fertig und es hapert an der Prüfsumme,...

Was mache ich falsch? Über hilfe oder einen Tipp würde ich mich sehr freuen.

im voraus dankend atilla
private Nachricht | Beiträge des Benutzers
marv100
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

So... nach langem hin und her habe ich eine Kommunikation herstellen können. Allerdings habe ich noch Probleme beim auslesen der Daten.
Ich bekomme immer nur eine 10 F1 zurück wobei es laut Dokumentation so aussehen sollte:
06 10 02 80 00 00 10 03 F5 1F

Was mach ich falsch?

Private Sub MSComm1_OnComm()
    Dim antwort As String

    antwort = Hex(Asc(MSComm1.Input))
    Text1.Text = Text1.Text & " " & antwort
    'If antwort = "15" Then
    '    MsgBox "Es ist ein Fehler bei der Kommunikation aufgetreten !", vbCritical, "EC Cash"
    '    Exit Sub
    'End If


    'If antwort = "1F" Then
    '    MSComm1.Output = Chr(6)
    'End If

End Sub


hoffentlich darf ich bald wieder c# programmieren

Gruß, marv100
"Niemand wird je mehr als 640KB RAM benötigen!"

Bill Gates, 1981
private Nachricht | Beiträge des Benutzers
live2
myCSharp.de - Member



Dabei seit:
Beiträge: 34

beantworten | zitieren | melden

Hallo die Frage ist bereits etwas älter aber ich habe dazu ein Projekt auf GitHub gefunden das sich sehr Intensiv mit dem Thema auseinandersetzt.
Es gibt dort auch eine Test Software mit der du verschiedene Funktionen ausprobieren kannst.

https://github.com/Portalum/Portalum.Payment.Zvt
private Nachricht | Beiträge des Benutzers