Escolar Documentos
Profissional Documentos
Cultura Documentos
1. COMUNICAÇÃO SAT-PC
Por especificação, todos os SATs, obrigatoriamente, devem se comunicar com o computador pelo cabo USB. A
Sweda optou por um mecanismo moderno para realizar essa comunicação, o USB-Ethernet.
Desta forma, quando o sistema operacional detecta a conexão do SAT, ele cria uma interface de rede, como
se uma nova placa de rede fosse instalada. Os drivers para essa comunicação são os padrões, para Windows o SAT
precisa do RNDIS e para Linux do CDC.
Por padrão, o SAT usa a seguinte configuração de IP em sua interface de rede interna (dentro do equipamento):
IP: 172.16.0.3
Máscara: 255.255.255.248
Desta forma, para que o PC consiga se comunicar com o SAT via protocolo IP, ele deve usar o endereço “172.16.0.X”
onde X = 2, 4, 5 ou 6.
1. Se dois SS-1000 forem conectados no mesmo computador e os dois estiverem configurados com o mesmo
IP, o sistema operacional “se perde” e não consegue se comunicar com os dois;
2. Se a rede local a qual o computador (ou SAT) está ligado usa a rede 172.16.0.X, poderão existir conflitos que
causarão falha de conexão com a Internet ou entre computador e SAT.
A versão (02.00.00) do SS-1000 pode se comportar de forma diferente. Ela aceita a configuração de qualquer IP
na interface de rede USB/SAT. Então:
Para característica 1:
Basta que cada interface de rede USB/SAT seja configurada com um IP diferente, ex:
SAT1: 172.16.1.2
SAT2: 172.16.2.2
SAT3: 172.16.3.2
Para característica 2:
Basta que a interface de rede USB/SAT seja configurada com IP em uma faixa completamente diferente da
rede local, ex:
Rede local: 172.16.0.1-255
SAT1: 10.1.1.2
SAT2: 10.1.2.2
Na versão 02.00.00, o SS-1000 pede para o driver/sistema operacional configurar o MAC da interface de rede
USB/SAT com o número de série do SAT. Desta forma, para o SAT 900004697-18, o MAC que o driver/sistema
operacional escolherá para a interface de rede que ele cria é AA:00:00:46:97:18.
OBS: Importante lembrar que esta interface só é usada para a comunicação entre computador e SAT, não
interferindo na rede local.
1
CONFIGURANDO SERVIDOR SAT SS-1000
Para realizar as configurações ditas acima, foram adicionadas três funções na SATDLL:
O que esta função faz é varrer todas as interfaces de rede do computador, verificar quais são USB/SAT, verificar
qual tem o MAC compatível com o número de série fornecido e configurar essa interface com os valores escolhidos.
Argumentos Significado
NumeroDeSerie String C contendo o número de série do equipamento SAT.
IpDaInterfaceUsbSat String C contendo endereço IP a ser usado na interface USB/SAT criada no computador
pelo driver do sistema operacional.
Mascara String C contendo a máscara. Sugerimos o valor “255.255.255.0”.
Esta função não busca um número de série específico. Ela varre todas as interfaces de rede do computador
procurando por uma que seja USB/SAT e a configura com o endereço IP padrão.
Esta função é muito útil para quando se usa apenas um SAT no computador. Um retorno com sucesso garante
que o SAT está conectado, configurado corretamente e pronto para uso.
2
CONFIGURANDO SERVIDOR SAT SS-1000
Retorno Significado
0 Sucesso.
A configuração funcionou e o SAT está respondendo.
1 IP já usado.
O IP está sendo usado por outra interface de rede.
2 SAT não encontrado.
A DLL não conseguiu encontrar um SAT com o número de série fornecido. Ela usa o MAC das interfaces
para esta busca.
3 Falha na configuração de IP.
O sistema operacional não permitiu que a DLL configurasse a interface com o IP solicitado.
4 Parâmetro inválido.
Algum parâmetro utilizado está fora do padrão.
5 Erro na criação do socket.
A DLL não conseguiu criar um pacote para se comunicar com o SAT. Checar permissão da aplicação que
usa a DLL.
6 Erro no envio de mensagem.
A DLL não conseguiu enviar a mensagem ao SAT.
7 Falha ao tentar receber mensagem do SAT.
O sistema operacional não permitiu que a DLL tentasse receber a resposta do SAT.
8 Falha no roteamento.
A DLL, mesmo insistindo, não conseguiu que o sistema operacional roteasse os pacotes corretamente.
9 Falha na configuração da interface.
A DLL não conseguiu configurar a interface para receber a reposta do SAT como precisa.
10 Sem resposta.
O SAT não respondeu a DLL afirmando que agora consegue se comunicar com o novo endereço. Para
este retorno, a DLL tenta receber a resposta mais uma vez.
11 Resposta inválida.
A DLL recebeu uma resposta inválida.
Esta função é responsável por habilitar tudo o que está sendo descrito neste documento. Por padrão e
questões de compatibilidade, mesmos os SS-1000 fabricados na versão 02.00.00 vêm com este recurso desabilitado.
Ao chamar esta função, a DLL irá solicitar que o SAT passe a usar a nova configuração do driver USB-Ethernet.
Importante observar que será necessário reiniciar o SAT manualmente e aguardar o Windows reinstalar o driver,
caso o Windows não instale o driver automaticamente, o mesmo arquivo ‘.inf’ deverá ser usado. Esta reinstalação é
necessária pois agora o Windows reconhece o número de série do SAT, então, para ele, cada SAT será um
equipamento diferente.
Argumentos Significado
código_de_ativacao String C contendo o código de ativação do equipamento. Caso o equipamento esteja
desativado, o código “00000000” (sequência de oito zeros) deve ser informado.
Retorno Significado
0 Sucesso.
3
CONFIGURANDO SERVIDOR SAT SS-1000
A configuração funcionou e o SAT deve ser reiniciado para passar a usar a nova configuração.
1 Falha na comunicação.
Não foi possível realizar a comunicação com o equipamento.
2 Código de ativação inválido.
O código de ativação fornecido não é o mesmo que foi utilizado no processo de ativação.
3 Versão inválida.
SAT não está na versão 02.00.00
Quando uma linguagem como Java, C# ou até mesmo C++ carregam uma DLL em tempo de execução (somente
depois de iniciar), a função LoadLibrary do Windows é chamada direta ou indiretamente. Essa função tem um
mecanismo de controle de carregamento de DLL e esse mecanismo não carrega duas (ou mais) instâncias da
biblioteca para a memória, apenas controla usando um contador.
Dito isso, para que vários SATs sejam usados pelo mesmo aplicativo é importante que o aplicativo “carregue”
DLLs com nomes ou em pastas diferentes. Desta forma, o sistema operacional entenderá que são bibliotecas
diferentes e carregará todas elas. Caso isso não seja feito, a DLL sempre tentará se comunicar com o SAT da última
chamada da função AbrePortaSAT.
5. PEQUENO EXEMPLO
Abaixo segue um exemplo em python, bem simples, para ilustrar como um programa conseguiria usar dois SS-1000:
satdll_1 = windll.LoadLibrary("SATDLL1.dll")
satdll_2 = windll.LoadLibrary("SATDLL2.dll")
ret = satdll_1.ConsultarStatusOperacional(1,"codigo_ativacao")
print "satdll_1. ConsultarStatusOperacional:", c_char_p(ret).value
ret = satdll_2.ConsultarStatusOperacional(1,"codigo_ativacao")
print "satdll_2. ConsultarStatusOperacional:", c_char_p(ret).value
>python exemplopython.py
satdll_1.AbrePortaSAT: 0
satdll_1. ConsultarStatusOperacional: 000001|10000|Resposta com Sucesso|||900004697|DHCP|...
satdll_2.AbrePortaSAT: 0
satdll_2. ConsultarStatusOperacional: 000001|10000|Resposta com Sucesso||| 900004694|DHCP|...
4
CONFIGURANDO SERVIDOR SAT SS-1000