Sunteți pe pagina 1din 66

„DUDE”

DATECS UNIVERSAL DRIVER ENGINE


(ver.1.0.0.0)

Prezentare si tutorial

Nota:

Informațiile publicate în prezentul document pot fi schimbate fără o notificare prealabilă și nu


reprezintă un angajament. În măsura în care informația prezentată suportă modificări sau
îmbunătățiri, acestea vor fi publicate pe site-ul datecs.ro

Istoric versiuni:

Versiune Data Descriere


1.0.0.0 01/2018 Traducere reazlizata de Danubius Exim

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.

Model AMEF Tip RS-232C / USB LAN (TCP/IP)


Casă de marcat
DP-05 mini USB-10pini (format fizic) Nu
fiscală
Casă de marcat
DP-25 Da Da
fiscală
Casă de marcat
DP-35 Da Da
fiscală
Casă de marcat
DP-150 Da Da
fiscală
Casă de marcat
WP-50 Nu / Da Nu
fiscală
Casă de marcat
WP-500 Da Da
fiscală
FP-650 Imprimantă fiscală Nu / Da Da
FP-700 Imprimantă fiscală Da Da
FP-800 Imprimantă fiscală Da / Nu Da
FMP-350 Imprimantă fiscală mini USB-10pini (format fizic) Nu

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.

După confirmare și afișarea logo-ului DUDE, procesul


continuă cu alegerea limbii de afișare. Alegeți opțiunea de
limbă și tastați ”OK”

În ecranul de întâmpinare apăsați ”Next” pentru a trece la Acordul de Licență.

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

COM serverul DUDE înglobează un protocol de comunicație de nivel low-level cu aparatele


fiscale Datecs. Nu trebuie să ştiţi protocolul în detaliu, dar vă putem oferi informaţii despre el.
Atunci când dezvoltările software o cer, puteţi alege să utilizaţi modul de comunicație înregistrat al
serverului (tracking mode). Orice cerință de clarificare trimisă către noi și însoțită de raportul de
eroare înregistrat în tracking mode este de mare ajutor.

Protocol sincron

Protocolul folosit in comunicația cu aparatele fiscalle Datecs este de tip sincron.


• Comenzile de inițiere, trimitere și recepție mesaje sunt sincronizate;
• Ceasul este sincronizat;
• Mărimea si formatul mesajelor sunt sincronizate;

Sincronizarea comenzii de de inițiere, trimitere și recepție mesaje

Aparatul fiscal (Slave) nu poate iniția mesaje.În schimb, acestea


vor fi inițiate exclusiv de un program rezident într-un calculator
relevant (Host). Recepționarea unei informații de la un aparat
fiscal prin canalul de comunicație stabilit și în lipsa unei cereri
inițiale, indică o defecțiune a aparatului fiscal sau a unor zone
de memorie blocate.
Host-ul inițiază comunicația prin trimiterea către aparatul fiscal (Slave) a unui mesaj
împachetat conținând o comandă;
• În funcție de starea curentă, Aparatul fiscal poate executa sau nu comanda după care trebuie
să răspundă cu un mesaj împachetat (sau, în anumite cazuri cu un singur octet);
• Host-ul trebuie să aștepte răaspunsul aparatului fiscal înainte de a trimite un nou mesaj,
excepție făcând situația în care intervalul de timp stabilit a expirat (vezi sincronizare time-
based)

7
Sincronizare time-based

• Pentru fiecare comandă inițiată de Host, aparatul fiscal


(Slave) trebuie să răspundă în limita a 60 ms (cu mesaj
împachetat sau, după caz cu un cod specific compus
dintr-un singur octet);
• Host-ul are la dispoziție o fereastră de timp de 500ms
pentru a primi răspunsul de la Slave;
• Dacă răspunsul nu este recepționat în intervalul de
500ms, Host-ul trebuie să trimită din nou același mesaj
folosind aceeași secvență de numerotare și aceeași
comandă;
• După două încercări consecutive eșuate, Host-ul trebuie să determine dacă nu există
conexiune cu aparatul fiscal (Slave) sau este o eroare hardware a acestuia;
• Intervalul de așteptare de 500ms este folosit când se folosesc conexiuni de tip RS-232 ori
USB. Pentru alte protocoale de transport (cum ar fi TCP/IP), este recomandată o valoare mai
mare, în funcție de calitatea conexiunii.

