Seite 1 von 1

Info über eine TSE Schnittstelle

Verfasst: 1. März 2022, 10:47
von FDominicus
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

Re: Info über eine TSE Schnittstelle

Verfasst: 13. Mai 2022, 14:08
von FDominicus
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)


Re: Info über eine TSE Schnittstelle

Verfasst: 25. Februar 2023, 09:43
von FDominicus
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.

Re: Info über eine TSE Schnittstelle

Verfasst: 20. März 2023, 16:07
von FDominicus
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:

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.

Re: Info über eine TSE Schnittstelle

Verfasst: 12. April 2023, 14:46
von Herbert
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.

Re: Info über eine TSE Schnittstelle

Verfasst: 28. November 2023, 15:44
von FDominicus
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.