Você está na página 1de 5

CONFIGURANDO SERVIDOR SAT SS-1000

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.

2. MAIS DE UM SAT NO MESMO COMPUTADOR

Esta configuração padrão possui duas características:

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

3. AS NOVAS FUNÇÕES DA SATDLL (VERSAO 02.00.00 OU SUPERIOR)

Para realizar as configurações ditas acima, foram adicionadas três funções na SATDLL:

 (1) Int AbrePortaSAT(char* NumeroDeSerie, char* IpDaInterfaceUsbSat, char* Mascara)

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”.

Retorno A função retornará um inteiro. Ver tabela de possíveis valores.

 (2) Int AbrePortaPadraoSAT()

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.

Retorno A função retornará um inteiro. Ver tabela de possíveis valores.

2
CONFIGURANDO SERVIDOR SAT SS-1000

 Tabela de possíveis retornos para as funções acima:

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.

 (3) int HabilitaConfigAvancada(char* código_de_ativacao)

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

4. VÁRIOS SATS E WINDOWS LOADLIBRARY

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:

from ctypes import *

satdll_1 = windll.LoadLibrary("SATDLL1.dll")
satdll_2 = windll.LoadLibrary("SATDLL2.dll")

ret = satdll_1.AbrePortaSAT("900004697-18", "10.1.1.2", "255.255.255.0")


print "satdll_1.AbrePortaSAT:", ret

ret = satdll_1.ConsultarStatusOperacional(1,"codigo_ativacao")
print "satdll_1. ConsultarStatusOperacional:", c_char_p(ret).value

ret = satdll_2.AbrePortaSAT("900004694-75", "10.1.2.2", "255.255.255.0")


print "satdll_2.AbrePortaSAT:", ret

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

Você também pode gostar