
    FISCNET para Linux
    ==================

    ///////////////////////////////////////////////////////////////////////////

    1. Introducao

    O fiscnet e' um programa aplicativo que permite a comunicacao entre o 
    computador e o ECF. E' extremamente util para aplicativos que nao possuem
    acesso a porta serial. A interface entre o devlog e outros aplicativos
    faz-se atraves de arquivos texto.

    ///////////////////////////////////////////////////////////////////////////
    
    2. Ambiente
    
    Este aplicativo foi compilado e testado no sistema operacional Conectiva 
    Linux 8, kernel 2.1.4.18-cl.
    
    ///////////////////////////////////////////////////////////////////////////
    
    3. Pre-requisitos
    
    Sao pre-requisitos:
            . geraao de um dispositivo, se nao existir um, para a porta serial que
            sera realizada a comunicacao com o ECF; preferencialmente deve ser
            criado um dispositivo para acesso a um modem; se ja existir um 
            dispositivo para terminal, tambem funciona, desde que o ECF esteja
            conectado a porta serial com o cabo correto e o ECF esteja ligado.

            . permitir acessos de leitura e escrita ao dispositivo para o login
            que executara o fiscnet.
            
            Normalmente, o nome do dispositivo para as portas seriais do compu-
            tador sao:

                COM1:  /dev/ttyS0
                COM2:  /dev/ttyS1
                ...		...
                
            
    ///////////////////////////////////////////////////////////////////////////

    4. Uso do fiscnet

    A forma de comunicacao entre o shell/aplicativo e o fiscnet e' via parametros  
    de linha de comandos e arquivos texto:

    (o caracter $ abaixo representa o prompt)

            $./fiscnet <params>


	  onde <params> representa os parmetros aceitos pelo aplicativo, sendo:

	  /c"<comando>": identifica as sees 2 e 3 do protocolo FiscNET a ser enviado
	               pelo aplicativo; as sees devem seguir o parmetro /c sem
	               espaos. 
	               Exemplo: /c"LeInteiro;NomeInteiro=\"COO\""
	  
	  /C<arquivo>: obtm as sees 2 e 3 do comando do protocolo FiscNET a ser
	               enviado atravs de arquivo texto; o contedo do arquivo segue
	               o formato do parmetro /c. 
	               Exemplo: /CLx
	               Neste exemplo, deve existir um arquivo com o nome Lx onde o 
	               aplicativo fiscnet obter o comando a ser enviado.
	  
	  /i<idcomando>: possibilita informar o identificador do comando FiscNET a
	               ser enviado (secao 1 do protocolo FiscNET); este parametro e
	               opcional; caso no seja informado um valor  gerado automaticamente 
	               pelo aplicativo; 
	               Exemplo: /i120
	               E importante que o aplicativo controle o numero de identificacao 
	               dos comandos, com o objetivo de nao repetir o mesmo identificador 
	               para dois comandos diferentes e consecutivos.
	  
	  /t<timeout>: tempo mximo, em segundos, que o aplicativo ficar aguardando
	               pela resposta do comando FiscNET enviado; caso no seja 
	               informado, o valor assumido para este parmetro ser 1 seg.
	               Exemplo: /t30
	  
	  /o<arquivo>: informa o nome do arquivo onde ser escrito o retorno do
	               comando FiscNET. Quando no informado, o nome o arquivo
	               ser "padrao.txt". Exemplo: /oretFiscNET
			       Obs.: Nenhum arquivo sera gerado se houver algum erro inesperado!
			       Ver topico a seguir - 'Retornos do aplicativo fiscnet'.
			
	  
	  /d<dispositivo>: indica o dispositivo pelo qual o comando FiscNET sera
	               enviado. Caso nao seja informado, sera assumido o valor
	               /dev/ttyS0 (COM1) como padrao. Exemplo: /d/dev/ttyS1
	  
	  /h<ativacao>: ativa ou desativa o handshake de RTS/CTS. Quando nao infor-
	               mado, o valor padrao para este parametro e 1 (ativado).
	               Exemplo: /h0
	  
	  /v:          mostra a versao deste aplicativo.
	  
	  /help:       mostra um help.
	  
	  
	  
	  O unico parametro obrigatorio e aquele que informa o comando a ser enviado!
	  
	  
	  Exemplo de linha de comando:
	   
	   $./fiscnet /c"EmiteLeituraX;" /i10 /t8 /osaida /d/dev/ttyS1 /h0



    ///////////////////////////////////////////////////////////////////////////

	5. Retornos do aplicativo fiscnet
	
	O aplicativo fiscnet retorna um codigo para o seu chamador que indicara a 
	execucao completa ou incompleta do que foi solicitado atraves da linha de comando. 
	Caso haja alguma inconsistencia de parametros, falha em acesso a arquivos ou ate 
	mesmo falha de acesso ao dispositivo, o aplicativo fiscnet informa atraves deste 
	codigo de retorno a situacao ocorrida.
	
	Sempre que este codigo retornar algo diferente de sucesso, o arquivo destino, 
	informado atraves do parametro '/o' nao sera gerado.
	
	A seguir, a tabela de retornos que o aplicativo fiscnet pode retornar:
	
	Codigo		Descricao
	0			Sucesso na execucao do comando
	1			Ocorreu timeout aguardando pelo retorno do comando enviado
	2			Falha no acesso ao dispositivo informado
	3			Falha na configuracao do dispositivo
	4			Falha ao transmitir comando atraves do dispositivo
	5			Falha na recepcao do retorno
	6			Falha ao gerar arquivo de retorno
	7			Nenhum comando fiscnet informado como parametro

	
    ///////////////////////////////////////////////////////////////////////////
	
    5.1. Arquivo de Comando - formato

	Quando o fiscnet receber o parametro /C, ele devera acessar o arquivo texto
	cujo nome segue imediatamente apos este identificador. Neste caso, o formato
	deste arquivo devera ser:
	
	
	<Comando FiscNET>;[<Params FiscNET>]
	
	onde,
	
		<Comando FiscNET> deve iniciar na primeira coluna e linha do arquivo e conter
		                  o nome do comando FiscNET (secao 2 do protocolo). Consulte
		                  o manual de programacao para maiores informacoes.
		                  
		;				  e o caracter obrigatorio para separacao de secoes do proto-
		                  colo FiscNET
		                  
		[<Params FiscNET>] devem ser informados sempre que o parametro <Comando FiscNET>
		                  exigir parametros.
		                  

	Observacao: Os caracteres <> e [] sao usados apenas para indicar a obrigatoriedade 
	            ou a opcionalidade dos parametros, respectivamente. Nao devem ser 
	            considerados para uso da forma como foram apresentados.


    ///////////////////////////////////////////////////////////////////////////

    5.2. Arquivo de Retorno - formato
    
    O formato do arquivo de retorno sera exatamente o que foi lido da porta serial,
    ou seja, os dados que foram retornados pelo ECF. Portanto, o padrao do arquivo
    de retorno e o padrao de retorno FiscNET.
    
    Exemplo de retorno:
    
    	{2;0;ValorHora=#15:35:21#;}
    	


    ///////////////////////////////////////////////////////////////////////////

    6. Versao do fiscnet

    Para identificar a versao do aplicativo fiscnet, deve-se chama-lo com o parametro 
    /v.

        $./fiscnet /v



   ///////////////////////////////////////////////////////////////////////////

    7. Arquivos de comandos exemplos

    Segue exemplos de comandos nos seguintes arquivos (a serem usados com a 
    opcao /C):

        Hora: le a hora do ECF
        COO: le o COO do ECF
        Modelo: retorna o nome do modelo do ECF
        SaidaImpressa: retorna a saida impressa


    Exemplo de uso: 

            $./fiscnet /CCOO /oSaida

	Apos transmissao, pode-se ler o arquivo Saida da seguinte forma:
	
			$cat Saida
			{200;0;ValorInteiro=112;}
			$