Modul de tratare a întârzierilor cauzate de ocuparea justificată a aparatului fiscal


(Slave)

Dacă, în timpul executării unei comenzi, aparatul fiscal are


nevoie de mai mult timp pentru efectuarea operțiilor comandate,
acesst va trimite un octet de sincronizare (SYN octeți) la fiecare
60ms. În acest fel, Host-ul este informat că aparatul fiscal este
funcțional și execută comanda primită.

8
Sincronizarea structurii mesajelor

• Toate mesajele și răspunsurile


corespondente dintre Host si aparatul
fiscal (Slave)
• Toate mesajele și răspunsurile
corespondente dintre Host si aparatul
fiscal (Slave) (exceptând mesajele pe un
singur octet descrise mai sus) sunt
ambalate într-un format specific
determinat, cunoscut în prealabil; Datele
aleatorii sunt permise numai în zona de
date logice, dar localizarea acestor date în
pachet, precum şi dimensiunea lor maximă, sunt strict determinate;
• Formatul mesajelor împachetate dintre Host si aparatul fiscal (Slave) şi vice-versa sunt
definite în mod similar cu singura diferență dată de prezența câmpului de stare a aparatului
fiscal. Chiar dacă aparatul fiscal nu are date logice de transmis către Host (zona de date este
necompletată), acesta va răspunde în continuare, astfel încât programul (Host) poate, pe
baza octeţilor de stare, să verifice starea aparatului fiscal şi eventuale alte probleme (de
exemplu, cele care decurg din administrarea rolei de hârtie);
• În cazul unei probleme sau a interferențelor electro-magnetice în canalul de comunicare,
este posibil ca Aparatul fiscal să primească o comandă cu o sumă de control eronată
(checksum). În acest caz, aparatul fiscal răspunde cu un singur octet NAK (Negative
acknowledgement). Asta indică faptul că Host-ul ar trebui să repete mesajul său, fără nici o
modificare a acestuia.

Descriere Mesaje impachetate

• 01 (Start) – Octet de Start.


◦ Lungime: 1 octet;
◦ Valoare: 01H;
• LEN – Lungimea mesajului.
Reprezintă numărul de octeți începând de la
octetul de start <01> (este exclus din numărare) până la indicatoul de terminare date <05>
(este inclus în numărare), plus un decalaj fix de 20H.
◦ Lungime: 2 octeți (word), codat în 4 octeți;

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

Cateva cuvinte despre dependenta de hardware

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.

Sigur sau nu la comenzi simultane?

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?

Raspunsul la aceste intrebari depinde de specificul limbajului de programare utilizat precum si de


proiectarea de ansamblu a aplicatiei.
Recomandarile si preferintele noastre (daca acestea sunt posibile in cadrul proiectului Dvs.):
• Porniti server-ul COM la initializarea aplicatiei;
• Pastrati conexiunea cu aparatul fiscal pe intreaga perioada de posibila activitate a acestuia
din urma. Daca este posibil – folositi server-ul COM si conexiunea la aparatul fiscal doar
pentru o singura aplicatie.
In general vorbind – nu sunt probleme daca:
• Se porneste server-ul COM la inceput;
• Se deschide si se inchide apoi conexiunea la aparatul fiscal ori de cate ori este nevoie;
• Se opreste server-ul COM la inchiderea aplicatiei;
Daca trebuie sa folositi aparatul fiscal din mai multe locuri – recomandarea noastra este ca mai intai
sa creati un instrument corespunzator (de exemplu un server TCP/IP) care va folosi server-ul COM
dupa algoritmul descris mai sus. Dupa aceea, celelalte module ale aplicatiei Dvs. vor comunica cu
aparatul fiscal prin intermediul acestui instrument. Acesta este de asemenea locul unde sa se
gestioneze in mod corespunzator instructiunile sosite (comenzi) care sosesc simultan. Puneti-le intr-
o coada de asteptare si asa mai departe.
Daca luati in calcul deschiderea sau inchiderea server-ului COM la fiecare utilizare a aparatului
fiscal – va rugam sa retineti specificitatea limbajului de programare utilizat. In acest caz trebuie sa
fiti siguri ca intotdeauna inchideti conexiunea la aparatul fiscal si ca server-ul COM este oprit
complet inaintea inceperii unei alte utilizari a acestuia.

