Documente Academic
Documente Profesional
Documente Cultură
Prezentare si tutorial
Nota:
Istoric versiuni:
1
Introducere
Acest document furnizează informații despre Datecs COM Server "DUDE" – driver-ul pentru noile
generații de echipamente fiscale produse de Datecs pentru România începând cu 2018. Driver-ul
DUDE estee un server de tip COM care asigură o integrare facilă si o utilizare sigură a
echipamentelor fiscale Datecs cu aplicații comerciale funcționând sub sistemul de operare
Windows.
.
Dacă nu sunteţi familiarizaţi cu tehnologia COM (Component Object Model) - pe scurt, serverul
COM este un obiect care distribuie servicii între echipamente client. Aceste servicii sunt sub formă
de implementări ale interfeței COM care pot fi apelate de către orice client care este conectat la
server. Există două tipuri de servere COM: în proces şi în afara procesului. DUDE este un server
COM care lucrează în afara procesului (Exemplu: Datele sunt trimise de la aplicația comercială
către imprimanta fiscală după finalizarea colectării datelor de bon – articole cu cantități și prețuri,
unitate de măsură, cote TVA, majorări, reduceri, etc.) Principalul avantaj al tehnologiei COM este
că serverul poate fi implementat independent de limbajul de programare sau de resursele necesare
rulării aplicației comerciale.
DUDE vă permite, ca programator, să accesați echipamentele fiscale prin diverse tipuri de conectare
– RS232, USB sau via TCP/IP (în funcție de arhitectura AMEF).
2
Echipamentele fiscale accesibile prin DUDE
Mai jos sunt enumerate echipamentele fiscale Datecs care pot fi accesate prin intermediul DUDE și
interfețele disponibile.
Limba
Driverul DUDE suportă două limbi de afișare a mesajelor – engleză şi română. Alegerea limbii de
afișare poate fi programată astfel încât mesajele să fie afișate în limba aleasă. În programele DEMO
puse la dispoziție in librăria DUDE găsiți exemplu de programare a limbii de afișare a mesajelor.
3
Instalare
Instalarea driver-ului DUDE este foarte simplă. Mai jos, puteți urmări procesul de instalare in limba
engleză:
Executați (dublu-clic) fișierul de instalare. Sistemul de operare vă va cere acordul pentru instalarea
aplicației. Acceptați apăsând opțiunea ”Da” / ”Yes”. În funcție de versiunea de OS Windows, fereastra de
interacțiune cu OS poate diferi.
4
Citiți cu atenție termenii de licențiere și, dacă sunteți de acord bifați acceptul dumneavoastră si
continuați apăsând ”Next”
Alegeți locația de instalare a programului. Dacă doriți sa schimbați locația propusă, puteți naviga
apăsând ”Browse...”
După ce ați stabilit locația fișierelor, apăsați butonul ”Install” pentru a permite instalarea
componentelor software. Acest proces decurge automat fără a necesita intervenția operatorului. Nu
întrerupeți procesul!
5
După instalarea componentelor software, este afișată o pagină de confirmare. Apăsați butonul
”Finish” pentru a încheia instalarea.
Odată încheiată instalarea, nu mai este necesară nici o intervenție. Orice setare solicitată de
serverul COM va fi activată programabil de către programele care folosesc driverul.
6
Câteva considerații cu privire la protocolul de comunicatie
Protocol sincron
7
Sincronizare time-based
8
Sincronizarea structurii mesajelor
9
◦ Valori: Pentru că datele de tip word folosite în acest protocol pot lua valori în intervalul
[0..65535] (DEC), aplicația Host trebuie să completeze datele în variabile în acest
format. Fiecare digit al acetor 2 octeți este transmis împreună cu o valoare fixă adaugată
de 30H. Ca și rezultat, va fi o reprezentare pe 4 octeți a acestui câmp din componența
mesajului împachetat. Motivul acestei codificări este legat de executarea internă a
protocolului în dispozitivele fiscale și este valabilă pentru toate modelele Datecs.
◦ Exemplu: variabila cu valoarea 1AE3H din mesajul impachetat este prezentata ca 4
octeti cu urmatoarele valori: 31H,3AH,3EH,33H;
• SEQ – Numarul secventei din mesajul impachetat. Aparatul fiscal inregistreaza acelasi
numar al secventei in raspunsul sau. Daca primeste un mesaj cu o valoare identica cu aceea
din ultimul mesaj primit, nu realizeaza nici o alta actiune, dar repeta ultimul mesaj trimis.
◦ Lungime: 1 octet;
◦ Valori: de la 20H la FFH;
• CMD – Numarul comenzii.
◦ Daca aparatul fiscal primeste cod de comanda care nu exista sau este invalid, acesta
raspunde cu un mesaj impachetat de lungime zero a campului de date si ridica bitul de
stare pentru comanda invalida la unu;
◦ Cand aparatul fiscal raspunde unui mesaj dat – acesta foloseste aceeasi valoare a codului
de comanda din mesajul impachetat catre Host;
◦ Limita superioara a valorii comenzilor permise depinde de dispozitiv;
◦ Lungime: 2 octeți (word), codat in 4 octeți;
◦ Valori: Deoarece valorile posibile in acest protocol sunt in intervalul [0..65535] (DEC),
aplicatia Dvs. ar trebui sa completeze valoarea necesara in variabila tip octet. Fiecare
digit din acesti doi octeti este transmis si i se adauga valoarea 30H. Ca urmare, vor fi
patru octeti in mesajul impachetat pentru acest camp. Motivul pentru aceasta codare este
legat de rularea interna a protocolului in aparatele fiscale;
◦ Exemplu: variabila cu o valoare de 1AE3H in mesajul impachetat este prezentata ca 4
octeti cu urmatoarele valori: 31H,3AH,3EH,33H;
◦ Nota: Lista cu comenzile specifice, permise si valide pentru un aparat ar trebui
achizitionata din documentatia specifica a acelui aparat. Daca o valoare data este
posibila, asta nu inseamna neaparat ca ea este permisa sau utilizabila;
• Data – Date logice. Formatul si lungimea campului de date depind de comanda;
◦ Daca o comanda nu necesita trimiterea de date catre aparatul fiscal, sau daca in
10
consecinta raspunsul aparatului fiscal catre Host nu are date, atunci lungimea campului
este zero.
◦ Daca exista o eroare de sintaxa atunci cand se trimite o comanda de la Host catre
aparatul fiscal , acesta din urma raspunde cu un mesaj impachetat de lungime zero a
campului de date si ridica valoarea bitului de stare pentru eroarea de sintaxa la unu;
◦ Lungime (Host ctre aparatul fiscal): 0 – 213 octeți;
◦ Lungime (aparatul fiscal catre Host) 0 – 218 octeți;
◦ Valori: 09H, 0AH si valorile din interval intre 20H si FFH;
• 04 (Separator) - Separator. In mesajul impachetat de la Host catre aparatul fiscal, acesta
este octetul care serveste ca marker de separare intre datele logice si cele de stare ale
aparatului fiscal (octeti de stare).
◦ Lungime: 1 octet;
◦ Valoare: 04H;
• STATUS – Campul de date continand informatii despre starea curenta a aparatului fiscal. In
continuare, referirea la acest octet se va face cu expresia “status octeți”.
◦ Semnificatia fiecarui bit din fiecare octet de stare trebuie cautata in documentatia
specifica fiecarui aparat fiscal;
◦ Conditia unui bit dat corespunde logic unei conditii specifice a aparatului fiscal. In
continuare, denumirea tuturor acestor biti este de “status bit – bit de stare”, si cand se va
face referire la conditia unui status dat aceasta va fi la valoarea bitului de stare dat;
◦ Pe ansamblu – bitii pot fi clasificati in urmatoarele grupe si subgrupe:
▪ Unii care pot fi ignorati:
• Un bit de stare poate fi salvat pentru utilizare viitoare (depinzand de situatie, el
poate avea intotdeauna valoarea de 0 sau 1);
• Un bit de stare poate fi salvat pentru utilizare interna (depinzand de situatie, el
poate avea intotdeauna valoarea de 0 sau 1);
▪ Unii carora trebuie sa li se acorde o atentie speciala:
• Biti de stare informativi – informeaza despre starea logica sau fizica a
aparatului. Unele operatii nu sunt permise in anumite situatii si de aceea ar fi
bine sa fie atent monitorizate. De exemplu:
◦ Daca imprimanta nu mai are hartie – nu poate printa nici un fel de document;
◦ Dca aparatul fiscal nu este fiscalizat – nu poate emite documente fiscale;
• Biti de stare eroare – informeaza despre o eroare existenta. Aceasta poate fi o
comanda nepermisa, o eroare de sintaxa etc. Uneori (cu vechiul protocol) singura
cale pentru un program de a lua o decizie corecta in rezolvarea unei situatii este
de a aduna impreuna status-urile disponibile din raspunsul aparatului fiscal;
◦ Lungime: 8 octeți;
◦ Valorile pentru fiecare din octeți: de la 80H la FFH;
• 05 (Data Terminator) - Separator.
◦ In mesajul impachetat de la Host la aparatul fiscal acesta este octetul care serveste ca
11
marker, separand datele logice de restul mesajului.
◦ In mesajul impachetat de la aparatul fiscal la Host acesta este octetul care serveste ca
marker, separand datele de stare de restul mesajului.
◦ Valoare: 05H;
◦ Lungime: 1 octet;
• BCC – Suma de control (Checksum). Include valorile de la <01> (ea insasi exclusa) la <05>
(ea insasi inclusa). Deoarece valorile posibile din acest protocol sunt in intervalul
[0..65535] (DEC), aplicatia Dvs. ar trebui sa completeze valoarea necesara in variabila de
tip cuvant (word). Fiecare digit din acesti doi octeți este transmis si i se adauga valoarea
30H. Ca urmare vor fi patru octeți in mesajul impachetat pentru acest camp. Motivul pentru
aceasta codare este in legatura cu rularea interna a protocolului in aparatele fiscale;
◦ Exemplu: variabila cu valoarea 1AE3H din mesaj se prezinta sub forma a patru octeți cu
urmatoarele valori: 31H,3AH,3EH,33H;
◦ Lungime: 2 octeți (word), codat in 4 octeți;
◦ Valori: de la 30H la 3FH;
• 03 (Terminator) - Un octet care marcheaza sfarsitul mesajului impachetat.
◦ Lungime: 1 octet.
◦ Valoare: 03H.
12
Utilizarea programului DUDE
Software dependent de hardware se refera la aplicatii care pot rula doar pe anumite modele de
aparate fiscale. Software independent de hardware se refera la aplicatii care ruleaza corect pe orice
model de aparat fiscal.
DUDE are capabilitati de ambele tipuri – de exemplu, proprietatile si metodele sunt aceleasi pentru
toate modelele dar in acelasi timp – o parte din valorile maxime sau minime depind de modelul
utilizat. De exemplu, valorile maxime ale numarului de caractere imprimate.
Prin urmare – atunci cand proiectati aplicatia puteti folosi DUDE ca o solutie comuna si universala
pentru aparatele fiscale produse de Datecs, dar trebuie sa fiti atenti ca de fapt lucreaza cu un model
anume.
Una dintre primele intrebari despre acest server COM a fost "Este sau nu sigur cand este solicitat
simultan de comenzi?".
Siguranta la comenzi simultane este un termen destul de vag. Pentru a raspunde la intrebare, in mod
clar trebuie sa stim ce inseamna aceasta: "O secventa de cod este sigura la comenzi simultane daca
functioneaza corect atunci cand simultan poate executa corect aceste comenzi."
Utilizarea acestui server COM nu este sigura in cazul comenzilor multiple! Acesta nu gestioneaza
comenzile catre aparatul fiscal sub forma unei cozi de asteptare si daca trimiteti comenzi simultan –
cel mai probabil o parte dintre aceste comenzi nu vor fi executate corect. Aparatul fiscal insusi va
respinge o parte dintre ele. De exemplu: daca doriti sa emiteti bonuri sosite din mai multe surse dar
nu va gestionati propria coada de asteptare – cel mai probabil apartul fiscal va respinge emiterea
celui de al doilea bon. Motivul este dat de restrictia impusa de lege: nu este permisa emiterea nui
bon fiscal daca cel anterior nu a fost finalizat.
Server-ul COM lucreaza corect si trimite comenzi catre aparatul fiscal in mod corect – dar
trebuie sa cunoasteti aceasta particularitate referitoare la comenzile multiple trimise simultan si sa
proiectati aplicatia in mod corespunzator.
13
Cand se porneste sau se opreste server-ul COM si cand se deschide sau
se inchide conexiunea la aparatul fiscal?
14
Utilizarea DUDE din Visual Studio 2017 (C#)
In fereastra de dialog tip „wizard” – alegeti COM-ul, cautati in lista ”dude” si tastati butonul
“OK”;
Aceasta este tot – Visual Studio va adauga referinta la „dude” si puteti incepe utilizarea
acestuia;
15
Puteti gasi un exemplu de program, cu codul sursa aferent, in folderele aparute la instalare;
16
Utilizarea DUDE din Delphi
Exista mai multe cai de a utiliza un server COM din Delphi, dar aici ne referim doar la cea
preferata: adaugarea tipului de librarie intr-un pachet si dupa inregistrarea acestuia – puteti folosi
DUDE ca si o componenta. Exemplul este facut sub Delphi 10.1 Berlin, dar metoda este aceeasi
pentru toate versiunile de la Delphi 7 in sus.
Delphi va crea un nou proiect sub forma unui pachet gol, asa ca acum puteti sa-l salvati cu
ce nume doriti, dar pentru exemplul de fata – fie salvarea acestuia ca “fd_ROU.dproj” (de la
17
expresia: fiscal devices – Romania);
Mergeti la menu si alegeti “Component\Import Component”;
Alegeti “Import a Type Library” si dati click pe butonul “Next”;
18
Pe pagina urmatoare – alegeti “Palette page”, “Unit dir name”, activati generarea
componentei si dati click pe butonul “Next”;
Alegeti optiunea “Add unit to fd_ROU.dproj project” si dati click pe butonul “Finish”;
Delphi va crea “dude_TLB.pas” pentru Dvs. Salvati si alegeti Build pentru proiect;
19
Instalati pachetul in IDE si puteti incepe sa folositi DUDE din cadrul altor proiecte;
Puteti gasi o noua componenta in “Tool Palette” si sa incepeti sa o folositi;
Puteti gasi un exemplu de program, cu codul sursa aferent, in folderele aparute la instalare;
Nota: Proiectul demo foloseste codul sursa JVCL/JCL, care poate fi obtinut de la adresa: https://github.com/project-
jedi, https://github.com/TurboPack/SynEdit, sau din “GetIt Package manager”, parte componenta in cele mai noi
versiuni Delphi.
20
Tipuri de nume
Server-ul COM DUDE exporta cateva tipuri de nume care sunt folosite intern si ale caror nume sunt
de tip limbaj natural pentru a putea fi mai usor parametrizate de catre aplicatiile client.
Tip nume Valori Descriere
Aplicatiile pot alege/seta limba preferata a server-ului COM, dupa
TDudeLanguage
• English care mesajele de eroare sau de stare ale aparatului fiscal vor fi
• Romanian returnate in acea limba.
TTransportProtocol
• ctc_RS232 Aplicatia trebuie sa seteze tipul protocolului de comunicatie
• ctc_TCPIP inaintea deschiderii conexiunii cu aparatul fiscal.
Folosit doar in scop informativ. Dupa conectarea cu succes la
TDeviceType
• dt_FiscalPrinter
aparatul fiscal driver-ul DUDE daca acesta este imprimanta fiscala
• dt_ECR sau casa de marcat fiscala.
• mc_Unknown
• mc_DP_05
• mc_DP_25
• mc_DP_35
• mc_DP_150 Dupa o conectare cu succes la aparatul fiscal, aplicatia poate citi
din DUDE modelul acestuia. Aceasta informatie se foloseste in
TDeviceModel • mc_WP_50 cazurile in care un parametru este dependent de model. De
• mc_WP_500 exemplu, numarul maxim de coloane tiparibile.
• mc_FP_650
• mc_FP_700
• mc_FP_800
• mc_FMP_350
DUDE are o metoda prin care aplicatia client poate executa
TScriptType
• DS scripturi tip text realizate anterior. Este folosit atunci cand motorul
• FPrint de citire a scriptului trebuie sa stie limba acestuia. Nota: In aceasta
versiune de DUDE – tipul de script FPrint nu este suportat.
DUDE poate trimite comenzi ale aplicatiei client catre aparatul
fiscal in trei feluri:
• Folosind metoda "execute_Command"
• Folosind metoda "execute_Script_V1"
• Folosind metoda "execute_Command_ByName"
TCodeType
• Delphi DUDE poate genera un exemplu de cod sursa in doua limbi pentru
• CSharp toate comenzile care sunt exportate prin metoda
"get_ComandsList".
Acest cod sursa este un exemplu de utilizare a metodei
"execute_Command_ByName" si o puteti folosi daca o
considerati corecta sau utilizabila. Nota: In aceasta versiune de
DUDE – driver-ul genereaza cod sursa doar in limbajele Pascal
(Delphi) si C#.
21
Proprietati
Starea curenta a aparatului fiscal este codata intr-un camp de 8 octeti si care este returnat in cadrul
fiecarui mesaj impachetat trimis de catre acesta. Proprietatile lisate mai jos returneaza conditia
acestor indicatori (flags) pe care aparatul fiscal le le-a trimis in caz de eroare sau defctiune.
Tip Stare
Nume proprietate Semnificatia
proprietate [octet,bit]
Boolean Eroare generala – oricare dintre erorile marcate cu
eSBit_GeneralError_Sharp [0,5]
Doar citire #
Boolean
eSBit_PrintingMechanism [0,4] # Defectiune in mecanismul de imprimare.
Doar citire
Boolean
eSBit_ClockIsNotSynchronized [0,2] Ceasul de timp real (RTC) nu este sincronizat.
Doar citire
Boolean
eSBit_CommandCodeIsInvalid [0,1] # Codul comenzii este invalid.
Doar citire
Boolean
eSBit_SyntaxError [0,0] # Eroare de sintaxa.
Doar citire
Boolean
eSBit_CommandNotPermitted [1,1] # Comanda nu este permisa.
Doar citire
Boolean # Depasire capacitate maxima in timpul executiei
eSBit_Overflow [1,0]
Doar citire comenzii.
Boolean
eSBit_EJIsFull [2,2] Jurnal Electronic (JE) plin.
Doar citire
Boolean
eSBit_EndOfPaper [2,0] # Rola de hartie terminata.
Doar citire
Boolean
eSBit_FM_NotFound [4,6] Memoria Fiscala (MF) negasita sau defecta.
Doar citire
Boolean
eSBit_FM_NotAccess [4,0] * Eroare la accesul datelor stocate in MF.
Doar citire
Boolean
eSBit_FM_Full [4,4] * MF plina.
Doar citire
Boolean
eSBit_GeneralError_Star [4,5] Oricare din erorile marcate cu ‘*’
Doar citire
22
Starea aparatului (Device status) – biti de stare tip informativi
Starea curenta a aparatului fiscal este codata intr-un camp de 8 octeti si care este returnat in cadrul
fiecarui mesaj impachetat trimis de catre acesta. Proprietatile lisate mai jos returneaza conditia
acestor indicatori (flags) care au doar un caracter informativ si nu pot fi considerate ca mesaje de
eroare sau defctiune.
Tip Stare
Nume proprietate Semnificatia
proprietate [octet,bit]
Boolean
iSBit_Cover_IsOpen [0,6] Capacul imprimantei este deschis.
Doar citire
Boolean
iSBit_No_ClientDisplay [0,3] Afisajul de client este neconectat.
Doar citire
Boolean Au trecut mai mult de 24 ore de la emiterea
iSBit_24h_AfterDayOpening [1,2]
Doar citire primului bon fiscal.
Boolean
iSBit_Receipt_Nonfiscal [2,5] Bon nefiscal deschis.
Doar citire
Boolean
iSBit_EJ_NearlyFull [2,4] JE aproape plin.
Doar citire
Boolean
iSBit_Receipt_Fiscal [2,3] Bon fiscal deschis.
Doar citire
Boolean
iSBit_Near_PaperEnd [2,1] Rola de hartie aproape de sfarsit.
Doar citire
Boolean Au mai ramas mai putin de 60 rapoarte fiscale
iSBit_LessThan_60_Reports [4,3]
Doar citire zilnice Z in MF.
Boolean
iSBit_Number_SFM_Set [4,2] Seria aparatului si seria fiscala sunt setate.
Doar citire
Boolean
iSBit_Number_Tax_Set [4,1] Codul Fiscal al Utilizatorului (CIF) este setat.
Doar citire
Boolean Taxa pe Valoare Adaugata (TVA) a fost setata cel
iSBit_VAT_Set [5,4]
Read only putin o data.
Boolean
iSBit_Device_Fiscalized [5,3] Aparatul fiscal este fiscalizat.
Doar citire
Boolean
iSBit_FM_formatted [5,1] MF este formatata.
Doar citire
23
Informatii despre dispozitivul conectat
device_Type
TDeviceType • dt_FiscalPrinter for a fiscal printer;
Doar citire • dt_ECR for a cash register;
WideString/BSTR
device_Number_Serial Seria aparatului fiscal.
Doar citire
WideString/BSTR
device_Number_FMemory Seria fiscala a aparatului fiscal.
Doar citire
WideString/BSTR
device_Distributor Numele distribuitorului.
Doar citire
• mc_DP_05 pentru modelul DP-05
• mc_DP_25 pentru modelul DP-25
• mc_DP_35 pentru modelul DP-35
• mc_DP_150 pentru modelul DP-150
• mc_WP_50 pentru modelul WP-50
device_Model
TDeviceModel • mc_WP_500 pentru modelul WP-500
Doar citire • mc_FP_650 pentru modelul FP-650
• mc_FP_700 pentru modelul FP-700
• mc_FP_800 pentru modelul FP-800
• mc_FMP_350 pentru modelul FMP-350
• mc_Unknown, daca server-ul cOM nu recunoaste
aparatul conectat
WideString/BSTR
device_Model_Name Numele modelului primit de la aparat.
Doar citire
Integer/Long
codePage Pagina cod folosita de la aparat.
Doar citire
WideString/BSTR
device_Firmware_Revision Numarul reviziei versiunii firmware a aparatului.
Doar citire
WideString/BSTR
device_Firmware_Date Data si ora reviziei versiunii firmware.
Doar citire
WideString/BSTR
device_Firmware_CheckSum Suma de control (checksum) a versiunii de firmware.
Doar citire
24
Comunicatie
Aceasta sectiune contine informatii despre proprietatile legate de comportamentul server-ului COM
cand se incearca deschiderea conexiunii sau in timpul comunicatiei cu aparul fiscal.
25
operatie de citire, aceasta valoare este multiplicata cu
numarul necesar de octeti a fi cititi.
Parte din structura timpului de asteptare la comunicatie. O
constanta folosita la calculul timpului total de asteptare
pentru operatiuni de citire (in ms). Pentru fiecare operatie
de citire, aceasta valoare este adugata la produsul dintre
Intreg/Lung membrul „ReadTotalTimeoutMultiplier” si numarul
rs232_ReadTotalTimeoutConstant
Doar citire necesar de octeti de citit.
O valoare zero pentru ambii membri
„ReadTotalTimeoutMultiplier” si
„ReadTotalTimeoutConstant” indica faptul ca timpii totali
de asteptare nu sunt folositi pentru operatiile de citire.
Parte din structura timpului de asteptare la comunicatie.
Multiplicatorul este folosit la calculul timpului total de
Intreg/Lung
rs232_WriteTotalTimeoutMultiplier asteptare pentru operatiile de scriere (in ms). Pentru fiecare
Doar citire
operatie de scriere, aceasta valoare este multiplicata cu
numarul necesar de octeti a fi scrisi.
Parte din structura timpului de asteptare la comunicatie. O
constanta folosita la calculul timpului total de asteptare
pentru operatiuni de scriere (in ms). Pentru fiecare operatie
de scriere, aceasta valoare este adugata la produsul dintre
Intreg/Lung membrul „WriteTotalTimeoutMultiplier” si numarul
rs232_WriteTotalTimeoutConstant
Doar citire necesar de octeti de scrisi.
O valoare zero pentru ambii membri
„WriteTotalTimeoutMultiplier” si
„WriteTotalTimeoutConstant” indica faptul ca timpii totali
de asteptare nu sunt folositi pentru operatiile de scriere.
Cand aceasta valoare este TRUE – DUDE va incerca sa
Boolean
rs232_OnOpen_Set_DCB seteze structura DCB in timpul deschiderii portului COM.
Citire/Scriere
Valoarea implicita este TRUE.
Cand aceasta valoare este TRUE – DUDE va incerca sa
Boolean seteze DTR (data-terminal-ready) la valoarea FALSE in
rs232_OnOpen_Set_DTR_ToFalse
Citire/Scriere timpul deschiderii portului COM. Sterge semnalul DTR.
Valoarea implicita este TRUE.
Cand aceasta valoare este TRUE – DUDE va incerca sa
Boolean seteze RTS (request-to-send) la valoarea FALSE in timpul
rs232_OnOpen_Set_RTS_ToFalse
Citire/Scriere deschiderii portului COM. Sterge semnalul RST.
Valoarea implicita este TRUE.
O valoare TRUE returnata indica fie ca o conexiune
modem este activa, fie o conexiune LAN este activa si ca
un server proxy este configurat corespunzator pentru LAN.
Boolean
connected_ToLAN Valoarea TRUE nu garanteaza ca o anumita conexiune la
Doar citire
un Host specific poate fi realizata.
O valoare FALSE indica faptul ca nici modemul nici LAN
nu sunt conectate.
26
Comportament
language
TDudeLanguage • English
Doar citire • Romanian
Cand aceasta valoare este TRUE – DUDE va incerca sa
Boolean
trackingMode salveze comunicatia cu aparatul fiscal in acord cu valorile
Doar citire
altor parametri de urmarire.
WideString/BSTR Calea catre fisierul de log cand DUDE este in modul
trackingMode_Path
Doar citire urmarire.
Daca DUDE este in modul urmarire – va incerca sa
WideString/BSTR
trackingMode_FileName creeze si sa salveze fisierul de log ca un fisier text cu
Doar citire
acelasi nume.
Integer/Long Aceasta valoare indica limita maxima a randurilor de text
trackingMode_RowLimit
Doar citire in fisierul de log. DUDE accepta valori intre 100 si 5000.
Boolean Daca aceasta valoare este TRUE – DUDE va initia un
active_OnBeforeScriptExecute
Doar citire eveniment inaintea executiei scriptului.
Daca aceasta valoare este TRUE – DUDE va initia un
Boolean
active_OnScriptRowExecute eveniment dupa executia comenzii din linia de text a
Doar citire
scrptului.
Boolean Daca aceasta valoare este TRUE – DUDE va initia un
active_OnAfterScriptExecute
Doar citire eveniment dupa executia scriptului.
Daca aceasta valoare este TRUE – DUDE va initia un
eveniment inaintea unei operatii ceea ce va constitui o
Boolean
active_OnFirstProgress_Init bucla de comenzi. De exemplu, este utilizabila pentru
Doar citire
initializarea unei bare de progres proces(progresive bar-
graph).
Daca aceasta valoare este TRUE – DUDE va initia un
Boolean
active_OnFirstProgress_Loop eveniment dupa executia unei comenzi din cadrul unei
Doar citire
bucle de comenzi.
Daca aceasta valoare este TRUE – DUDE va initia un
Boolean
active_OnFirstProgress_Complete eveniment dupa terminarea unei operatii care este o bucla
Doar citire
de comenzi.
Daca aceasta valoare este TRUE – DUDE va initia un
Boolean eveniment inaintea unei operatii care este o bucla de
active_OnSecondProgress_Init
Doar citire comenzi. De exemplu, este utilizabila pentru initializarea
unei bare de progres proces(progresive bar-graph).
Daca aceasta valoare este TRUE – DUDE va initia un
Boolean
active_OnSecondProgress_Loop eveniment dupa executia unei comenzi din cadrul unei
Doar citire
bucle de comenzi.
Daca aceasta valoare este TRUE – DUDE va initia un
Boolean
active_OnSecondProgress_Complete eveniment dupa terminarea unei operatii care este o bucla
Doar citire
de comenzi.
Daca aceasta valoare este TRUE – DUDE va initia un
Boolean
active_OnSendCommand eveniment dupa trimiterea mesajului impachetat catre
Doar citire
aparatul fiscal.
Daca aceasta valoare este TRUE – DUDE va initia un
Boolean
active_OnWait eveniment dupa receptionarea octetului SYN de la
Doar citire
aparatul fiscal.
27
Daca aceasta valoare este TRUE – DUDE va initia un
Boolean
active_OnReceiveAnswer eveniment dupa receptionarea mesajului impachetat de la
Doar citire
aparatul fiscal.
Daca aceasta valoare este TRUE – DUDE va initia un
Boolean
active_OnStatusChange eveniment dupa receptionarea unui mesaj impachetat de
Doar citire
la aparatul fiscal.
Boolean Daca aceasta valoare este TRUE – DUDE va initia un
active_OnError
Doar citire eveniment daca apare o eroare.
28
Alte proprietati
29
comutare vara/iarna a orarului este activ.
30
Evenimente
Prin proiectare, evenimentele sunt destinate a fi utilizate in scop informativ sau pentru gestionarea
interfetei cu utilizatorul. In timpul executarii comenzilor mai mult de o comanda poate fi
ridicata/semnalata. Nu folositi codurile de eroare din evenimente legate de manipularea executiei
comenzilor!
evenimentul OnError
Nota: Daca executia unei comenzi e ratata – valoarea lui "error_Code" va fi cel mai probabil egala
cu rezultatul executarii metodei date, dar daca se executa cu succes comanda – rezultatul si
ultimul cod de eroare vor avea valoarea zero si acest eveniment nu va fi ridicat/semnalat.
Parametri:
Nume Tip Descriere
error_Code Intreg Valoarea codului de eroare depinde de eroare.
error_Message WideString Mesajul textului de eroare.
evenimentul OnBeforeScriptExecute
evenimentul OnScriptRowExecute
DUDE va initia acest eveniment dupa executia comenzii din randul de text al scriptului.
Parametri:
Nume Tip Descriere
The index arata numarul liniei dependent de inceputul scriptului. Numerotarea
row_Index Intreg
inepe de la zero.
Valoarea codului de eroare dependenta de eroare. Un cod de eroare cu
error_Code Intreg
valoarea 0 inseamna ca nu exista nici o eroare in timpul executarii comenzii.
input_Value WideString Valoarea liniei de text executate.
output_Value WideString Raspunsul din partea aparatului fiscal.
31
evenimentul OnAfterScriptExecute
evenimentul OnSendCommand
DUDE va initia acest eveniment dupa trimiterea mesajului impachetat catre aparatul fiscal.
Parametri:
Nume Tip Descriere
Command WideString Valoarea comenzii in baza zece.
DateAndTime WideString Data si ora executiei in format 'dd.mm.yyyy hh:mm:ss:zzz'
La nivelul inferior al protocolului de comunicatie – daca o
comanda este ratata sau daca aparatul fiscal a cerut den la Host
repeat_Value WideString sa repete o comanda, Host trebuie sa trimita acelasi mesaj
impachetat catre aparatul fiscal. Valoarea acestui parametru
contine indexul curent al numarului de incercari.
Partea de Antet din mesajul impachetat catre aparatul fiscal, in
hex_Header WideString
valori hexa.
Partea de date logice din mesajul impachetat catre aparatul fiscal,
hex_Data WideString
in valori hexa.
Partea de Final din mesajul impachetat catre aparatul fiscal, in
hex_Footer WideString
valori hexa.
Partea de date logice din mesajul impachetat catre aparatul fiscal,
human_Data WideString
inainte de a fi convertit in valori hexa (human readable).
evenimentul OnWait
DUDE va initia acest eveniment dupa receptionarea octetului SYN de la aparatul fiscal.
Parameters:
Nume Tip Descriere
Value Octet Trebuie sa contina o valoare egala cu SYN
32
evenimentul OnReceiveAnswer
DUDE va initia acest eveniment dupa receptionarea mesajului impachetat de la aparatul fiscal.
Parameters:
Nume Tip Descriere
Command WideString Valoarea comenzii in baza zece.
DateAndTime WideString Data si ora executiei in format 'dd.mm.yyyy hh:mm:ss:zzz'
La nivelul inferior al protocolului de comunicatie – daca o
comanda este ratata sau daca aparatul fiscal a cerut den la Host
repeat_Value WideString sa repete o comanda, Host trebuie sa trimita acelasi mesaj
impachetat catre aparatul fiscal. Valoarea acestui parametru
contine indexul curent al numarului de incercari.
Partea de Antet din mesajul impachetat de la aparatul fiscal, in
hex_Header WideString
valori hexa.
Partea de date logice din mesajul impachetat de la aparatul fiscal,
hex_Data WideString
in valori hexa.
Partea de Final din mesajul impachetat de la aparatul fiscal, in
hex_Footer WideString
valori hexa.
Partea de date logice din mesajul impachetat de la aparatul fiscal,
human_Data WideString
inainte de a fi convertit in valori hexa(human readable).
evenimentul OnStatusChange
DUDE va initia acest eveniment dupa receptionarea mesajului impachtat de la aparatul fiscal.
Evenimentul este utilizabil ca declansator. Dupa semnalarea evenimentului – aplicatia client poate
primi starea aparatului fiscal de la octetii de stare (sau de la parametrii de stare) deoarece toti acestia
au fost deja actualizati intern.
33
evenimentul OnFirstProgress_Init
DUDE va initia acest eveniment inaintea inceperii unei operatii care este o bucla de comenzi. De
exemplu, este utilizabil pentru initializarea unei bare progresive (bar-graph).
Parameters:
Nume Tip Descriere
value_Minimum Intreg Valoarea minim calculata pentru initializare.
value_Maximum Intreg Valoarea maxim calculata pentru initializare.
value_Position Intreg Valoarea curenta a initializarii.
evenimentul OnFirstProgress_Loop
DUDE va initia acest eveniment dupa executarea unei comenzi din cadrul unei bucle de comenzi.
Parametri:
Nume Tip Descriere
value_Position Intreg Pozitia curenta a progresarii.
evenimentul OnFirstProgress_Complete
DUDE va initia acest eveniment dupe terminarea unei operatii care este o bucla de comenzi.
34
evenimentul OnSecondProgress_Init
DUDE va initializa acest eveniment inaintea inceperii unei operatii care este o bucla de comenzi.
De exemplu, este utilizabil pentru initializarea unei bare progresive (bar-graph).
Parametri:
Nume Tip Descriere
value_Minimum Intreg Valoarea minim calculata pentru initializare.
value_Maximum Intreg Valoarea maxim calculata pentru initializare.
value_Position Intreg Valoarea curenta a initializarii.
evenimentul OnSecondProgress_Loop
DUDE va initia acest eveniment dupa executarea unei comenzi din cadrul unei bucle de comenzi.
Parameri:
Nume Tip Descriere
value_Position Integer Pozitia curenta a progresarii.
evenimentul OnSecondProgress_Complete
DUDE va initia acest eveniment dupa terminarea unei operatii care este o bucla de comenzi.
35
Metode
Modul de urmarire/supraveghere
Pentru nevoile de dezvoltare, DUDE suporta un motor intern dedicat urmaririi comunicatiei. Daca
programatorul doreste sa cunoasca sau sa utilizeze comunicatia intre Host (PC) si Slave (aparatul
fiscal) – el poate activa acest mod si DUDE va salva comunicatia in fisierul dat. Uneori, daca se
detecteaza un bug sau o problema – echipa de suport tehnic va cere activarea modului de urmarire,
pentru a executa aceleasi actiuni pas cu pas si apoi sa trimita fisierul de log pentru analizare.
set_TrackingMode_RowLimit
Executia acestei functii limita numarului liniilor de text din cadrul fisierului de log. DUDE accepta
values intre 100 si 5000.
Parameri:
Nume Tip Descriere
Intreg Limita numarului liniilor de text din cadrul fisierului de log.
Value DUDE accepta valori intre 100 si 5000.
Lung
Rezultatul este zero daca metoda este executata cu succes si mai
mica decat zero daca exista o eroare. Daca rezultatul este negativ,
Result Intreg / Lung valoarea contine ultimul cod de eroare din motorul de urmarire al
DUDE.
set_TrackingMode_Path
Executia acestei functii va seta calea catre fisierul de log atunci cand DUDE este in modul de
urmarire.
Parametri:
Nume Tyip Descripere
WideString Calea catre fisierul de log atunci cand DUDE este in modul de
Value urmarire.
BSTR
Rezultatul este zero daca metoda este executata cu succes si mai
Result Integer / Long mica decat zero daca exista o eroare. Daca rezultatul este negativ,
valoarea contine ultimul cod de eroare din motorul de urmarire al
36
DUDE.
set_TrackingMode_FileName
Executarea acestei functii va seta numele fisierului de log pe care DUDE va incerca sa il creeze si
sa il completeze atunci cand este in modul de urmarire.
Parametri:
Nume Tip Descriere
WideString
Value Numele fisierului de log.
BSTR
Rezultatul este zero daca metoda este executata cu succes si mai
mic decat zero daca exista o eroare. Daca rezultatul este negativ,
Result Intreg / Lung valoarea contine ultimul cod de eroare din motorul de urmarire al
DUDE.
set_TrackingMode
Executia acestei functii va activa sau va dezactiva modul de urmarire. Daca valoarea este TRUE –
DUDE va incerca sa salveze comunicatia cu aparatul fiscal intr-un fisier in acord cu valorile altor
parametri de urmarire.
Parametri:
Nume Tip Descriere
Value Boolean Daca valoarea este TRUE, modul de urmarire va fi activat.
Rezultatul este zero daca metoda este executata cu succes si mai
mic decat zero daca exista o eroare. Daca rezultatul este negativ,
Result Intreg / Lung valoarea contine ultimul cod de eroare din motorul de urmarire al
DUDE.
37
Comunicatii
set_TransportType
Executia acestei functii va seta tipul protocolului de comunicatie. Aplicatia client trebuie sa seteze
tipul de protocol inaintea deschiderii conexiunii cu aparatul fiscal.
Parameri:
Nume Tip Descriere
Aplicatia client trebuie sa seteze tipul de protocol inaintea
deschiderii conexiunii cu aparatul fiscal.
• ctc_RS232 – pentru conexiune prin RS-232/USB
Value TTransportProtocol
• ctc_TCPIP – pentru conexiune prin LAN (TCP/IP)
Pentru valoarea curenta – verificati valoarea parametrului
corespunzator: "protocol_TransportType".
set_TCPIP
Executia acestei functii va seta valorile necesare pentru executarea cu succes a metodei
"open_Connection" daca tipul de protocol ales este ctc_TCPIP. Aplicatia client trebuie sa seteze
tipul de protocol al comunicatiei, IPAddress si Portul inainte sa incerce deschiderea conexiunii cu
aparatul fiscal.
Parametri:
Nume Tip Descriere
WideString Adresa IP a aparatului fiscal.
IPAddress BSTR
38
set_RS232
Executia acestei functii va seta valorile necesare pentru executarea cu succes a metodei
"open_Connection" daca tipul de protocol ales este ctc_RS232. Aplicatia client trebuie sa seteze
tipul de protocol al comunicatiei, ComPort si BaudRate inainte sa incerce deschiderea conexiunii cu
aparatul fiscal.
Parametri:
Nume Tip Descriere
ComPort Intreg / Lung ComPort.
BaudRate Intreg / Lung Baud rate – trebuie sa fie aceeasi cu cea din aparatul fiscal.
39
set_RS232_Timeouts
Executia acestei functii va seta valorile structurii timpilor de asteptare din comunicatie
(commtimeouts). Nu folositi aceasta functie daca nu stiti cum sau daca DUDE lucreaza corect cu
valorile implicite.
Parametri:
Nume Tip Descriere
Parte a structurii commtimeouts. Timpul maxim de asteptare
inainte de sosirea urmatorului octet pe linia de comunicatie
(in ms). Daca intervalul de timp intre sosirea a oricare doi
octeti depaseste aceasta valoare, operatia ReadFile este
terminata si orice dat din buffer este returnata. O valoare de
ReadIntervalTimeout LongWord zero indica faptul ca ca acesta nu este utilizat.
O valoare a MAXDWORD, combinata cu valorile zero
pentru ambii membri „ReadTotalTimeoutConstant” si
„ReadTotalTimeoutMultiplier”, specifica faptul ca operatia
citita trebuie returnata imediat cu octeții care deja au fost
receptionati, chiar daca acestia din urma nu exista.
Parte a structurii commtimeouts. Este multiplicatorul folosit
la calculul timpului total pentru operatiile de citire (in ms).
ReadTotalTimeoutMultiplier LongWord
Pentru fiecare operatie citita, aceasta valoare este
multiplicata cu numarul necesar de octeți a fi cititi.
Parte a structurii commtimeouts. Este o constanta folosita la
calculul timpului total pentru operatiile de citire (in ms).
Pentru fiecare operatiune citita, aceasta valoare este adaugata
la produsul dintre membrul „ReadTotalTimeoutMultiplier” si
ReadTotalTimeoutConstant LongWord numarul necesar de octeți.
O valoare de zero pentru ambii membri
„ReadTotalTimeoutMultiplier” si
„ReadTotalTimeoutConstant” indica faptul ca aceasta nu este
folosita pentru operatiile de citire.
Parte a structurii commtimeouts. Este multiplicatorul folosit
la calculul timpului total pentru operatiile de scriere (in ms).
WriteTotalTimeoutMultiplier LongWord
Pentru fiecare operatie scrisa, aceasta valoare este
multiplicata cu numarul necesar de octeți a fi scrisi.
Parte a structurii commtimeouts. Este o constanta folosita la
calculul timpului total pentru operatiile de scriere (in ms).
Pentru fiecare operatiune scrisa, aceasta valoare este
adaugata la produsul dintre membrul
WriteTotalTimeoutConstant LongWord „ReadTotalTimeoutMultiplier” si numarul necesar de octeți.
O valoare de zero pentru ambii membri
„ReadTotalTimeoutMultiplier” si
„ReadTotalTimeoutConstant” indica faptul ca aceasta nu este
folosita pentru operatiile de scriere.
Rezultatul este zero daca metoda este executata cu succes si
mai mic decat zero daca exista o eroare. Daca rezultatul este
Result Intreg / Lung negativ – valoarea contine ultimul cod de eroare din motorul
de urmarire DUDE.
40
rs232_COMPortList
Aceasta metoda returneaza o lista cu porturile COM vizibile de catre DUDE. Daca portul COM al
Dvs. nu exista aici – cel mai probabil DUDE nu functioneaza corespunzator. Dupa adaugarea unui
nou dispozitiv USB sau hardware (port COM nou) – metoda trebuie executata din nou pentru a
actualiza informatiile din aplicatia client.
Parameri:
Nume Tip Descriere
open_Connection
Parametri:
Nume Tip Descriere
Rezultatul este zero daca metoda este executata cu succes si mai
mic decat zero daca exista o eroare. Daca rezultatul este negativ –
Result Intreg / Lung valoarea contine ultimul cod de eroare din motorul de urmarire
DUDE.
close_Connection
Parametri:
Nume Tip Descriere
Rezultatul este zero daca metoda este executata cu succes si mai
mic decat zero daca exista o eroare. Daca rezultatul este negativ –
Result Intreg / Lung valoarea contine ultimul cod de eroare din motorul de urmarire
DUDE.
41
Suport pentru erori
Puteti gasi o lista cu erorile posibile returnate de motorul DUDE sau de catre aparatul fiscal in
documentul: "ErrorCodes.xls". Acesta este localizat in folder-ul DOCUMENTATION, care este un
sub-folder din directorul-radacina al folder-ului de instalare.
get_ErrorMessageByCode
Parametri si rezultate:
Nume Tip Descriere
Value Intreg/Lung Valoarea codului.
WideString
Result BSTR Mesajul de eroare al codului.
get_Sbit_State
Aplicatiile client pot obtine starea oricarui bit de stare dupa fiecare raspuns al aparatului fiscal.
Parametri si rezultat:
Nume Tip Descriere
octetIndex Octet Indexul octetului de stare tinta.
bitIndex Octet Indexul bitului de stare tinta.
Rezultatul = TRUE – inseamna ca bitul de stare este semnalizat.
Result Boolean Exemplu:
if get_SBit_State(0,0) then ShowMessage('Syntax error!');
42
get_Sbit_Description
Aplicatiile client pot obtine textul de descriere pentru orice bit de stare dat.
Parametri si rezultat:
Nume Tip Descriere
octetIndex Octet Indexul octetului de stare tinta.
bitIndex Octet Indexul bitului de stare tinta.
WideString Textul de descriere pentru orice bit de stare dat.
Result BSTR Exemplu: ShowMessage(get_SBit_Description(0,0));
get_Sbit_ErrorChecking
Aplicatiile client pot obtine textul de descriere pentru orice bit de stare dat.
Parametri si rezultat:
Nume Tip Descriere
octetIndex Octet Indexul octetului de stare tinta.
bitIndex Octet Indexul bitului de stare tinta.
Daca rezultatul functiei este TRUE – asta inseamna ca motorul
Boolean DUDE verifica intern starea bitului de stare dat si daca acesta este
Result
semnalizat in raspunsul unei anumite comenzi – motorul va returna
o eroare ca rezultat al executiei comenzii.
43
set_Sbit_ErrorChecking
Aplicatia client poate modela comportamentul motorului DUDE dupa necesitatile proiectului. Daca
se considera ca aparitia unui anumit bit de stare nu este o eroare – puteti inchide verificarea
acestuia.
Nota: Schimbarea verificarii inseamna ca doar motorul DUDE va opri verificarea status-ului dat.
Aparatul fiscal va continua sa semnalizeze bitul de stare dat si va continua sa returneze erori mai
mici decat zero daca o comanda nu este corecta sau daca exista o eroare de sintaxa, de exemplu.
Aceasta functie este dezvoltata pentru nevoile aplicatiilor de service si Producatorul nu
recomanda utilizarea acesteia daca nu sunteti sigur despre ce este vorba. Inca o data: Daca
aparatul fiscal "crede" ca o comanda data este o eroare – nu o va executa.
Parametri si rezultat:
Nume Tip Descrere
octetIndex Octet Indexul octetului de stare tinta.
bitIndex Octet Indexul bitului de stare tinta.
TRUE sau FALSE daca doriti activarea sau dezactivarea verificarii
Value Boolean
bitului de stare dat.
Daca rezultatul functiei este TRUE – asta inseamna ca motorul
Boolean DUDE verifica intern starea bitului de stare dat si daca acesta este
Result
semnalizat in raspunsul unei anumite comenzi – motorul va returna
o eroare ca rezultat al executiei comenzii.
44
Comportamentul DUDE
Aplicatiile client pot schimba comportamentul DUDE in anumite aspecte. De exemplu, acestea pot
activa sau dezactiva semnalizarea evenimentelor in diferite cazuri.
set_ScriptEvents
Cu executia acestei metode, aplicatiile client pot activa sau dezactiva semnalizarea urmatoarelor
evenimente:
• OnBeforeScriptExecute;
• OnScriptRowExecute;
• OnAfterScriptExecute;
Parametri si rezultat:
Nume Tip Descriere
Valoarea parametrului activeaza sau
active_OnBeforeScriptExecute Boolean
dezactiveaza evenimentul corespunzator.
Valoarea parametrului activeaza sau
active_OnScriptRowExecute Boolean
dezactiveaza evenimentul corespunzator.
Valoarea parametrului activeaza sau
active_OnAfterScriptExecute Boolean
dezactiveaza evenimentul corespunzator.
Daca valoarea acestui parametru este TRUE –
motorul DUDE va incerca sa salveze
schimbarile in fisierul sau de setari.
save_ToSettings Boolean
Daca valoarea acestui parametru nu este TRUE
– schimbarile au efect doar pentru sesiunea
curenta a server-ului COM.
Rezultatul este egal cu zero daca metoda este
executata cu succes si mai mic decat zero daca
Result Integer / Long apare o eroare. Daca rezultatul este negativ –
valoarea contine ultimul cod de eroare din
motorul DUDE.
45
set_FirstProgressEvents
Cu executia acestei metode, aplicatiile client pot activa sau dezactiva semnalizarea urmatoarelor
evenimente:
• OnFirstProgress_Init;
• OnFirstProgress_Loop;
• OnFirstProgress_Complete;
Parametri si rezultat:
Nume Tip Descriere
Valoarea parametrului activeaza sau
active_OnFirstProgress_Init Boolean
dezactiveaza evenimentul corespunzator.
Valoarea parametrului activeaza sau
active_OnFirstProgress_Loop Boolean
dezactiveaza evenimentul corespunzator.
Valoarea parametrului activeaza sau
active_OnFirstProgress_Complete Boolean
dezactiveaza evenimentul corespunzator.
Daca valoarea acestui parametru este TRUE –
motorul DUDE va incerca sa salveze
schimbarile in fisierul sau de setari.
save_ToSettings Boolean
Daca valoarea acestui parametru nu este TRUE
– schimbarile au efect doar pentru sesiunea
curenta a server-ului COM.
Rezultatul este egal cu zero daca metoda este
executata cu succes si mai mic decat zero daca
apare o eroare.
Result Intreg / Lung
Daca rezultatul este negativ – valoarea contine
ultimul cod de eroare din motorul DUDE.
46
set_SecondProgressEvents
Cu executia acestei metode, aplicatiile client acestea pot activa sau dezactiva semnalizarea
urmatoarelor evenimente:
• OnSecondProgress_Init;
• OnSecondProgress_Loop;
• OnSecondProgress_Complete;
Parametri si rezultat:
Nume Tip Descriere
Valoarea parametrului activeaza sau
active_OnSecondProgress_Init Boolean
dezactiveaza evenimentul corespunzator.
Valoarea parametrului activeaza sau
active_OnSecondProgress_Loop Boolean
dezactiveaza evenimentul corespunzator.
Valoarea parametrului activeaza sau
active_OnSecondProgress_Complete Boolean
dezactiveaza evenimentul corespunzator.
If Daca valoarea acestui parametru este TRUE –
motorul DUDE va incerca sa salveze
schimbarile in fisierul sau de setari.
save_ToSettings Boolean
Daca valoarea acestui parametru nu este TRUE
– schimbarile au efect doar pentru sesiunea
curenta a server-ului COM.
Rezultatul este egal cu zero daca metoda este
executata cu succes si mai mic decat zero daca
Integer apare o eroare.
Result Long
Daca rezultatul este negativ – valoarea contine
ultimul cod de eroare din motorul DUDE.
47
set_CommunicationEvents
Cu executia acestei metode, aplicatiile client pot activa sau dezactiva semnalizarea urmatoarelor
evenimente:
• OnSendCommand;
• OnWait;
• OnReceiveAnswer;
• OnStatusChange;
• OnError;
Parametri si rezultat:
Nume Tip Descriere
Valoarea parametrului activeaza sau
active_OnSendCommand Boolean
dezactiveaza evenimentul corespunzator.
Valoarea parametrului activeaza sau
active_OnWait Boolean
dezactiveaza evenimentul corespunzator.
Valoarea parametrului activeaza sau
active_OnReceiveAnswer Boolean
dezactiveaza evenimentul corespunzator.
Valoarea parametrului activeaza sau
active_OnStatusChange Boolean
dezactiveaza evenimentul corespunzator.
Valoarea parametrului activeaza sau
active_OnError Boolean
dezactiveaza evenimentul corespunzator.
Daca valoarea acestui parametru este TRUE –
motorul DUDE va incerca sa salveze
schimbarile in fisierul sau de setari.
save_ToSettings Boolean
Daca valoarea acestui parametru nu este TRUE
– schimbarile au efect doar pentru sesiunea
curenta a server-ului COM.
Rezultatul este egal cu zero daca metoda este
executata cu succes si mai mic decat zero daca
Integer / apare o eroare.
Result Long
Daca rezultatul este negativ – valoarea contine
ultimul cod de eroare din motorul DUDE.
48
Servicii
Operatiuni cu fisiere
set_Download_Path
Aplicatia client trebuie sa seteze calea de descarcare pentru descarcarea fisierelor ANAF prin
executia acestei metode. Metoda trebuie sa fie executata inaintea executiei uneia din urmatoarele
metode: "download_ANAF_Zrange" sau "download_ANAF_DTRange".
Parametri:
Nume Tip Descriere
WideString
Value Calea de descarcare tinta (un folder existent).
BSTR
Rezultatul este egal cu zero daca metoda este executata cu succes
si msi mic decat zero daca apare o eroare. Daca rezultatul este
Result Intreg / Lung negativ – valoarea contine ultimul cod de eroare din motorul
DUDE.
download_ANAF_Zrange
Aceasta metoda descarca fisiere ANAF din aparatul fiscal in acord cu valorile:
“zRange_StartValue”, “zRange_EndValue”, “download_Path”.
In timpul executiei metodelor DUDE va procesa mai mult decat o data multe dintre evenimente, asa
ca daca este necesara accelerarea descarcarii fisierelor ANAF din aplicatia client – aplicatia poate
dezactiva cateva evenimente la inceput si dupa executia metodelor aceeasi aplicatie poate sa le
comute inapoi in starea activa.
Parametri:
Nume Tip Descriere
Rezultatul este egal cu zero daca metoda este executata cu succes
si mai mic decat zero daca apare o eroare. Daca rezultatul este
Result Intreg / Lung negativ – valoarea contine ultimul cod de eroare din motorul
DUDE.
49
download_ANAF_DTRange
Aceasta metoda descarca fisiere ANAF din aparatul fiscal in acord cu valorile:
“DateRange_StartValue”, “DateRange_EndValue”, “download_Path”.
In timpul executiei metodelor DUDE va procesa mai mult decat o data multe dintre evenimente, asa
ca daca este necesara accelerarea descarcarii fisierelor ANAF din aplicatia client – aplicatia poate
dezactiva cateva evenimente la inceput si dupa executia metodelor aceeasi aplicatie poate sa le
comute inapoi in starea activa.
Parameters:
Nume Tip Descriere
Rezultatul este egal cu zero daca metoda este executata cu succes
si mai mic decat zero daca apare o eroare. Daca rezultatul este
Result Intreg / Lung negativ – valoarea contine ultimul cod de eroare din motorul
DUDE.
cancel_Loop
Cu executarea acestei metode – puteti comanda motorului DUDE sa opreasca bucla de proces si
dupa aceea sa iasa din executarea metodei. De exemplu: In cazul unor parametri cu domeniu gresit
– procesul de descarcare al fisierelor ANAF poate dura foarte mult timp.
Parametri: Nici unul
Rezultat: Nici unul
upload_Logo
Aceasta metoda trimite un fisier de log catre aparatul fiscal. Fisierul trebuie sa fie de marime
corespunzatoare, monocrom si cu extensia “bmp”. Aparatele fiscale nu accepta imagini cu alta
extensie decat „bmp”.
In timpul executiei metodelor DUDE va procesa mai mult decat o data multe dintre evenimente, asa
ca daca este necesara accelerarea descarcarii fisierelor ANAF din aplicatia client – aplicatia poate
dezactiva cateva evenimente la inceput si dupa executia metodelor aceeasi aplicatie poate sa le
comute inapoi in starea activa.
Parametri:
Nume Tip Descriere
WideString
FileName Calea si numele fisierului logo.
BSTR
50
WideString O informatie de sistem in acord cu valoarea introdusa la cautare.
Result
BSTR
upload_Stamp
Aceasata metoda trimite un fisier imagine catre aparatul fiscal. Fisierul trebuie sa fie de marime
corespunzatoare, monocrom si cu extensia “bmp”. Aparatele fiscale nu accepta imagini cu alta
extensie decat „bmp”.
In timpul executiei metodelor DUDE va procesa mai mult decat o data multe dintre evenimente, asa
ca daca este necesara accelerarea incarcarii fisierului logo din aplicatia client – aplicatia poate
dezactiva cateva evenimente la inceput si dupa executia metodelor aceeasi aplicatie poate sa le
comute inapoi in starea activa.
Parametri:
Nume Tip Descriere
WideString
FileName Calea si numele fisierului imagine.
BSTR
Numele fisierului imagine nume de fisier in aparatul fiscal in
WideString
StampName format 8.3
BSTR
Exemplu: "stamp123.bmp".
WideString O informatie de sistem in acord cu valoarea introdusa la cautare.
Result
BSTR
51
SystemInfo
get_SystemInfoSearchList
Aceasta metoda returneaza o lista a valorilor de sistem care pot fi utilizati ca un parametru de
cautare in cadrul metodei "get_SystemInfo". Aceste doua metode sunt indicate pentru comoditatea
programatorului.
Parametri:
Nume Tip Descriere
get_SystemInfo
Programatorii pot utiliza aceasta metoda dupa cum considera ei. Metoda arata informatii despre
configuratia curenta a PC, foldere si asa mai departe, in felul in care DUDE vede sistemul.
Parametri:
Nume Tip Descriere
WideString Unul dintre elementele returnate de catre metoda:
SearchValue
BSTR “get_SystemInfoSearchList”.
WideString O informatie de sistem in acord cu valoarea introdusa la cautare.
Result
BSTR
52
metode de Service
upload_Certificate
Aceasta metoda trimite un fisier certificat aparatului fiscal. Nu executati aceasta metoda! Ea este
destinata doar necesitatilor de service.
Parametri:
Nume Tip Descriere
WideString
FileName Calea catre si numele fisierului certificat.
BSTR
WideString O informatie de sistem in acord cu valoarea introdusa la cautare.
Result
BSTR
upload_Profile
Aceasta metoda trimite un fisier profil catre aparatul fiscal. Nu executati aceasta metoda! Ea este
destinata doar necesitatilor de service.
Parametri:
Nume Tip Descriere
WideString
FileName Calea catre si numele fisierului profil.
BSTR
WideString O informatie de sistem in acord cu valoarea introdusa la cautare.
Result
BSTR
53
Comenzi catre aparatul fiscal
execute_Command
Metoda comuna de a trimite comenzi catre aparatul fiscal. Executia comenzii poate procesa una sau
mai multe din urmatoarele evenimente, daca acestea nu sunt dezactivate din programare:
• OnSendCommand;
• OnWait;
• OnReceiveAnswer;
• OnStatusChange;
• OnError;
Parametri si rezultat:
Nume Tip Descriere
Command Intreg/Lung Valoarea comenzii in sistemul de numeratie zecimal.
Datele logice ale comenzii – formatate in acord cu protocolul
aparatelor fiscale.
54
execute_Script_V1
Metoda comuna pentru a trimite un set de comenzi catre aparatul fiscal. Aplicatia client poate
executa scripturi tip text prgatite anterior prin aceasata metoda. Executia comenzii poate procesa
una sau mai multe din urmatoarele evenimente, daca acestea nu sunt dezactivate din programare:
• OnBeforeScriptExecute;
• OnScriptRowExecute;
• OnAfterScriptExecute;
• OnSendCommand;
• OnWait;
• OnReceiveAnswer;
• OnStatusChange;
• OnError;
Parametri si rezultat:
Nume Tip Descriere
Aceasta valoare este folosita de catre motorul de scripturi. DUDE
trebuie sa cunoasca limba scriptului ce urmeza.
Valori posibile:
scriptType TScriptType • DS
• FPrint
Nota: In aceasta versiune de DUDE – tipul de scrpit FPrint nu
este suportat.
Scriptul text care contine setul complet de comenzi necesare.
Formatul unui rand de text: <cmd>,<logical data for the
command>
• cmd – valoarea comenzii in sistemul de numeratie zecimal;
• datele logice ale comenzii – formatate in acord cu
WideString protocolul aparatelor fiscale.
input_Value
BSTR Puteti gasi o descrere detaliata a comenzilor catre aparatul fiscal in
urmatoarele documente:
• In engleza: FP_Protocol_EN.pdf
• In romana: FP_Protocol_RO.pdf
Aceste documente sunt localizate in folder-ul DOCUMENTATION
care este un sub-folder in folder-ul radacina de instalare.
Daca rezultatul este TRUE – inseamna ca motorul DUDE verifica
Boolean intern starea bitului de stare dat si daca acesta este semnalizat in
Result
raspunsul unei anumite comenzi – motorul va intoarce o eroare ca
rezultat al executiei comenzii respective.
55
get_ComandsList
Motorul DUDE contine un descriptor internal comenzilor pentru un aparat fiscal dat ca o colectie de
obiecte pe care aplicatiile client pot sa le foloseasca. Aceasta metoda returneaza o lista cu nume in
„limbaj natural” (“human names”) ale comenzilor din protocolul aparatelor fiscale. In aceasta
versiune a motorului DUDE – programatorii pot sa aleaga dintre trei nume diferite ale fiecarei
comenzi si sa le foloseasca corespunzator cu preferintele lor.
Parametri:
Nume Tip Descriere
Un index in baza zero pentru motorul de cautare intern. Utilizati
Index Intreg/Lung metoda cu valori ale indexului intre 0 si 2.
56
get_CommandInfo
Prin folosirea acestei metode, aplicatiile client pot obtine de la motorul DUDE cateva informatii
generale despre o comanda si parametrii acesteia. Urmariti in cadrul codurilor sursa ale programelor
demo pentru o demonstratie a comenzii. Metoda este dezvoltata pentru programatori ca o cale
rapida pentru a obtine informatii despre comanda si despre parametri de intrare si iesire ai acesteia.
Desigur – toti acesti parametri sunt descrisi in documentatia protocolului de nivel inferior dar aici
puteti gasi informatii despre valorile limita ale parametrilor utilizati de motorul DUDE.
Parametri:
Nume Tyip Descriere
WideString Unul dintre numele in limbajul natural al comenzii date
command_Name exportat cu metoda “get_CommandsList”.
BSTR
get_InputParams_Count
Prin aceasta metoda – programatorii pot obtine numarul parametrilor de intrare pentru o comanda
data.
Parametri:
Nume Tip Descriere
Folositi unul dintre cele trei nume posibile in limbaj natural
WideString receptionati prin comanda "get_CommandsList" sau din
command_Name
BSTR documentul "CommandsList.xls".
57
get_InputParams_Names
Prin aceasta metoda – programatorii pot obtine lista parametrilor de intrare pentru o comanda data.
Parametri:
Nume Tip Descriere
Folositi unul dintre cele trei nume posibile in limbaj natural
WideString receptionat prin comanda "get_CommandsList" sau din
command_Name
BSTR documentul "CommandsList.xls".
58
set_InputParam_ByIndex
Note:
• In anumite cazuri valoarea parametrului de intrare trebuie sa fie vida(gol). De exemplu,
urmariti comanda 255 in cazul citirii valorii din aparatul fiscal.
• In alte cazuri parametrul de intrare este optional – asa ca in functie de caz, acesta poate fi
sau nu vid.
• Trebuie sa fiti siguri ca setati valorile tuturor parametrilor de intrare in mod corect.
Motorul DUDE pastreaza parametrii de intrare in memorie asa ca in anumite cazuri
poate doriti sa executati metoda fara un set de valori noi (folosind vechile valori).
Parameteri:
Nume Tip Descripere
Folositi unul dintre cele trei nume posibile in limbaj natural
WideString receptionati prin comanda "get_CommandsList" sau din
command_Name
BSTR documentul "CommandsList.xls".
59
set_InputParam_ByName
Note:
• In anumite cazuri valoarea parametrului de intrare trebuie sa fie vida(gol). De exemplu,
urmariti comanda 255 in cazul citirii valorii din aparatul fiscal.
• In alte cazuri parametrul de intrare este optional – asa ca in functie de caz, acesta poate fi
sau nu vid.
• Trebuie sa fiti siguri ca setati valorile tuturor parametrilor de intrare in mod corect.
Motorul DUDE pastreaza parametrii de intrare in memorie asa ca in anumite cazuri
poate doriti sa executati metoda fara un set de valori noi (folosind vechile valori).
Parametri:
Nume Tip Descriere
Folositi unul dintre cele trei nume posibile in limbaj natural
WideString receptionati prin comanda "get_CommandsList" sau din
command_Name
BSTR documentul "CommandsList.xls".
60
execute_Command_ByName
Motorul DUDE contine un descriptor internal comenzilor pentru un aparat fiscal dat ca o colectie de
obiecte pe care aplicatiile client pot sa le foloseasca. Setati parametrii de intrare ai comenzii in mod
corect – inaintea executiei metodei.
Executia comenzii poate procesa una sau mai multe din urmatoarele evenimente, daca acestea nu
sunt dezactivate prin program:
• OnSendCommand;
• OnWait;
• OnReceiveAnswer;
• OnStatusChange;
• OnError;
Parameri:
Nume Tip Descriere
Folositi unul dintre cele trei nume posibile in limbaj natural
WideString receptionati prin comanda "get_CommandsList" sau din
command_Name
BSTR documentul "CommandsList.xls".
Dupa executarea cu succes a metodei – puteti primi parametrii de iesire prin folosirea uneia din
urmatoarele metode:
• get_OutputParam_ByIndex;
• get_OutputParam_ByName;
• use the values from last_AnswerList;
Nota: Oricare dintre comenzile exportate in lista de nume in limbaj natural poate fi executat cu
propriul text introdus prin metoda “execute_Command”. Puteti executa fiecare din comenzile din
protocolul de nivel inferior al aparatului fiscal prin metoda “execute_Command”. In timpul
dezvoltarii aplicatiei client aveti mai mult de o singura cale de a executa comenzile daca:
• se intampla ceva in neregula;
• ceva nu este clar;
• comanda nu este exportata pentru executia prin nume;
61
get_OutputParams_Count
Prin aceasta metoda – programatorii pot obtine numarul parametrilor de iesire pentru o comanda
data.
Parametri:
Nume Tip Descriere
Folositi unul dintre cele trei nume posibile in limbaj natural
WideString receptionat prin comanda "get_CommandsList" sau din
command_Name
BSTR documentul "CommandsList.xls".
get_OutputParams_Names
Prin aceasta metoda – programatorii pot obtine lista parametrilor de iesire pentru o comanda data.
Parametri:
Nume Tip Descriere
WideString Unul dintre numele in limbaj natural al comenzii date exportat
command_Name prin metoda “get_CommandsList”.
BSTR
62
get_OutputParam_ByIndex
Parametri:
Nume Tip Descriere
Folositi unul dintre cele trei nume posibile in limbaj natural
WideString receptionat prin comanda "get_CommandsList" sau din
command_Name
BSTR documentul "CommandsList.xls".
get_OutputParam_ByName
Parametri:
Nume Tip Descriere
Folositi unul dintre cele trei nume posibile in limbaj natural
WideString receptionat prin comanda "get_CommandsList" sau din
command_Name
BSTR documentul "CommandsList.xls".
63
generate_SourceCode
In aceasta versiune a motorului DUDE– programatorii pot folosi aceasta metoda pentru a genera un
cod sursa care da un exemplu de utilizare a metodei “execute_Command_ByName”. Codul sursa
poate fi folosit si modificat dupa dorinta programatorului si fara nici o restrictie legata de licenta.
Simplu spus – este gratuit. Desigur, acest cod sursa este generat din exemplul nostru asa ca daca
alegeti sa il utilizati – va rugam sa va asigurati ca este implementat si lucreaza bine pe un aparat
fiscal real.
Actualmente motorul DUDE poate genera un cod sursa in doua limbaje de programare pentru toate
comenzile care sunt exportate prin metoda "get_ComandsList".
Parameri:
Nume Tip Descriere
Folositi unul dintre cele trei nume posibile in limbaj natural
WideString receptionat prin comanda "get_CommandsList" sau din
command_Name
BSTR documentul "CommandsList.xls".
Nota: In aceasta versiune de DUDE – driver-ul genereaza cod sursa doar in Pascal (Delphi) si in
C#. Daca gasiti un bug ar fi placut sa trimiteti un email autorilor server-ului COM. Vom fi fericiti
sa reparem problema in versiunea urmatoare a motorului DUDE.
64
Cum sa trimiteti un raport despre un bug
Pentru a rezolva problema – trebuie sa simulam aceleasi conditii ca ale Dvs. Va rugam sa trimiteti
un email continand urmatoarele informatii:
Versiunea de DUDE;
Informatii despre Windows si sistemul de oparare – puteti folosi informatia oferita de
metoda “get_SystemInfo” sau de catre programul demo;
Informatii despre aparatul fiscal. Ar fi bine daca ati printa si scana informatiile din
diagnosticul aparatului fiscal;
Tipul protocolului de comunicatie si daca folositi un adaptor USB la RS-232 – modelul
acestuia;
Daca folositi metoda “execute_Command” – va rugam sa trimiteti valoarea comenzii,
valoarea parametrului de intrare si rezultatul, daca acesta exista;
Daca folositi metoda “execute_Script_V1” – va rugam trimiteti valoarea scriptului;
Daca este posibil:
◦ Setati modul de urmarire la valoarea TRUE;
◦ Simulati problema pas cu pas;
◦ Trimiteti fisierul de log;
Daca este posibil – salvati si trimiteti valorile bitului de stare ale parametrilor dupa executia
comenzii ratate. Nu executati alta comanda dupa incercarea esuata – doar obtineti valorile si
salvatile;
Trimiteti valoarea codului de eroare;
Trimiteti informatii despre mediul in care se face programarea;
Daca folositi un cod generat (sau unul generat) si metoda “execute_Command_ByName”,
va rugam trimiteti toate informatiile necesare – vom incerca sa simulam/reproducem
aceleasi conditii.
Intotdeauna trimiteti valorile parametrilor de intrare;
Daca doriti sa ne trimiteti un cod sursa – va rugam nu trimiteti intregul proiect! Nu
oferim asemenea tip de suport!
65
Contacte
Daca gasiti un bug – va rugam sa ne trimiteti un email. Vom fi bucurosi sa rezolvam problema in
urmatoarea versiune de DUDE. De asemenea, daca sunteti un programator – sunteti binevenit sa
ne intrebati despre diferitele aspecte ale utilizarii server-ului pentru orice alte probleme/aplicatii
sau sa ne faceti recomandari referitoare la DUDE. Vom incerca sa va ajutam.
66