Neues Thema starten

TSE Umsetzung mit VB6

1. So wie ich das sehe und lese, baut das SDK nur auf C und C# auf.
Ich programmiere mit VB6 und kann mit einem C# Sample nichts anfangen.
Hat schon jemand das ganze in VB6 umgesetzt?
Ist das überhaupt möglich?

2. SWISSBIT müsste für das ganze Setup, Einrichten, Einstellen und den Export (für den Prüfer mit Filterfunktionen) ein fertiges Tool (exe) zur Verfügung stellen. So das ich diese Exe (Tool) einfach in meinen Anwendungsordner kopiere und ich dann damit die Einrichtung vornehmen kann und ein Prüfer der Finanzbehörde darüber seinen Export nach bestimmten Filterkriterien wie z.B. Transaktionsnummer von / bis oder Datum von / bis etc. vornehmen kann.


3 Personen haben diese Frage

Hallo, ist zwar schon eine Zeit her . .

gerade den usb TSE bekommen, habe auch das Problem in VB6 zu integrieren.

Kassenprogramm für Kindersecondhandläden.

Habe schon die Sicherheiitseinrichtung in Österreich erfolgleich erledigt (VB6)

brauche etwas Einstiegshilfe . . . .


           


1 Person gefällt das

Ich habe mich in der Zwischenzeit für einen anderen Anbieter entschieden und für diesen mit anderen VB6 Programmierern sowie einem C-Programmierer  zusammen eine Lösung (VB6/.Net) gefunden bzw. erarbeiten lassen.

Hallo allerseits, bin ebenfalls auf der Suche nach einer Integrationslösung für VB6. 

Auf welchen Anbieter seid ihr gewechselt? 

Kann man sich bei eurer Lösung 'einkaufen'?

 Hallo Thomas,

habe heute begonnen,  ihn den Worm zu einer Antwort bewegt, sollte eigentlich über die direktsteuerung klappen, sieht ähnlich aus wie in Österreich mit der SmartCard, nur ohne Treiber, da über einfachen Input gesteuert.


         Günter

Hallo Günter,

danke für deine Antwort. Allerdings verstehe ich dich nicht so ganz.

Mein Problem beginnt schon in der Referenzierung der WormAPI.dll, wie kann ich die erforderlichen Klassen in VB6 einbinden ?

VG

Thomas

ja, genau, das geht eben nicht so einfach, deswegen die dll sein lassen, alles direkt programmieren.

hatte schon das Problem in Österreich,  erfolgreich seit 2 Jahren, da auch alles von Hand, mit hilfe  der chilcat DLL.

Du kannst das Ding wie ein Laufwerk ansteuern mit einem Controll Register . . .

mache seit gestern eineige Konrollroutinen, kannst du gerne haben.

Ich bekam auch von meinem Lieferanten den Tip alles eigenständig zu machen, unabhängig der wormapi

denn da gibt es anscheinend doch noch einige Fragen, kostet Zeit, und bist abhängig.


Grüsse

         Günter



das wäre super. 

Ich denke, ein paar Anregungen würden mir schon reichen ... um überhaupt erst mal in die Gänge zu kommen ;-)

VG

Thomas

wie bekommen wir Kontakt ??


      Grüsse

           Günter

du kannst mich über Thomas.Metzler62[AT]web[Punkt]de erreichen

VG

Thomas

Status auslesen geht, ansonsten bin ich beim Pik Pin erneuern, scheint mir recht kompliziert, und das nur um das erste mal Puk Pin für mich zu bekommen,.

Angekommen?

image



1 Person gefällt das

Anfängliche Versuche, die Funktionen und EIgenschaften der WORMAPI.DLL in VB6 zu importieren schlug ordentlich fehl. Deshalb habe ich mich gleich für eine C++-DLL entschieden, die die Worm deckelt und kompakte Funktionen und Eigenschaften für VB6 bereitstellt, die sich auch einfach in VB6 importieren lassen.

Es geht auch ohne API mit VB6,

bin fertig, läuft zur zufriedenheit, sollte noch Interesse  daran bestehen, gerne.


Günter

image


3 Personen gefällt das

Hallo. Ich habe mich zwar mittlerweile mit der C-API auf eine Zusammenarbeit einigen können aber ich bin dennoch sehr interessiert daran, wie das ohne diese geht. Das wäre dann auch leicht in unterschiedlichen Programmiersprachen nachzubilden.

Können Sie den betreffenden Code veröffentlichen, Github oder ähnliches?


Haben Sie abgeklärt, ob die BSI-Zertifizierung bei der Methode gültig ist? Möglicherweise ist die C-Bibliothek zwingender Bestandteil der TSE-Zertifzierung.

Ich denke nicht dass in der Signatur ersichtlich ist mit welchem Programm sie erstellt wurde!

Erst mal ein kleiner Anfang

Für eine gültige Signatur


1. Selbsttest mit aktuellem Kassenname  - von Haus aus "SwissbitDemo"

2. Login mit Pin

3. aktuell Zeit setzen

4 Start Transaktion

5 Ergebnis - Transaktionsnummer speichern

6. Payload senden, zu signierende Daten - fixes Format