14
Utilizarea DUDE din Visual Studio 2017 (C#)

 Instalati DUDE si dupa aceea – mergeti la "Solution Explorer\References" din proiectul


Dvs;

 Dati click dreapa pe mouse si alegeti “Add reference” ;

 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.

 Mergeti la “File\New” si alegeti “Other”;

 Alegeti sa creati un pachet nou si dati click pe butonul „OK”;

 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”;

 Pe pagina urmatoare – cautati in lista „dude” 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 aparatului (Device status) – biti de stare tip eroare

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.

Puteti citi si obligatoriu sa folositi starea acestora in urmatoarele situatii:


• Dupa ce o conexiune cu aparatul fiscal a fost facuta cu succes;
• Dupa executia unei comenzi sau a unui script;

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.

Puteti citi si obligatoriu sa folositi starea acestora in urmatoarele situatii:


• Dupa ce o conexiune cu aparatul fiscal a fost facuta cu succes;
• Dupa executia unei comenzi sau a unui script;

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

Puteti citi si folosi aceste proprietati in urmatoarele situatii:


• Dupa ce o conexiune cu aparatul fiscal a fost facuta cu succes;
• Dupa executia unei comenzi sau a unui script;

Nume proprietate Tip proprietate Semnificatia


Boolean Adevarat daca conexiunea la aparatul fiscal s-a realizat cu
connected_ToDevice
Doar citire succes.
Boolean Adevarat daca aparatul fiscal suporta comunicatie prin
support_RS232
Doar citire RS232 (sau USB).
Boolean Adevarat daca aparatul fiscal suporta comunicatie prin
support_TCPIP
Doar citire conector LAN (protocol TCP/IP).

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.

Nume proprietate Tip proprietate Semnificatia


Aplicatia client trebuie sa seteze tipul protocolului de
comunicatie prin executarea metodei "set_TransportType"
inaintea deschiderii conexiunii la aparatul fiscal.
TTransportProtocol
protocol_TransportType
Doar citire
• ctc_RS232 – daca conexiunea se face prin (RS-
232/USB)
• ctc_TCPIP – daca conexiunea se face prin LAN
(TCP/IP)
WideString/BSTR
tcpip_Address Adresa IP curenta a aparatului fiscal.
Doar citire
Integer/Long
tcpip_Port Valoarea curenta a portului TCP/IP din aparatul fiscal.
Doar citire
Integer/Long
rs232_ComPort Valoarea curenta a portului COM.
Doar citire
Integer/Long
rs232_BaudRate Valoarea curenta a vitezei de comunicatie.
Doar citire
Valoarea globala a timpului de asteptare la comunicatia cu
aparatul fiscal.
Word Valori implicite:
read_TimeOutValue
Citire/Scriere
• 1000 ms pentru RS-232
• 3000 ms pentru TCP/IP
Daca aceasta valoare este adevarata si nu exista raspuns pe
durata timpului de asteptare (in ms) - DUDE va opri
Boolean asteptarea unui raspuns de la aparatul fiscal si va returna
exit_ByReadTimeOutIsOn
Citire/Scriere un cod de eroare tip „timeout” pentru executia comenzii
curente.
Valoarea implicita este adevarat.
Parte din structura timpului de asteptare la comunicatie.
Timpul scurs maxim admis inaintea sosirii urmatorului
octet pe linia de comunicatie (in ms). Daca intervalul de
timp intre sosirea oricaror doi octeti depaseste aceasta
valoare, operatiunea „ReadFile” este completa si orice data
Intreg/Lung prezenta in buffer este returnata. O valoare zero indica
rs232_ReadIntervalTimeout
Doar citire faptul ca acest parametru nu este folosit.
O valoare a „MAXDWORD”, combinata cu valori zero
pentru ambii membri „ReadTotalTimeoutConstant” si
„ReadTotalTimeoutMultiplier”, specifica faptul ca operatia
citita este returnarea imediata a octeților care au fost deja
receptionati, chiar daca nu s-a receptionat nici unul.
Parte din structura timpului de asteptare la comunicatie.
Intreg/Lung
rs232_ReadTotalTimeoutMultiplier Multiplicatorul este folosit la calculul timpului total de
Doar citire
asteptare pentru operatiile de citire (in ms). Pentru fiecare

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

Nume proprietate Tip proprietate Semnificatia

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

Nume proprietate Tip proprietate Semnificatia


Intreg/Lung
lastError_Code Contine valoarea curenta a ultimului cod de eroare din DUDE.
Doar citire
WideString/BSTR
lastError_Message Contine valoarea curenta a ultimului mesaj de eroare din DUDE.
Doar citire
Contine valoarea curenta a ultimului raspuns din mesajul
impachetat receptionat de la aparatul fiscal. Valorile sunt separate
WideString/BSTR
last_AnswerList prin CRLF.
Doar citire
(octeți cu valorile zecimale 13 si 10: "Carriage Return" si "Line
Feed").
Contine valoarea curenta a caii pentru descarcare pe care DUDE va
WideString/BSTR
download_Path incerca sa o foloseasca in operatiile de descarcare a fisierelor
Doar citire
ANAF din aparatul fiscal.
Metoda de descarcare a fisierelor ANAF dupa intervalul de rapoarte
Intreg/Lung fiscale Z foloseste aceasta valoare ca valoare initiala a intervalului.
zRange_StartValue
Citire/Scriere Aplicatia client trebuie sa seteze aceasta valoare corect inaintea
executarii metodei "download_ANAF_ZRange".
Metoda de descarcare a fisierelor ANAF dupa intervalul de rapoarte
Intreg/Lung fiscale Z foloseste aceasta valoare ca valoare finala a intervalului.
zRange_EndValue
Citire/Scriere Aplicatia client trebuie sa seteze aceasta valoare corect inaintea
executarii metodei "download_ANAF_ZRange".
Metoda de descarcare a fisierelor ANAF dupa intervalul de zile/ore
foloseste aceasta valoare ca valoare initiala a intervalului.
Aplicatia client trebuie sa seteze aceasta valoare corect inaintea
executarii metodei "download_ANAF_DTRange".

Formatul pentru data si ora: DD-MM-YY hh:mm:ss DST


• DD – Zi
WideString/BSTR
DateRange_StartValue
Citire/Scriere • MM – Luna
• YY – An
• hh – Ora
• mm – Minute
• ss – Secunde
• DST - Text DST. Daca este prezent, inseamna ca regimul
de comutare vara/iarna a orarului este activ.
Metoda de descarcare a fisierelor ANAF dupa intervalul de zile/ore
foloseste aceasta valoare ca valoare de final a intervalului.
Aplicatia client trebuie sa seteze aceasta valoare corect inaintea
executarii metodei "download_ANAF_DTRange".

Formatul pentru data si ora: DD-MM-YY hh:mm:ss DST


DateRange_EndValue
WideString/BSTR • DD – Zi
Citire/Scriere • MM – Luna
• YY – An
• hh – Ora
• mm – Minute
• ss – Secunde
DST - Text DST. Daca este prezent, inseamna ca regimul de

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

DUDE va initia acest eveniment la aparitia unei erori.

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

DUDE va initia acest eveniment chiar inaintea executarii scriptului.


Parametri: Nici unul

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

DUDE va initia acest eveniment dupa executarea scriptului.

Parametri: Nici unul

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.

Parameteri: Nici unul

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.

Parametri: Nici unul

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.

Parametri: Nici unul

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".

Rezultatul este zero daca metoda este executata cu succes si


mai mic decat zero daca exista o eroare. Daca rezultatul este
Result Intereg / Lung negativ, valoarea contine ultimul cod de eroare din motorul
de urmarire al DUDE.

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

Port Intreg / Lung Numarul Portului de comunicatie TCP/IP al aparatului fiscal.

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.

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.

Re 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 al DUDE.

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

Result WideString Aceasta metoda returneaza o lista cu porturile COM vizibile de


BSTR catre DUDE.

open_Connection

Aceasta functie deschide o conexiune cu aparatul fiscal, in acord cu setul de parametri de


comunicatie, inaintea executarii comenzii.

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

Aceasta functie inchide conexiunea cu aparatul fiscal.

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

Aplicatiile client pot gasi mesajele de eroare prin codurile date.

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

Result WideString O lista a valorilor de sistem care pot fi utilizati ca un parametru


BSTR de cautare in cadrul metodei "get_SystemInfo".

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.

Puteti gasi o descrere detaliata a comenzilor catre aparatul fiscal in


WideString urmatoarele documente:
input_Value
BSTR • 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.
Text care contine datele logice din raspunsul de la aparatul fiscal.
WideString Raspunsul este formatat in acord cu protocolul aparatelor fiscale.
output_Value
BSTR Puteti analiza raspunsul cu propriul analizor sau sa folositi
raspunsul analizat din parametrul "last_AnswerList".
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.

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.

WideString Aceasta metoda returneaza o lista a numelor de comanzi in acord


Result cu valoarea indexului utilizat.
BSTR

Descrierea formatului numelor in „limbaj natural” (“human names”):


• index [0]: <cmd>_<group_name>_<name>. Exemplu: 038_receipt_NonFiscal_Open;
• index [1]: <group_name>_<name>. Exemplu: receipt_NonFiscal_Open;
• index [2]: <name>. Exemplu: NonFiscal_Open;
In anumite cazuri, numele in limbajul natural pentru indexurile 1 si 2 pot fi identice. Puteti gasi cu
usurinta descrierea detaliata a unei comenzi date in documentatia protociolului de nivel inferor prin
cautarea pentru o valoare cmd data si desigur, pentru o valoare name.

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

WideString Text cu o informatie comuna a comenzii impreuna cu


Value parametrii acesteia de intrare sau de iesire.
BSTR
Daca rezultatul este TRUE – inseamna ca motorul DUDE
verifica intern starea bitului de stare dat si daca acesta este
Result Integer/Long
semnalizat in raspunsul unei anumite comenzi – motorul va
intoarce o eroare ca rezultat al executiei comenzii respective.

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".

Value Integer/Long Numarul parametrilor de intrare pentru o comanda data.


Daca rezultatul este TRUE – inseamna ca motorul DUDE
verifica intern starea bitului de stare dat si daca acesta este
Result Integer/Long
semnalizat in raspunsul unei anumite comenzi – motorul va
intoarce o eroare ca rezultat al executiei comenzii respective.

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".

WideString Lista cu numele parametrilor de intrare in acord cu valoarea


Value “command_Name” folosita.
BSTR
Daca rezultatul este TRUE – inseamna ca motorul DUDE
verifica intern starea bitului de stare dat si daca acesta este
Result Integer/Long
semnalizat in raspunsul unei anumite comenzi – motorul va
intoarce o eroare ca rezultat al executiei comenzii respective.

58
set_InputParam_ByIndex

Daca doriti sa folositi metoda “execute_Command_ByName” trebuie sa va asigurati ca toti


parametrii de intrare ai comenzii sunt setati corect inaintea executarii comenzii. Una din caile de a
face asta este utilizarea acestei comenzi.

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".

Un index in baza zero in relatie cu lista parametrilor de intrare


param_Index Intreg/Lung ai acestei comenzi.

Valoarea parametrului de intrare. Verificati protocolul de nivel


WideString inferior pentru afi sigur ca introduceti valoarea corecta a
Value
BSTR acestuia.

Daca rezultatul este TRUE – inseamna ca motorul DUDE


verifica intern starea bitului de stare dat si daca acesta este
Result Intreg/Lung
semnalizat in raspunsul unei anumite comenzi – motorul va
intoarce o eroare ca rezultat al executiei comenzii respective.

59
set_InputParam_ByName

Daca doriti sa folositi metoda “execute_Command_ByName” trebuie sa va asigurati ca toti


parametrii de intrare ai comenzii sunt setati corect inaintea executarii comenzii. Una din caile de a
face asta este utilizarea acestei comenzi.

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".

WideString Numele parametrului de intrare.


param_Name
BSTR
Valoarea parametrului de intrare. Verificati protocolul de nivel
WideString inferior pentru afi sigur ca introduceti valoarea corecta a
Value
BSTR acestuia.

Daca rezultatul este TRUE – inseamna ca motorul DUDE


verifica intern starea bitului de stare dat si daca acesta este
Result Integer/Long
semnalizat in raspunsul unei anumite comenzi – motorul va
intoarce o eroare ca rezultat al executiei comenzii respective.

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".

Daca rezultatul este TRUE – inseamna ca motorul DUDE


verifica intern starea bitului de stare dat si daca acesta este
Result Intreg/Lung
semnalizat in raspunsul unei anumite comenzi – motorul va
intoarce o eroare ca rezultat al executiei comenzii respective.

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".

Value Intreg/Lung Numarul parametrilor de iesire pentru o comanda data.

Daca rezultatul este TRUE – inseamna ca motorul DUDE


verifica intern starea bitului de stare dat si daca acesta este
Result Intreg/Lung
semnalizat in raspunsul unei anumite comenzi – motorul va
intoarce o eroare ca rezultat al executiei comenzii respective.

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

WideString Lista parametrilor de iesire in acord cu valoarea


Value “command_Name” utilizata.
BSTR
Daca rezultatul este TRUE – inseamna ca motorul DUDE
verifica intern starea bitului de stare dat si daca acesta este
Result Intreg/Lung
semnalizat in raspunsul unei anumite comenzi – motorul va
intoarce o eroare ca rezultat al executiei comenzii respective.

62
get_OutputParam_ByIndex

Dupa executarea cu succes a metodei “execute_Command_ByName” – puteti obtine parametrii de


iesire folosind aceasta metoda.

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".

Un index in baza zero legat de lista parametrilor de iesire ai


param_Index Intreg/Lung acestei comenzi.

WideString Valoarea parametrului de iesire.


param_Value
BSTR
Daca rezultatul este TRUE – inseamna ca motorul DUDE
verifica intern starea bitului de stare dat si daca acesta este
Result Integer/Long
semnalizat in raspunsul unei anumite comenzi – motorul va
intoarce o eroare ca rezultat al executiei comenzii respective.

get_OutputParam_ByName

Dupa executia cu succes a metodei “execute_Command_ByName” – puteti obtine parametrii de


iesire folosind aceasta metoda.

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".

WideString Numele parametrului de iesire.


param_Name
BSTR
WideString Valoarea parametrului de iesire.
param_Value
BSTR
Daca rezultatul functiei este TRUE – inseamna ca motorul
DUDE verifica intern starea bitului de stare dat si daca acesta
Result Integer/Long este semnalizat in raspunsul unei anumite comenzi – motorul
va intoarce o eroare ca rezultat al executiei comenzii
respective.

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".

Valori posibile ale parametrilor:


code_Type TCodeType • Delphi;
• CSharp;

Daca rezultatul functiei este TRUE – inseamna ca motorul


DUDE verifica intern starea bitului de stare dat si daca acesta
Result Intreg/Lung este semnalizat in raspunsul unei anumite comenzi – motorul
va intoarce o eroare ca rezultat al executiei comenzii
respective.

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!

Suportul nostru se face doar prin email!


Va rugam nu ne cereti numare de telefon, Skype, Viber si orice alt tip de apelare tip conferinta.
Stim ca proiectul este foarte important pentru Dvs. si va rugam sa ne credeti – succesul Dvs. este de
asemenea important si pentru noi. Vom fi bucurosi sa va ajutam, dar politica companiei noastre este
de a ajuta programatorii doar prin email, datorita specificului subiectelor abordate.

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.

Puteti trimite email-uri cu intrebarile Dvs. la:


suport.datecs@danubius-exim.ro
dobrin@datecs.bg

66

S-ar putea să vă placă și