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 . . . .
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?
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
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
Wilfried Dietrich
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