7. End Transaktion mit letzter Transaktionsnummer

8 Ergebnis lesen - Signatur - - -

9. String für QR Code erzeugen aus

  V0

  Kassenname

  Kassenbeleg-V!

  Payload z.b Beleg^0.00 , , , , , ,  wie beschrieben

  Transaktionsnummer - ergebnis von End Transaktion

  Signatur Zähler- ergebnis von End Transaktion

  Start Zeit in Klartext - wie beschrieben - Die Zeit die festgehalten wurde beim Start

  Log Time - wie beschrieben - Ergebnis von  End Transanktion

  Signatur - Ergebnis von End Transaktion

  public Key - Kann über Status - wie beschrieben ausgelesen und vorab gespeichert sein


'********************************************************************************************

' gerne beantworte ich weitere Fragen,

' das reicht erst mal um das Ding in Betrieb zu nehmen.

'

**********************************************************************************************


erkennen wo sich das Ding befindet

wird als stick  zb. "E:" gespeichert

'****************************************************************************
' Suche Swissbit Laufwerk
'****************************************************************************
Sub finde_swissbit()
Dim i As Integer
TSE_Controll.stick = ""
For i = 0 To 10
  If fso.FileExists(Chr(i + 68) & ":" & "tse_comm.dat") Then
    TSE_Controll.stick = Chr(i + 68) & ":"
    stick = Chr(i + 68) & ":"
    Exit For
  End If
Next
End Sub
 

Dann die von mir verwendete schribroutine

'****************************************************************************
' Sende Befehl an TSE
'****************************************************************************
Private Sub send()
Dim intdatnum As Integer
Dim dateiname As String
intdatnum = FreeFile
dateiname = stick & "\TSE_COMM.DAT"
Open dateiname For Random Access Write As intdatnum Len = Len(befehl)
Put #intdatnum, 1, befehl
Close intdatnum
End Sub


Dann Selbsttest, im Gegensatz zu allen beschreibungen, reicht dieser Selbsttest zur initialisierung aus!

Habe gestgestellt dass die Zeit zwischen Senden des Befehls und Antwort lesen nicht zu kurz sein darf,

habe mal 500 msek genommen, geht auch weniger warscheinlich.


'******************************************************
' TSE Selbsttest   Befehl 40 00

'  id - Client oder Kassennummer
'*******************************************************

Public Sub tse_selbsttest(id)
  Dim i As Integer
  Dim z As Long
  befehl.blen(0) = 0
  befehl.blen(1) = Len(id) + 3
  befehl.befehl(0) = &H40
  befehl.befehl(1) = &H0
  befehl.befehl(2) = Len(id)
  For i = 0 To Len(id) - 1
    befehl.befehl(i + 3) = Asc(Mid(id, i + 1, 1))
  Next
  Call send
  Call Sleep(500)
  Call warte_mal
  End Sub


Warte auf ergebnis, lese eventuell extra Daten die von dem Ding kommen



'*********************************************************************
' Warte auf Rückgabe
' FF fertig, keine Antwort erwartet auser Fehlermeldung
' FE Warte Status
' FD Es wird weitere Antwort mit Daten erwartet
' Achtung Direct Read es darf auf keinen Fall mit Cache gelesen werden, da habe ich lange gesucht
' Befehl senden und lesen, gleiche Datei, hat immer wieder den gesendeten Befehl als ergebnis gebracht!
' Deswegen sicher ohne Cache lesen!!
'*********************************************************************

Private Sub warte_mal()
Dim z As Long
Dim data As String
Dim i As Integer

nochmals:
  z = DirectReadDriveNT(stick & "\tse_comm.dat", 0, 0, resultat(), 512)

  If resultat(4) = 255 Then
    For i = 0 To 20
      If resultat(i) > 15 Then
        result_data = result_data & Hex(resultat(i)) & " "
      Else
        result_data = result_data & "0" & Hex(resultat(i)) & " "
      End If
    Next
    Exit Sub
  Else
    TSE_Controll.ww.text = Val(TSE_Controll.ww) + 1
    TSE_Controll.ww.Refresh
    'Call Sleep(100)
    If resultat(4) = 253 Then     ' FD so muss Resultat abgeholt werden
      befehl.blen(1) = 2               ' lese Extra Daten
      befehl.befehl(0) = &H83
      befehl.befehl(1) = &H0
      Call send
     End If
  End If
    GoTo nochmals
  End Sub


'**********************************************************************************

' Lese aktuellen Status

'wie beschrieben in der Swissbit Beschreibung  einfach lesen

' aber natürlich wieder ohne Cache!!

'*********************************************************************************


Public Sub lese_status()
Dim i As Integer
Dim z As Long
z = DirectReadDriveNT(stick & "\tse_info.dat", 0, 0, resultat(), 512)
i = resultat(28)
If (i And 2) = 2 Then
  TSE_Controll.selftest = "OK"
  TSE_Controll.selftest.BackColor = vbGreen

Else
  TSE_Controll.selftest = "Fehlt"
  TSE_Controll.selftest.BackColor = vbRed
End If

End Sub


4 Personen gefällt das
Anmelden oder Registrieren um einen Kommentar zu veröffentlichen