Manual do Desenvolvedor Linha VP Tanca
Descrição das funções implementadas na DLL versão 1.0 GetTabConectados function GetTabConectados(nada: Integer): TTABSOCK; stdcall; function GetTabConectados(nada: integer): TTABSOCK; stdcall; Retorna a lista de terminais conectados seguindo a seguinte estrutura: type TTABSOCK = record TabSock : array[0..1023] of integer; TabIP : array[0..1023] of DWORD; NumSockConec :integer; end; - TabSock: lista com os SOCKETs dos terminais. - TabIP: lista com os IPs dos terminais. - NumSockConec: número de terminais conectados. inet_ntoa function Inet_NtoA(nIP: DWORD): PChar; stdcall; Retorna a conversão de um endereço de rede em uma string com o endereço IP formatado por pontos. - nip contém o valor de endereço de rede a ser convertido. vinitialize procedure vinitialize; stdcall; Rotina de inicialização do serviço (primeira rotina a ser chamada) tc_startserver function tc_startserver: Integer; stdcall; Abre as conxões para os terminais. - Retorna 1 se o Servidor foi inicializado com sucesso. - Retorna 0 se houve erro. dll_version function dll_version: DWORD; stdcall; Função que retorna a versão da DLL. Retorna um DWORD que representa a versão da DLL. A DLL verão 1.0 retorna: 0x01000000
bsendprodnotfound function bsendprodnotfound(id: Integer): Boolean; stdcall; Informa o terminal que o produto não foi encontrado; bsenddisplaymsg function bsenddisplaymsg(id: Integer; Linha1: PChar; Linha2: Pchar; Tempo: Integer): Boolean; stdcall; Envia mensagem instantânea para o terminal. - Linha1: string a ser mostrada na linha1 do display. - Linha2: string a ser mostrada na linha2 do display. - Tempo: Tempo de exibição da mensagem. bsendprodprice function bsendprodprice(id: Integer; var NameProd: PChar; var PriceProd : PChar): Boolean; stdcall; Envia nome do produto e seu respectivo preço. - NameProd: string com nome do produto; - PriceProd: string com preço do produto. breceivebarcode function breceivebarcode(var staddress; var BarCode: PChar): Boolean; stdcall; Rotina que deve ser chamada periodicamente, para ler dados do código de barras. - staddress: estrutura contendo IP e Socket do terminal que respondeu à função, como segue: type TTABADDRESS = record Ip: string; Socket: Word; end; - BarCode: código de barras lido pelo terminal - Retorno: True: algum terminal foi lido False: nenhum terminal foi lido bterminate function bterminate: Boolean; stdcall; Rotina que deve ser chamada ao encerrar o serviço
DESCRIÇÂO DO PROTOCOLO DE COMUNICAÇÃO ENTRE O SERVIDOR E O TERMINAL O uso da DLL permite utilizar os terminais de consulta sem necessidade de dominar o protocolo. O serviço consiste abrir comunicação com os Terminais de Consulta através da porta 6500. Isto é obtido utilizando-se as funções vinitialize e tc_startserver. Assim que a conexão entre o Terminal e o Servidor é realizada, a DLL envia para o Terminal o comando #ok, confirmando que sua conexão foi aceita. O Terminal deve então responder informando seu modelo e versão que para o nosso caso é #TC502 2.10. A DLL envia então o comando #live? a cada 10 segundos. Em resposta o Terminal responde com: #live. Ao receber esta resposta a DLL or armazena a hora de resposta. Se este intervalo de tempo exceder 30 segundos a conexão é fechada automaticamente. Note que todo o procedimento acima é controlado internamente pela DLL. O Terminal, ao efetuar a leitura de um código de barras envia à DLL o comando: # + "codigo de barras". A aplicação deve verificar periodicamente se algum há algum código de barras a ser tratados por um ou alguns dos terminais conectados. Isto é feito utilizando-se a função: breceivebarcode da DLL. Ao obter o código de barras o aplicativo deve procurar em sua base de dados a existência do mesmo. Caso exista deve retornar ao Terminal as informações de produto e preço através da função: bsendprodprice da DLL. Caso não exista o aplicativo deverá enviar esta informação ao Terminal utilizando a função: bsendprodnotfound da DLL. Mensagens instantâneas podem ser enviadas ao Terminal através da função: bsenddisplaymsg da DLL. COMANDOS ENVIADOS DO SERVIDOR PARA O TERMINAL #ok -> retorna: modelo versao Após a conexão, a primeira mensagem que o servidor deve enviar para o terminal é o #ok. O Terminal retornará com a mensagem #nome versão. retorno: #TC502 2.10 (para manter compatibilidade com os terminais GERTEC).
#live? -> verificar se o terminal está vivo. retorno: #live #alwayslive -> Desativa desconexão com servidor Ao enviar este comando, o terminal não fecha a conexão com o servidor se este deixar de enviar algum comando por mais de 30 segundos. retorno: #alwayslive_ok #checklive -> Ativa desconexão com servidor Este comando é o inverso do anterior, ou seja, ao enviá-lo, o terminal se desconecta do servidor se ficar mais de 30 segundos sem receber uma mensagem. retorno: #checklive_ok #restartsoft -> salva configurações e reinicia terminal Enviando este comando, o terminal é reiniciado. Uma boa sugestão seria enviálo após trocar seu IP (pela configuração remota), para que a configuração seja efetuada com sucesso imediatamente. A senha é um longword (4 bytes) que devem ser enviados para que o terminal realize este comando, a senha é a seguinte (em hexa): 0xA5CC5A33. retorno: #restartsoft_ok #updatesoft + "senha" -> Responde mas não realiza nenhuma outra ação (compatibilidade). A senha é ignorada. retorno: #updatesoft_ok #config? -> retorna parâmetros de configuração incluindo apenas as linhas 1 e 2. O terminal responde com os seguintes dados: retorno: #config"tam IP SERVIDOR""IP SERVIDOR""TAM IP TERMINAL""IP TERMINAL""TAM MASC""MASCARA DE REDE""TAM L1""LINHA1""TAM L2""LINHA2""TEMPO" TAM L1(byte): tamanho da string do texto da linha 1.
devemos subtrair 48 do valor de cada byte. - Não incluir as aspas duplas. #config02? -> retorna parâmetros de configuração incluindo todas as linhas O terminal responde com os seguintes dados: retorno: #config02"tam IP SERVIDOR""IP SERVIDOR""TAM IP TERMINAL""IP TERMINAL""TAM MASC""MASCARA DE REDE""TAM L1""LINHA1""TAM L2""LINHA2""TAM L3""LINHA3""TAM L4""LINHA4""TEMPO" TAM L1(byte): tamanho da string do texto da linha 1. TAM L3(byte): tamanho da string do texto da linha 3. LINHA3(string): texto da linha 3. TAM L4(byte): tamanho da string do texto da linha 4. LINHA4(string): texto da linha 4. devemos subtrair 48 do valor de cada byte. #conf502? -> retorna parâmetros de configuração incluindo todas as linhas O terminal responde com os seguintes dados: retorno: #config02"tam IP SERVIDOR""IP SERVIDOR""TAM IP TERMINAL""IP TERMINAL""TAM MASC""MASCARA DE REDE""TAM L1""LINHA1""TAM L2""LINHA2""TAM L3""LINHA3""TAM L4""LINHA4""TEMPO" TAM L1(byte): tamanho da string do texto da linha 1.
TAM L3(byte): tamanho da string do texto da linha 3. LINHA3(string): texto da linha 3. TAM L4(byte): tamanho da string do texto da linha 4. LINHA4(string): texto da linha 4. devemos subtrair 48 do valor de cada byte. #updconfig? -> retorna parâmetros de configuração incluindo gateway, dns e nome do terminal retorno: #updconfig"tam GW""GATEWAY""TAM DNS""DNS""TAM TERM""TERM""TAM NS""NS""TAM NS""NS""TAM NS""NS" TAM GW(byte): tamanho da string do Gateway. GATEWAY(string): Gateway. TAM DNS(byte): tamanho da string do DNS. DNS(string): DNS. TAM TERM(byte): tamanho da string do nome do terminal. TERM(string): Nome. OBS: - Para saber o tamanho real de cada string devemos subtrair 48 (decimal) do valor de cada byte. #updconfig + "dados" -> recebe e carrega parâmetros de configuração dados: "TAM GW""GATEWAY""TAM DNS""DNS""TAM TERM""TERM""TAM NS""NS""TAM NS""NS""TAM NS""NS" TAM GW(byte): tamanho da string do Gateway. GATEWAY(string): Gateway. TAM DNS(byte): tamanho da string do DNS. DNS(string): DNS. TAM TERM(byte): tamanho da string do nome do terminal. TERM(string): Nome.
retorno: #updconfig_ok OBS: - Para saber o tamanho real de cada string devemos subtrair 48 (decimal) do valor de cada byte. rupdconfig + "dados" -> recebe e carrega parâmetros de configuração dados: "TAM GW""GATEWAY""TAM DNS""DNS""TAM TERM""TERM""TAM NS""NS""TAM NS""NS""TAM NS""NS" TAM GW(byte): tamanho da string do Gateway. GATEWAY(string): Gateway. TAM DNS(byte): tamanho da string do DNS. DNS(string): DNS. TAM TERM(byte): tamanho da string do nome do terminal. TERM(string): Nome. retorno: nenhum OBS: - Para saber o tamanho real de cada string devemos subtrair 48 (decimal) do valor de cada byte. #extconfig? -> retorna parâmetros de configuração estendidos retorno: #extconfig"tam IP SERVIDOR""IP SERVIDOR""TAM IP TERMINAL""IP TERMINAL""TAM MASC""MASCARA DE REDE" "TAM GW""GATEWAY""TAM NS""NS""TAM TERM""TERM""TAM L1""LINHA1""TAM L2""LINHA2" "TAM NS""NS""TAM NS""NS""TAM NS""NS""TEMPO""DHCP""RESERVADO" TAM GW(byte): tamanho da string do Gateway. GATEWAY(string): Gateway. TAM TERM(byte): tamanho da string do nome do terminal.
TERM(string): Nome. TAM L1(byte): tamanho da string do texto a linha 1. TEMPO(byte): Tempo de Exibição. DHCP(byte): IP dinâmico/fixo. (48 = fixo, 49 = dinâmico) RESERVADO(byte): 48 (decimal) devemos subtrair 48 (decimal) do valor de cada byte. #rconf + "dados" -> recebe e carrega parâmetros de configuração dados: "TAM IP SERVIDOR""IP SERVIDOR""TAM IP TERMINAL""IP TERMINAL""TAM MASC""MASCARA DE REDE""TAM L1""LINHA1""TAM L2""TEMPO" TAM L1(byte): tamanho da string do texto da linha 1. retorno: nenhum devemos subtrair 48 do valor de cada byte. #reconf02 + "dados" -> recebe e carrega parâmetros de configuração dados: "TAM IP SERVIDOR""IP SERVIDOR""TAM IP TERMINAL""IP TERMINAL""TAM MASC""MASCARA DE REDE""TAM L1""LINHA1""TAM L2""LINHA2""TAM L3""LINHA3""TAM L4""LINHA4""TEMPO"
TAM L1(byte): tamanho da string do texto da linha 1. TAM L3(byte): tamanho da string do texto da linha 3. LINHA3(string): texto da linha 3. TAM L4(byte): tamanho da string do texto da linha 4. LINHA4(string): texto da linha 4. retorno: nenhum devemos subtrair 48 do valor de cada byte. #rconfig + "dados" -> recebe e carrega parâmetros de configuração dados: "TAM IP SERVIDOR""IP SERVIDOR""TAM IP TERMINAL""IP TERMINAL""TAM MASC""MASCARA DE REDE""TAM L1""LINHA1""TAM L2""LINHA2""TAM L3""LINHA3""TAM L4""LINHA4""TEMPO" TAM L1(byte): tamanho da string do texto da linha 1. TAM L3(byte): tamanho da string do texto da linha 3. LINHA3(string): texto da linha 3. TAM L4(byte): tamanho da string do texto da linha 4. LINHA4(string): texto da linha 4. retorno: nenhum devemos subtrair 48 do valor de cada byte. #rconf02 + "dados" -> recebe e carrega parâmetros de configuração
dados: "TAM IP SERVIDOR""IP SERVIDOR""TAM IP TERMINAL""IP TERMINAL""TAM MASC""MASCARA DE REDE""TAM L1""LINHA1""TAM L2""LINHA2""TAM L3""LINHA3""TAM L4""LINHA4""TEMPO" TAM L1(byte): tamanho da string do texto da linha 1. TAM L3(byte): tamanho da string do texto da linha 3. LINHA3(string): texto da linha 3. TAM L4(byte): tamanho da string do texto da linha 4. LINHA4(string): texto da linha 4. retorno: nenhum devemos subtrair 48 do valor de cada byte. #reconf502 + "dados" -> recebe e carrega parâmetros de configuração dados: "TAM IP SERVIDOR""IP SERVIDOR""TAM IP TERMINAL""IP TERMINAL""TAM MASC""MASCARA DE REDE""TAM L1""LINHA1""TAM L2""LINHA2""TAM L3""LINHA3""TAM L4""LINHA4""TEMPO" TAM L1(byte): tamanho da string do texto da linha 1. TAM L3(byte): tamanho da string do texto da linha 3. LINHA3(string): texto da linha 3. TAM L4(byte): tamanho da string do texto da linha 4. LINHA4(string): texto da linha 4. retorno: nenhum
devemos subtrair 48 do valor de cada byte. #rextconf + "dados" -> recebe e carrega parâmetros estendidos dados: "TAM IP SERVIDOR""IP SERVIDOR""TAM IP TERMINAL""IP TERMINAL""TAM MASC""MASCARA DE REDE" "TAM GW""GATEWAY""TAM NS""NS""TAM TERM""TERM""TAM L1""LINHA1""TAM L2""LINHA2" "TAM NS""NS""TAM NS""NS""TAM NS""NS""TEMPO""DHCP""RESERVADO" TAM GW(byte): tamanho da string do Gateway. GATEWAY(string): Gateway. TAM TERM(byte): tamanho da string do nome do terminal. TERM(string): Nome. TAM L1(byte): tamanho da string do texto a linha 1. TEMPO(byte): Tempo de Exibição. DHCP(byte): IP dinâmico/fixo. (48 = fixo, 49 = dinâmico) RESERVADO(byte): 48 (decimal) retorno: #rextconf_ok devemos subtrair 48 (decimal) do valor de cada byte. #wlanconfig? -> retorna parâmetros de configuração do wifi. retorno: #wlanconfig"wifi ON""MODO""TAM SSID""CANAL""WEP ON""TAM WEP""CHAVE WEP"
WIFI ON(byte): 48 = Desabilita 49 = Habilita WIFI. MODO(byte): Modo. TAM SSID(byte): Tamanho da string do SSID. SSID(string): SSID. CANAL(byte): Canal. WEP ON(byte): 48 = Desabilita 49 = Desabilita WEP. TAM WEP(byte): Tamanho da string da chave WEP. CHAVE WEP(string): Chave WEP. OBS: - Para saber o tamanho real de cada string devemos subtrair 48 do valor de cada byte. #rwlanconfig + "dados" -> recebe e carrega parâmetros de configuração do wifi dados: "WIFI ON""MODO""TAM SSID""CANAL""WEP ON""TAM WEP""CHAVE WEP" WIFI ON(byte): 48 = Desabilita 49 = Habilita WIFI. MODO(byte): Modo. TAM SSID(byte): Tamanho da string do SSID. SSID(string): SSID. CANAL(byte): Canal. WEP ON(byte): 48 = Desabilita 49 = Desabilita WEP. TAM WEP(byte): Tamanho da string da chave WEP. CHAVE WEP(string): Chave WEP. retorno: #rwlanconfig_ok OBS: - Para saber o tamanho real de cada string devemos subtrair 48 do valor de cada byte. #paramconfig? -> retorna parâmetros relativos ao DHCP retorno: #paramconfig"dhcp""reservado" DHCP(byte): 48 = DHCP desativado 49 = DHCP ativado RESERVADO(byte) = sempre deverá ser 48 OBS: - Para saber o valor real de cada campo, devemos subtrair 48 do valor de cada byte. #paramconfig + "dados" -> -> recebe e carrega os parâmetros relativos ao DHCP dados: "DHCP""RESERVADO" DHCP(byte): 48 = DHCP desativado 49 = DHCP ativado
RESERVADO(byte) = sempre deverá ser 48 retorno: #paramconfig_ok OBS: - Para saber o valor real de cada campo, devemos subtrair 48 do valor de cada byte. #rparamconfig + "dados" -> -> recebe e carrega os parâmetros relativos ao DHCP dados: "DHCP""RESERVADO" DHCP(byte): 48 = DHCP desativado 49 = DHCP ativado RESERVADO(byte) = sempre deverá ser 48 retorno: #rparamconfig_ok OBS: - Para saber o valor real de cada campo, devemos subtrair 48 do valor de cada byte. #mesg + "params" -> mostra mensagem recebida no display (2 linhas) dados: "TAM L1""LINHA1 TAM L2""LINHA2"TEMPO""RESERVADO" TAM L1(byte): tamanho da string da mensagem da primeira linha. LINHA1(string): mensagem da primeira linha. TAM L2(byte): tamanho da string da mensagem da segunda linha. LINHA2(string): mensagem da segunda linha. RESERVADO(byte): reservado, deve ser = 48. retorno: nenhum OBS: - Para saber o valor real de cada campo, devemos subtrair 48 do valor de cada byte. #macaddr? + "dados" -> retorna o endereço MAC dados: "INTERFACE" INTERFACE(byte): 48 = Ethernet 49 = WiFi 57 = Atual retorno: #macaddr"interface""tam MAC""MAC" INTERFACE(byte): 48 = Ethernet 49 = WiFi 57 = Atual TAM MAC(byte): Tamanho da string do endereço MAC. MAC(string): Endereço MAC. OBS: - Para saber o valor real de cada campo, devemos subtrair 48 do valor de cada byte.
COMANDO ENVIADO DO TERMINAL PARA O SERVIDOR # + "código de barras" -> envia o código de barras para o Servidor. Caso algum código de barras seja passado no scanner do terminal, este envia os dados com código de barras para o servidor. O Servidor pode responder com o nome e preço do produto, ou envia mensagem de produto não cadastrado (#nfound (mostra mensagem "Produto não encontrado" no display) -> retorno: nenhum). Os dados com o nome e preço do produto são formatados da seguinte forma: #"PRODUTO" "PRECO" PRODUTO(string): nome do produto PRECO(string): preço do produto
SUPORTE TÉCNICO O Equipamento SAT não permite manutenção. Em caso de falhas que venham a ocorrer durante o período de garantia solicitamos que entre em contato com a Tanca para a troca do equipamento através dos nossos telefones, do nosso formulário de suporte no website www.tanca.com.br ou através do e-mail suporte@tanca.com.br. DÚVIDAS Em caso de duvidas entre em contato com a Tanca através dos nossos telefones, do nosso formulário de suporte no website www.tanca.com.br ou através do e-mail suporte@tanca.com.br.