Liebe Windev Benutzer, ich bin so weit und habe dafür Wrapper entwickelt:
https://www.swissbit.com/de/loesungen/fiskal/
Ist noich nicht völlig vollständig, aber sicherlich eine gute Ausgangsbasis. Bei der Erstellung habe ich mir am
C++ Klassenaufbau orientiert. Wer also irgendwann mal daran Interesse haben sollte, kann mich ja deswegen kontaktieren.
Einsatzbereich derzeit bei mir eine Ergänzung zu einer Software für Container/Abfallbetriebe. Ich habe da ein einfaches Kassenbuch mit "abgesichert" ( (ja ich weiß, Witze könnten ruhig etwas lustiger sein)
Könner von Ihnen dürften mit dem wrappen gut klar kommen, aber Zeit braucht es trotzdem ...
Man liest sich
Info über eine TSE Schnittstelle
-
- Member
- Beiträge: 65
- Registriert: 9. Mai 2015, 08:19
-
- Member
- Beiträge: 65
- Registriert: 9. Mai 2015, 08:19
Re: Info über eine TSE Schnittstelle
Code sieht in diese Richtung aus:
Code: Alles auswählen
PROCEDURE MyScenario()
clObjToTest is Wormstore dynamic = gpclApp.myWormStore
nVal is int
clObjToTest.tse_updateTime(Now())
clObjToTest.user_login(WORM_USER_ADMIN, gpclApp.cltseOptions.adminPIN)
clObjToTest.tse_ctss_enable()
nVal = clObjToTest.clWormInfo.startedTransactions()
TestCheckDifferent(nVal,0)
sTestVal, sType are strings
sTestVal = "testVal 2021-06"
sType = "TestType"
pclTransResponse is WormTransactionResponse dynamic
pclTransResponse = clObjToTest.transaction_start(clObjToTest.clientID, sTestVal, sType)
nVal = clObjToTest.clWormInfo.startedTransactions()
TestCheck(nVal>0)
nVal = pclTransResponse.logTime()
TestCheckDifferent(nVal, 0)
nVal = pclTransResponse.transactionNumber()
TestCheckDifferent(nVal,0)
clObjToTest.user_logout(WORM_USER_ADMIN)
-
- Member
- Beiträge: 65
- Registriert: 9. Mai 2015, 08:19
Re: Info über eine TSE Schnittstelle
Ergänzung: Ich habe die C-Api genommen und mich ungefähr am C++ Klassenmodell orientiert.
Die Tage dachte ich mir, ob man nicht den C# wrapper benutzen könnte.
Sieht so aus als ob es ginge, aber hier nur mit der Version 28
Wer immer noch interessiert sein sollte, kann mich ja anschreiben.
Die Tage dachte ich mir, ob man nicht den C# wrapper benutzen könnte.
Sieht so aus als ob es ginge, aber hier nur mit der Version 28
Wer immer noch interessiert sein sollte, kann mich ja anschreiben.
-
- Member
- Beiträge: 65
- Registriert: 9. Mai 2015, 08:19
Re: Info über eine TSE Schnittstelle
Ich habe mir diese Schnittstelle noch mal angeschaut, mir auch Gedanken über die C# Nutzung gemacht.
Prinzipiell kann ich die .Net library benutzen, aber dann gibt es klar Probleme mit Rückgabewerten wie
string [] und das ist problematisch.
Das C Interface, kann zumindest ich besser verstehen und nutzen
Manchmal frage ich mich ob die C API Entwickler ein bisschen böswillig sind:
Hier so ein Fall. Eine Struktur mit einer
Anzahl (begrenzt) und einem Feld von "C-Strings" mit einer bestimmten Länge
Man muß nun in Schüben von irgendwo um 16 Einträge)
WormRegisteredClients is Structure
amount is int //Type C : int
clientIds is fixed array of 16 fixed string on 31 //Type C : char
END
einlesen
nToSkip ist also ein Vielfaches von 12 oder etwa in dieser Größenordnung
In C# sieht es nach string [] aus, ich hab aber keine Ahnung wie ich die rüber nach Windev bekomme.
Vielleicht hat ja hier einer eine Idee.
Wie auch immer die Schnittstelle läuft für mich gut genug und auch unproblematisch beim Kunden, daher sollte ich mich nicht beschweren.
Prinzipiell kann ich die .Net library benutzen, aber dann gibt es klar Probleme mit Rückgabewerten wie
string [] und das ist problematisch.
Das C Interface, kann zumindest ich besser verstehen und nutzen
Manchmal frage ich mich ob die C API Entwickler ein bisschen böswillig sind:
Code: Alles auswählen
PROCEDURE allRegisteredClients(): array of string
eWormError is WormError
arrResult is array of string
ensureSelfTestRunSuccessfully()
eWormError = loginAdmin()
IF eWormError <> WORM_ERROR_NOERROR THEN
RETURN arrResult
END
clWormInfo.read()
nNumberOfRegisteredClients is int = clWormInfo.registeredClients()
bRun is boolean
bufTmp is Buffer
bRun = True
nRetrieved is int = 0
nToSkip is int = 0
WHILE bRun
eWormError = tse_listRegisteredClients(nToSkip)
IF eWormError <> WORM_ERROR_NOERROR THEN
arrResult = Null
BREAK
END
FOR i = 1 _TO_ m_stRegisteredClients.amount
bufTmp = m_stRegisteredClients.clientIds[i]
arrResult.Add(StringRetrieve(&bufTmp,srASCIIZAddress))
END
nRetrieved += m_stRegisteredClients.amount
IF nRetrieved >= nNumberOfRegisteredClients THEN
bRun = False
ELSE
nToSkip += 1
END
END
logoutAdmin()
RETURN arrResult
Hier so ein Fall. Eine Struktur mit einer
Anzahl (begrenzt) und einem Feld von "C-Strings" mit einer bestimmten Länge
Man muß nun in Schüben von irgendwo um 16 Einträge)
WormRegisteredClients is Structure
amount is int //Type C : int
clientIds is fixed array of 16 fixed string on 31 //Type C : char
END
einlesen
nToSkip ist also ein Vielfaches von 12 oder etwa in dieser Größenordnung
In C# sieht es nach string [] aus, ich hab aber keine Ahnung wie ich die rüber nach Windev bekomme.
Vielleicht hat ja hier einer eine Idee.
Wie auch immer die Schnittstelle läuft für mich gut genug und auch unproblematisch beim Kunden, daher sollte ich mich nicht beschweren.
-
- Site Admin
- Beiträge: 529
- Registriert: 23. Februar 2010, 08:06
- Wohnort: Langenthal, Schweiz
- Kontaktdaten:
Re: Info über eine TSE Schnittstelle
Neu in der Version 28 sind die sog. Plugins. Das sollte eigentlich für dich ein guter Lösungsansatz sein.
Siehe Anhang. Der Text ist leider auf Französisch, gibt aber die Ansätze dazu an.
Siehe Anhang. Der Text ist leider auf Französisch, gibt aber die Ansätze dazu an.
- Dateianhänge
-
- plugins.jpg (585.07 KiB) 1079 mal betrachtet
-
- Member
- Beiträge: 65
- Registriert: 9. Mai 2015, 08:19
Re: Info über eine TSE Schnittstelle
Ich denke, es ist was anderes als ich gemacht habe, die Funktionen einer C Library) in einem Klassenmodul gewrappt.
Und ich denke, das war recht vollständig. Diese Klassen kann ich nun in meine Programme importieren und damit dann
in /auf eine TSE-USB-Stick schreiben.
Und ich denke, das war recht vollständig. Diese Klassen kann ich nun in meine Programme importieren und damit dann
in /auf eine TSE-USB-Stick schreiben.