Actionarea unei case de marcat de la mai multe statii
Posted: 22 Oct 2015, 18:18
Tema: Actionarea unei case de marcat de la doua (sau mai multe) statii.
Mediu: LINUX-WP
Statia cu legatura fizica la casa de marcat: STATION=00
Statia secundara: STATION=01
Exemplul trateaza problema in cazul unei case da marcat cu driver DATPRINT, dar principiul poate fi folosit si la alte drivere. Presupunem driverul instalat pe statia 00, in C:\DATPRINT, folder in care se depune si imaginea bonului.
Logica functionarii
Validarea TBON se modifica, permitand validarea de la ambele statii:Validarea depune imaginea bonului (fisierul CASHFILE.INP) in folderul temporar al statiei in cauza (U:\RW\TMP):
Validarea construieste fisierul ECR.CMD si-l depune in folderul de spooler al statiei (S:\RW\SPOOL):
Spoolerul hWTools interpreteaza aceasta comanda si lanseaza fisierul PRNBON.BAT din C:\HSTART al statiei. Fisierul PRNBON.BAT este diferit pe cele doua statii.
Continutul fisierului C:\HSTART\PRNBON.BAT pe statia 00:Deci pe statia 00 este o procedura standard, cu o mica modificare: fisierul depus pentru datprint se numeste cashfil0.inp, pentru a evita suprascrierea lui cu un fisier venit in acelasi moment de la statia 01.
Continutul fisierului C:\HSTART\PRNBON.BAT pe statia 01:Pentru statia 01 situatia este mai complicata, deoarece trebuie sa lanseze un executabil (datprint.exe) pe statia 00. Conform batchului de mai sus imaginea bonului se copiaza pe S: (vazut si de statia 00), si pentru lansarea executabilului se mai copiaza un fisier (ecrstart.cmd) pe S:. Acest fisier se gaseste in C:\HSTART al statiei 01, si arata astfel:
Continutul fisierului C:\HSTART\ECRSTART.CMD pe statia 01:Dupa cum se vede, este un fisier de comanda pentru hWTools, si care acum a ajuns in S:\RW\ECR. Cum va afla hWTools de pe statia 00 ca are de executat un fisier de comanda? Simplu: hWTools de pe statia 00 se lanseaza cu optiunea "multispooler", astfel:
unde fisierul hwtools.scr, aflat in C:\HSTART contine dou randuri:
(Observatie: fisierul START.BAT, din care se lanseaza hWTools in mod standard, se suprascrie la fiecare lansare a hSTART.EXE. Pentru corectia liniei de comanda a lansarii hWTools, trebuie editat un script din hSTART\START.)
Deci pe statia 00 se lanseaza din C:\HSTART batchul prnbon1.bat. Continutul lui este:
Si astfel se emite bonul fiscal pe statia 00, bon fiscal validat de statia 01.
In implementarea acestei solutii am primit ajutor de la colegii Tókos Lajos, Illyés Mózes, Sántha Lóránt si Zsigmond László, carora le multumesc si pe aceasta cale.
Mediu: LINUX-WP
Statia cu legatura fizica la casa de marcat: STATION=00
Statia secundara: STATION=01
Exemplul trateaza problema in cazul unei case da marcat cu driver DATPRINT, dar principiul poate fi folosit si la alte drivere. Presupunem driverul instalat pe statia 00, in C:\DATPRINT, folder in care se depune si imaginea bonului.
Logica functionarii
Validarea TBON se modifica, permitand validarea de la ambele statii:
Code: Select all
#DACA ! (GETENV("STATION")=="00" .OR. GETENV("STATION")=="01") .and. !(xF_Jrn="MVR")
# h_MesErr("Aici nu se poate valida !",0)
#ABANDON
Code: Select all
# h_MEMOWRIT(h_AddPath("CASHFILE.INP",h_FilePathes[fil_tmp]),xF_8)
Code: Select all
# h_MEMOWRIT(h_AddPath("ECR.CMD", h_FilePathes[fil_scat]), "[RUN]"+CHR(13)+CHR(10)+ "MODE=/MAX"+CHR(13)+CHR(10)+ "DIRECTORY=C:\HSTART"+CHR(13)+CHR(10)+ "EXE=PRNBON.BAT"+CHR(13)+CHR(10)+ "PARAMETERS="+CHR(13)+CHR(10))
Continutul fisierului C:\HSTART\PRNBON.BAT pe statia 00:
Code: Select all
echo off
copy u:\rw\tmp\cashfile.inp c:\datprint\cashfil0.inp > nul
del u:\rw\tmp\cashfile.inp > nul
cd c:\datprint > nul
datprint.exe 4800 COM1 cashfil0.inp
Continutul fisierului C:\HSTART\PRNBON.BAT pe statia 01:
Code: Select all
echo off
copy u:\rw\tmp\cashfile.inp s:\rw\ecr\bon\ > nul
del u:\rw\tmp\cashfile.inp > nul
copy ecrstart.cmd s:\rw\ecr\ >nul
Continutul fisierului C:\HSTART\ECRSTART.CMD pe statia 01:
Code: Select all
[RUN]
MODE=/MAX
DIRECTORY=C:\HSTART
EXE=PRNBON1.BAT
PARAMETERS=
Code: Select all
start hwtools.exe @hwtools.scr /S /P:HIGH
Code: Select all
U:\RW\SPOOL\*.*
S:\RW\ECR\*.CMD
Deci pe statia 00 se lanseaza din C:\HSTART batchul prnbon1.bat. Continutul lui este:
Code: Select all
echo off
copy s:\rw\ecr\bon\cashfile.inp c:\datprint\cashfil1.inp > nul
del s:\rw\ecr\bon\cashfile.inp > nul
cd c:\datprint > nul
datprint.exe 4800 COM1 cashfil1.inp
In implementarea acestei solutii am primit ajutor de la colegii Tókos Lajos, Illyés Mózes, Sántha Lóránt si Zsigmond László, carora le multumesc si pe aceasta cale.