Page 1 of 1

Cash with protocol Xon-Xoff

Posted: Mon Mar 04, 2013 8:50 pm
by Silvio.Falconi
How I can link with a cash have protocol Xon(ox11)-Xoff(ox13) ?


BAUD RATE = 9600
PARITA' = NO
STOP BIT = 1
BIT/CAR = 8
HANDSHAKE := CONTROLLO DI FLUSSO XON-XOFF


there is some sample for create it ?

Re: Cash with protocol Xon-Xoff

Posted: Tue Mar 05, 2013 1:43 pm
by vensanto
I have used this procedure

setting the com port in nCMD1 ( XON=ON ) and send the MODE command

nCMD1:="MODE "+nCOMPRT+":"+Alltrim(Str(eECRBAUD))+","+eECRPARI+","+Alltrim(Str(eECRBIT))+","+Alltrim(Str(eECRBSTOP))
nCMD1+=",TO=OFF,XON=ON,IDSR=OFF,ODSR=OFF,OCTS=OFF,DTR=OFF,RTS=OFF"
RUN (nCMD1)

after i send with the TYPE command the file with the command cash register

nCMD2:="TYPE SCOBIG.TXT > "+nCOMPRT
RUN (nCMD2)

and this work very well

regards
Santo Venezia

Re: Cash with protocol Xon-Xoff

Posted: Wed Mar 06, 2013 8:26 am
by Silvio.Falconi
I think I must use serial comunication ( tSocket) but I not Know how it must make

Re: Cash with protocol Xon-Xoff

Posted: Wed Mar 06, 2013 6:49 pm
by Silvio.Falconi
Dear Santo...
with txt command you not Know how much paper you have , if the printer is open or close , if the data are saved on printer .....

Re: Cash with protocol Xon-Xoff

Posted: Wed Mar 06, 2013 7:21 pm
by Robert Frank
try to use

1. FISKALNA_OPEN() - open COM port
2. FISK_COM_SEND(cTEKST) - send string to COM port (fiskal printer)
3. FISKALNA_CLOSE() - close COM port

Code: Select all

Function FISKALNA_OPEN()
Local pNAME
Local nError,cDCB
Local xRESZTA:=.T.
Local cTEKST:=""
Local xPORT:=1

cKASAFISKALNA:=AllTrim(GetENV("KASAFISKALNA"))
cKASACOM:=AllTrim(GetENV("KASACOM"))
If Empty(cKASAFISKALNA)
   cKASAFISKALNA:="BRAK"
EndIf

Do Case
Case cKASAFISKALNA="BRAK"
   MsgStop("Stanowisko nie posiada obslugi kasy fiskalnej")
   cCOM_IP_USB:="BRAK"
   Return .T.
Case cKASAFISKALNA="USB"
   cCOM_IP_USB:="USB"
Case cKASAFISKALNA="COM"
   cCOM_IP_USB:="COM"
   xPORT:=Val(cKASACOM)
   If xPORT=0
      MsgWait("Domyslnie kasa fiskalna na porcie 1","",2)
      xPORT:=1
   EndIf
   Do Case
   Case xPORT=1
    pNAME:="COM1"
   Case xPORT=2
    pNAME:="COM2"
   Case xPORT=3
    pNAME:="COM3"
   Case xPORT=4
    pNAME:="COM4"
   Case xPORT=5
    pNAME:="COM5"
   Case xPORT=6
    pNAME:="COM6"
   Case xPORT=7
    pNAME:="COM7"
   Case xPORT=8
    pNAME:="COM8"
   Case xPORT=9
    pNAME:="COM9"
   EndCase
   cTEKST:="Otwarcie portu : "+pNAME+" ---> "+cSPEED
   LogFile( "LOGS\kasafiskalna.txt", { Len( cTEKST ), cTEKST } )

   //MsgWait(cTEKST,"",1)

   hPORT:= OpenComm( pNAME, 2048, 2048 )
   If ! BuildCommDcb( pNAME+cSPEED, @cDcb )
      nError = GetCommError( hPORT )
      MsgInfo( "BuildCommDcb Error: " + Str( nError ) )
      xRESZTA:=.F.
   EndIf
   If ! SetCommState( hPORT, cDcb )
         nError = GetCommError( hPORT )
         MsgInfo( "SetCommState Error: " + Str( nError ) )
      xRESZTA:=.F.
   EndIf
   If xRESZTA
      oWND:oMSGBAR:cMSGDEF:=PNAME+" : OTWARTY "+pNAME+cSPEED
      oWND:oMSGBAR:Refresh(.T.)
      oWND:bCommNotify := {|nComm,nStatus| ODBIERZ(hPORT,nSTATUS) }
      EnableCommNotification(hPORT,oWNd:hWNd,1,-1)
   Else
      oWND:oMSGBAR:cMSGDEF:=PNAME+" : NIEUDANE OTWARCIE "+pNAME+cSPEED
      oWND:oMSGBAR:Refresh(.T.)
   EndIf
EndCase
Return xRESZTA

Function FISKALNA_CLOSE()
Local xRESZTA:=.T.
Local nERROR
Local cTEKST:=""

cTEKST:="Zamkniecie portu "+cKASAFISKALNA
LogFile( "LOGS\kasafiskalna.txt", { Len( cTEKST ), cTEKST } )

MsgWait(cTEKST,"",1)

Do Case
Case cKASAFISKALNA="COM"
   If FlushComm( hPORT, 0 ) != 0
         nError = GetCommError( hPORT )
         MsgInfo( "FlushComm Error: " + Str( nError ) )
      xRESZTA:=.F.
   EndIf
   If ! CloseComm( hPORT )
         nError = GetCommError( hPORT )
         MsgInfo( "CloseComm Error: " + Str( nError ) )
   xRESZTA:=.F.
   EndIf
   If xRESZTA
   //   oWND:oMSGBAR:cMSGDEF:=" COM : ZAMKNIETY"
   //   oWND:oMSGBAR:Refresh(.T.)
   Else
   //   oWND:oMSGBAR:cMSGDEF:=" COM : NIE UDANE ZAMKNIECIE"
   //   oWND:oMSGBAR:Refresh(.T.)
   EndIf
EndCase
Return (NIL)

Function FISK_COM_SEND(cTEKST)
Local nBYTES
Local nERROR

Do Case
Case cKASAFISKALNA="COM"
   If ( nBytes := WriteComm( hPORT, cTEKST) ) <= 0
      nError = GetCommError( hPORT )
      MsgInfo( "WriteComm Error: " + Str( nError ) )
   Else
      // przeciez wyslal
   EndIf
Case cKASAFISKALNA="USB"
   USB_SEND_PARAGON(cTEKST)
Otherwise
   MsgWait("NIE TAK COS JEST !!!","",2)
EndCase
LogFile( "LOGS\kasafiskalna.txt", { Len( cTEKST ), cTEKST } )
Return .T.