Você está na página 1de 55

2009 Elipse Software Ltda. Todos direitos reservados.

05/10/2009 - Verso 1.15


Manual do Usurio do IOKit
Sumrio
1 Introduo 4
2 Configurao 5
5 2.1 A Caixa de Dilogo do IOKit
6 2.2 A Aba Setup
8 2.3 A Aba Serial
10 2.4 A Aba Modem
12 2.5 A Aba Ethernet
13 2.6 A Aba RAS
3 Referncia dos Tags do IOKit 16
16 3.1 Tags Gerais do IOKit
21 3.2 Tags da Interface Serial
21 3.3 Tags da Interface Modem
24 3.4 Tags da Interface Ethernet
25 3.5 Tags da Interface RAS
4 Tpicos Avanados 26
26 4.1 Estados do Driver
27 4.2 Trabalhando OFFLINE
28 4.3 Gerenciamento da Conexo
30 4.4 Threads do Driver
5 Knowledge Base 32
32 5.1 COMO: Enumerar a Lista de Modems
6 Apndice I - Eventos do IOKit 34
7 Apndice II - Propriedades do IOKit 37
37 7.1 Parmetros Gerais
40 7.2 Parmetros de Log
40 7.3 Parmetros da Interface Serial
44 7.4 Parmetros da Interface TAPI
44 7.5 Parmetros da Interface Ethernet
47 7.6 Parmetros da Interface RAS
8 Histrico de Revises 48
4 Introduo
1
Introduo
CAPTULO
Este manual uma referncia para os usurios do IOKit Elipse, descrevendo como
utilizar e configurar o IOKit tanto no Elipse SCADA quanto no E3, fornecendo
informaes tcnicas do uso prtico do IOKit.
O IOKit um componente compartilhado utilizado pelos drivers de I/O do Elipse,
implementando o acesso padro do nvel fsico e proporcionando interfaces para:
Portas seriais.
Modem (atravs de TAPI).
Ethernet (utiliza Windows Sockets via TCP/IP ou UDP/IP).
RAS (Remote Access Server).
Todos os drivers escritos utilizando o IOKit utilizam os seguintes recursos descritos
neste manual, como por exemplo:
Independncia de nvel fsico.
Gerao de logs.
Configurao offline.
Gerenciamento de conexes.
O IOKit implementado como uma DLL (Dynamic Link Library) linkada com o driver.
IMPORTANTE: Para evitar conflitos entre drivers, o arquivo IOKit.dll deve estar
presente APENAS na pasta Windows\System32. Cpias desta DLL em outras pastas
podem fazer com que o driver ou o IOKit no funcionem corretamente.
Configurao 5
2
Configurao
CAPTULO
A configurao do IOKit feita na caixa de dilogo de configurao do driver. Para
acessar a configurao da caixa de dilogo no E3 (verso 1.xx), siga estes passos:
1. Clique com o boto direito do mouse no driver (IODriver).
2. Selecione Propriedades no menu popup.
3. Selecione a aba Driver.
4. Pressione o boto Outros parmetros.
No E3 verso 2.0 ou posterior, basta clicar no boto para abrir a configurao do
driver.
No Elipse SCADA, siga estes passos:
1. Abra o Organizer.
2. Selecione o driver na rvore.
3. Pressione o boto Extras na aba do driver.
Atualmente o IOKIt permite que apenas uma conexo seja aberta para cada driver.
Isto significa que, se for necessrio o acesso a duas portas seriais, ter que se
adicionar dois drivers na aplicao e configurar cada um deles para cada porta serial.
2.1 A Caixa de Dilogo do IOKit
A caixa de dilogo do IOKit permite configurar a conexo de I/O que ser utilizada pelo
driver e contm cinco abas:
Setup
Serial
Ethernet
Modem
RAS
Alguns drivers fornecem abas adicionais especficas na caixa de dilogo do IOKit.
Consulte os manuais do driver caso queira maiores informaes sobre cada aba
especfica.
6 Configurao
2.2 A Aba Setup
A aba Setup contm a configurao geral do driver. A aba dividida em trs partes
distintas:
Configuraes gerais.
Connection management (gerenciamento de conexes).
Logging options (Opes de logs).
Aba Setup
Physical Layer: Selecione a interface fsica a partir da lista. As opes so: Serial,
Ethernet, Modem e RAS. A interface selecionada dever ser configurada na sua aba
especfica.
Timeout: Configure o timeout em milissegundos para a camada fsica. Isto , a
medida de tempo que a interface de I/O aguardar para a recepo de um byte
(qualquer byte do buffer de recepo).
Start driver OFFLINE: Assinale esta opo para fazer com que o driver inicie OFFLINE
(parado). Isto significa que a interface I/O no ser criada at que se configure o
driver como ONLINE (utilizando um tag na aplicao). Este modo possibilita a
configurao dinmica da interface I/O em execuo. Veja a seo Trabalhando em
Configurao 7
OFFLINE para maiores detalhes.
Connection management: Estas configuraes ajustam como o IOKit ir manter a
conexo e qual a poltica de recuperao contra as falhas.
Mode: Seleciona o modo de gerenciamento de conexo. Selecionando a
opo Automatic deixar que o driver gerencie a conexo
automaticamente como configurado nas opes seguintes. Selecionado
a opo Manual deixar o gerenciamento inteiramente a cargo da
aplicao. Veja a seo Estado do Driver para maiores detalhes.
Retry failed connection every: Selecione esta opo para habilitar a
retentativa de conexo do driver em um determinado intervalo (em
segundos). Se a opo Give up after no estiver configurada o driver
continuar retentando at que a conexo seja efetuada ou que a
aplicao seja parada.
Give up after: Habilite esta opo para definir um nmero mximo de
tentativas de conexo. Quando o nmero especificado em Consecutive
connection tries alcanado o driver ir para o modo OFFLINE,
assumindo que um problema de hardware est presente. Se o driver
estabelece uma conexo com sucesso, o nmero de tentativas sem
sucesso zerada. Se esta nova conexo perdida ento o contador de
retentativas comea do zero.
Disconnect if non-responsive: Habilite esta opo para fazer com que o
driver desconecte se nenhum byte chegou interface I/O no timeout
especificado (em segundos). Este timeout dever ser maior que o
timeout configurado no nvel fsico anteriormente.
Logging Options: Estas configuraes controlam a gerao de arquivos de log para o
driver.
Log to File: Habilite esta opo e configure o nome do arquivo onde o log
ser escrito. Arquivos de log podem ser bem extensos, portanto utilize
esta opo por curtos perodos de tempo, apenas para o propsito de
testes e depuraes.
Caso se coloque a macro %PROCESS% no nome do arquivo de log, esta
ser substituda pelo ID do processo atual. Esta opo particularmente
til se se utilizam vrias instncias do mesmo driver no E3, fazendo
assim com que cada instncia gere um arquivo separado de log. Por
exemplo:
Log to file: c:\e3logs\drivers\sim_%PROCESS%.log
Ir gerar um arquivo de log c:\e3logs\drivers\sim_00000FDA.log para o
processo 0FDAh
8 Configurao
Pode-se tambm utilizar a macro %DATE% no nome do arquivo. Neste
caso ser gerado um arquivo de log por dia (no formato aaaa_mm_dd).
Por exemplo:
Log to file: c:\e3logs\drivers\sim_%DATE%.log
Ir gerar o arquivo c:\e3logs\drivers\sim_2005_12_31.log no dia 31 de
dezembro de 2005, e c:\e3logs\drivers\sim_2006_01_01.log no dia
primeiro de janeiro de 2006.
2.3 A Aba Serial
Utilize esta aba para configurar os parmetros da interface Serial.
Aba Serial
Port: Selecione a porta serial a partir da lista (de COM1 at COM4) ou digite o nome
da porta serial no formato COMn (por exemplo, COM15). Se digitar o nome da porta
manualmente, a caixa de dilogo aceitar apenas nomes de portas comeando
com COM.
Baud rate: Selecione o baud rate a partir da lista (1200, 2400, 4800, 9600, 19200,
38400, 57600 ou 115200) ou digite o baud rate desejado (por exemplo, 600).
Configurao 9
Data bits: Selecione 7 ou 8 bits de dados a partir da lista.
Parity: Selecione a paridade a partir da lista (None, Even, Odd, Mark ou List).
Stop bits: Selecione o nmero de stop bits a partir da lista (1, 1.5 ou 2 stop bits).
Enable 'ECHO' supression: Habilite esta opo para remover o eco recebido aps o
IOKit enviar algo pela porta serial. Se o eco no for igual aos bytes recm enviados,
o IOKit aborta a comunicao.
Handshaking: Configure o uso dos sinais RTS, CTS e DTR no handshaking (controlando
quando o dado pode ser enviado ou recebido atravs da linha serial). Na maioria
das vezes configurando o controle DTR para ON e o controle RTS para Toogle ir
funcionar tanto com RS232 quanto com RS485.
DTR control: Selecione ON para deixar o sinal DTR sempre ligado
enquanto a porta serial aberta. Selecione OFF para desligar o sinal DTR
enquanto a porta serial aberta. Alguns equipamentos exigem que o
sinal DTR esteja ligado para permitir a comunicao.
RTS control: Selecione ON para deixar o sinal RTS sempre ligado enquanto
a porta serial aberta. Selecione OFF para desligar o sinal RTS enquanto
a porta serial aberta. Selecione Toogle para ligar o RTS enquanto envia
os bytes atravs da porta serial e deslig-lo quando no est enviando
bytes (habilita recepo).
Wait for CTS before send: Disponvel apenas quando o controle RTS est
configurado para Toogle. Utilize esta opo para forar que o driver
verifique o sinal CTS antes de enviar os bytes atravs da porta serial
(aps levantar o sinal de RTS). Neste modo o CTS tratado como um flag
de permisso para envio.
CTS timeout: Determina o tempo mximo (em milissegundos) que o driver
ir aguardar pelo sinal de CTS depois de levantar o sinal de RTS. Se o CTS
no levantado dentro deste timeout, o driver acaba por falhar na
comunicao atual e retorna erro.
Delay before send: Alguns hardwares de porta serial demoram a habilitar
o circuito de envio de dados depois que o sinal RTS levantado.
Configure este parmetro para aguardar uma determinada quantidade
de milissegundos depois de levantar o RTS e antes de enviar o primeiro
byte. IMPORTANTE: esta espera deve ser utilizada com muito cuidado,
pois consome 100% dos recursos da CPU enquanto aguarda. A
performance geral do system ser degradada conforme este valor
aumenta.
10 Configurao
Delay after send: o mesmo que Delay before send, mas neste caso a
espera efetuada depois que o ltimo byte enviado, antes de baixar o
sinal de RTS.
Inter-byte delay (microseconds): Define uma espera entre cada byte transmitido
pelo IOKit, em milionsimos de segundo (1000000 = 1 segundo). Esta opo deve
ser utilizada com esperas pequenas (menos que um milissegundo).
Inter-frame delay (milliseconds): Define uma espera entre pacotes enviados ou
recebidos pelo IOKit, em milsimos de segundo (1000 = 1 segundo). Esta espera
aplicada caso o IOKit envie dois pacotes consecutivos, ou entre um pacote
recebido e o prximo envio.
2.4 A Aba Modem
Utilize esta aba para configurar os parmetros da interface Modem. Algumas opes
da aba Serial afetam a configurao do Modem, portanto interessante no esquecer
de configurar a interface Serial.
Aba Modem
A interface modem utiliza os modems TAPI instalados no seu computador.
Configurao 11
Select the modem to use: Escolha um modem a partir da lista de modems
disponveis no seu computador. Case selecione default modem, ento o primeiro
modem disponvel ser utilizado (escolher esta opo recomendado
especialmente quando a aplicao ser utilizada em um outro computador).
Modem settings: Clique neste boto para abrir a janela de configurao do modem
selecionado.
Dial Number: Digite o nmero para discar (este pode ser modificado em tempo de
execuo). Pode-se utilizar a caractere w representando uma pausa (espera pelo
tom de discagem). Exemplo: 0w33313456 (discar 0, esperar e ento discar
33313456).
Accept incoming calls: Habilitando esta opo faz com que o driver atenda o
telefone quando ele receba uma chamada externa. Para utilizar esta opo
necessrio que o Connection managment, na aba Setup, esteja configurada para
Manual.
12 Configurao
2.5 A Aba Ethernet
Utilize esta aba para configurar os parmetros da interface Ethernet. Estes
parmetros (todos exceto as configuraes da porta) devem ser tambm configurados
para uso na interface RAS.
Aba Ethernet
Transport: Selecione TCP/IP para um socket TCP (stream). Selecione UDP/IP para
utilizar um socket UDP (datagram, connectionless).
Listen for connections on port: Utilize esta opo para aguardar por novas conexes
em uma porta IP especfica (comum em drivers Escravos). Caso se deixe esta opo
desmarcada ento o driver conectar ao endereo e porta especificados em
Connect to.
Connect to: Estes parmetros configuram o endereo IP e a Porta do dispositivo
remoto.
IP: Digite o endereo IP do dispositivo remoto. Voc pode usar tanto o IP
separado por pontos quanto uma URL (no caso de uma URL, o driver usa o
servio de DNS disponvel para mapear a URL para um endereo IP).
Exemplos: 192.168.0.13 ou server1.
Configurao 13
Port: Digite a porta IP do dispositivo remoto (de 0 at 65535).
Specify local port: marque esta opo para utilizar uma porta local fixa ao
conectar ao endereo principal.
Backup address: Habilite o endereo de backup se o dispositivo dispe de um
endereo de IP alternativo (no caso do primeiro endereo falhar).
IP: Digite o endereo IP do dispositivo remoto. Voc pode usar tanto o IP
separado por pontos quanto uma URL (no caso de uma URL, o driver usa
o servio de DNS disponvel para mapear a URL para um endereo IP).
Exemplos: 192.168.0.13 ou server1.
Port: Digite a porta IP do dispositivo remoto (de 0 at 65535).
Specify local port: marque esta opo para utilizar uma porta local fixa ao
conectar ao endereo de backup.
PING before connecting: Habilite esta opo para pingar (verificar se o dispositivo
pode ser encontrado na rede) o dispositivo antes de tentar uma conexo com o
socket. Esta uma maneira rpida de determinar a chance de uma conexo bem
sucedida antes de tentar abrir um socket com o dispositivo (o timeout de uma
conexo com um socket pode ser bem alto).
Timeout: Especifique o nmero de milissegundos de espera por uma
resposta do ping. Deve-se usar o comando PING para verificar o tempo
normal de resposta, configurando este parmetro para um valor acima
desta mdia. Normalmente pode-se configurar um valor entre 1000 e
4000 milisegundos (de 1 at 4 segundos).
Retries: Nmero de retentativas de ping (no conta a tentativa inicial). Se
todos as tentativas falharem ento a conexo com o socket ser
abortada.
Enable 'ECHO' suppression: Marque esta opo para eliminar o 'eco' dos dados
recebidos. O 'eco' uma cpia dos dados que foram enviados, que pode ser
retornada ' frente' da mensagem de resposta.
2.6 A Aba RAS
Use esta aba para configurar os parmetros da interface RAS. Ser necessrio
tambm configurar a aba Ethernet.
A interface RAS abre uma conexo socket com um dispositivo RAS. O dispositivo RAS
um servidor de modems acessvel atravs de TCP/IP, aguardando por conexes socket
14 Configurao
em uma porta IP. Para cada conexo aceita nesta porta ele d acesso a um modem.
Quando conectando a um dispositivo RAS, primeiramente o IOKit conecta ao socket no
IP e porta configurado na aba Ethernet. Depois que o socket aberto, os seguintes
passos de inicializao ou de conexo so efetuados:
1) Limpeza do socket (remove qualquer mensagem de saudao TELNET recebida do
dispositivo RAS).
2) Envia o comando de discagem AT (em ASCII) no socket.
3) Aguarda pela recepo de uma resposta CONNECT.
4) Caso o timeout expire, a conexo abortada.
5) Se o CONNECT recebido dentro do timeout, o socket disponibilizado para
comunicao com o dispositivo (a conexo est estabelecida).
Se o passo 5 efetuado com sucesso, ento o socket comporta-se como um socket
normal, com o dispositivo RAS funcionando como um roteador entre o driver e o
dispositivo (os bytes enviados pelo driver so recebidos pelo dispositivo RAS e
enviados para o dispositivo destino utilizando um modem. Os bytes recebidos pelo
dispositivo RAS do modem so enviados de volta ao driver utilizando o mesmo socket).
Depois que a conexo estabelecida, a interface RAS monitora os dados recebidos
pelo driver. Caso um String de NO CARRIER seja encontrado, o socket fechado. Se o
dispositivo RAS no envia o sinal NO CARRIER, a interface RAS no consegue detectar
quando a conexo modem entre o dispositivo RAS e o dispositivo final de I/O falha.
Para recuperao de tal falha fortemente recomendado que seja habilitada a opo
Disconnect if non-responsive (na aba de Setup).
Configurao 15
Aba RAS
AT command: String com o comando AT completo usado para discar ao dispositivo
destino. Exemplo: ATDT33313456 (discagem usando tom para o nmero 33313456).
Connection timeout: Nmero de segundos a aguardar por uma resposta CONNECT
do modem, aps o envio do comando AT.
16 Referncia dos Tags do IOKit
3
Referncia dos Tags do IOKit
CAPTULO
O IOKit define tags internos utilizados para vrias tarefas. Todos os tags do IOKit tem
N1/B1 = -1 (ou 65535 no E3) e N2/B2 = 0. Os parmetros N3/B3 tm os significados a
seguir:
N3/B3 = 0: Tags de status e configuraes gerais do IOKit.
N3/B3 = 1: Tags da interface serial.
N3/B3 = 2: Tags da interface ethernet.
N3/B3 = 3: Tags da interface modem.
N3/B3 = 4: Tags da interface RAS.
3.1 Tags Gerais do IOKit
Tags gerais do IOKit (N2/B2 = 0)
Os tags descritos a seguir so fornecidos pelo IOKit para todas as interfaces de I/O
suportadas:
Read Driver Events
Physical Layer Status
Set Configuration Parameters
Work Online
3.1.1 Read Driver Events
BLOCK TAG (4
elementos)
Read Driver Events (Apenas Leitura)
Parmetros
numricos
B1 = -1
B2 = 0
B3 = 0
B4 = 1
Referncia dos Tags do IOKit 17
Tamanho = 4
Parmetros de
string
ParamItem = "IO.IOKitEvent"
Este bloco retorna eventos de driver gerados por vrias fontes no IOKit (ver Apndice I
- Eventos do IOKit para uma lista com todos os eventos gerados pelo IOKit). A
propriedade TimeStamp do bloco representa o momento em que o evento ocorreu. Os
elementos de bloco so:
Elemento 0: Tipo de Evento.
0: Informao
1: Advertncia
2: Erro
Elemento 1: Fonte do Evento.
0: Driver (especfico do driver)
-1: IOKit (eventos genricos de IOKit)
-2: Interface Serial
-3: Interface Modem
-4: Interface Ethernet
-5: Interface RAS
Elemento 2: Nmero de erro (especfico de cada fonte de evento).
Elemento 3: Mensagem do evento (String, especfico de cada evento).
NOTA: O driver mantm um nmero mximo de 100 eventos internamente. Se
eventos adicionais forem reportados, os eventos mais antigos sero descartados.
18 Referncia dos Tags do IOKit
3.1.2 Physical Layer Status
TAG Physical Layer Status (Apenas Leitura)
Parmetros
numricos
N1 = -1
N2 = 0
N3 = 0
N4 = 2
Parmetros de
string
ParamItem = "IO.PhysicalLayerStatus"
Este tag indica o estado da camada fsica. Seus possveis valores so:
0: Camada Fsica parada (o driver est offline, a camada fsica falhou ao inicializar
ou excedeu o nmero mximo de tentativas de reconexo).
1: Camada Fsica iniciada mas no conectada (o driver est online, mas a camada
fsica no est conectada. Se o gerenciamento de conexo automtica estiver
habilitado, a camada fsica pode estar conectando, desconectando ou esperando
por uma tentativa de reconexo. Se o gerenciamento de conexo manual estiver
selecionado, a camada fsica permanecer neste estado at ser forada a
conectar).
2: Camada Fsica conectada (a camada fsica est pronta para ser usada). Isto NO
signfica que o equipamento esteja conectado, apenas que o meio de acesso est
funcionando.
3.1.3 Set Configuration Parameters
Set Configuration Parameters (-1, 0, 0, 3)
Tag/Block IO.SetConfigurationParameters (Apenas Leitura)
Use este tag para modificar qualquer propriedade de dilogo do driver, em runtime (a
lista completa de propriedades pode ser encontrada no Apndice II - Propriedade do
IOKit).
Este tag funciona somente enquanto o driver estiver OFFLINE. Para iniciar o driver
offline, selecione a opo Start driver OFFLINE na caixa de dilogo do driver. Pode-se
tanto escrever uma simples TAG ou um BLOCO inteiro com os parmetros a serem
modificados (escritas de elementos de bloco individuais no so suportadas, o bloco
Referncia dos Tags do IOKit 19
inteiro precisa ser escrito de uma s vez).
No Elipse SCADA, ser necessrio usar um tag BLOCO. Cada parmetro a ser
configurado utiliza dois elementos de bloco. Por exemplo, caso seja necessrio
configurar 3 parmetros, ento o tamanho do bloco deve ser 6 (3 * 2). O primeiro
elemento o nome da propriedade (como um String), o segundo elemento o valor da
propriedade. Veja este cdigo de script do Elipse SCADA:
// 'Block' should be a Block tag with automatic read, scan read,
// and automatic write DISABLED
// configure the parameters
Block.element001 = "IO.Type" // Parameter 1
Block.element002 = "Serial"
Block.element003 = "IO.Serial.Port" // Parameter 2
Block.element004 = 1
Block.element005 = "IO.serial.BaudRate" // Parameter 3
Block.element006 = 19200
// Write the whole block
Block.Write()
Ao usar o E3, a habilidade de criar arrays em runtime permite o uso tanto de um tag de
comunicao quanto de um tag bloco. Pode-se utilizar o mtodo Driver.Write para
enviar os parmetros diretamente para o driver, sem a necessidade de criar um tag.
Veja estes exemplos:
Dim arr(6)
' Configure the array elements
arr(1) = "IO.Type"
arr(2) = "Serial"
arr(3) = "IO.Serial.Port"
arr(4) = 1
arr(5) = "IO.serial.BaudRate"
arr(6) = 19200
' We have two methods of sending the parameters
' Method 1: using an I/O tag
tag.WriteEx arr
' Method 2: without using a tag
Driver.Write -1, 0, 0, 3, arr
Uma variao do exemplo acima usa uma array bi-dimensional:
Dim arr(10)
' Configure the array elements, note that the array was dimensioned
' for 10 elements. Empty array elements are ignored by the driver.
arr(1) = Array("IO.Type", "Serial")
arr(2) = Array("IO.Serial.Port", 1)
arr(3) = Array("IO.serial.BaudRate", 19200)
Driver.Write -1, 0, 0, 3, arr
O driver no valida nomes de parmetros ou valores passados, por isso cuidado ao
escrever seus nomes corretamente. O comando Write falhar se a array de
configurao for formada incorretamente. Pode-se consultar o log do driver ou usar o
paremtro writeStatus da funo WriteEx para descobrir a causa exata do erro:
20 Referncia dos Tags do IOKit
Dim arr(10), strError
arr(1) = Array("IO.Type", "Serial")
arr(2) = Array("IO.Serial.Port", 1)
arr(3) = Array("IO.serial.BaudRate", 19200)
If Not Driver.WriteEx -1, 0, 0, 3, arr, , , strError Then
MsgBox "Failed to set driver parameters: " + strError
End If
3.1.4 Work Online
Work Online (-1, 0, 0, 4)
Tag IO.WorkOnline (Leitura/Escrita)
Este tag informa o estado atual do driver, e permite iniciar ou parar a camada fsica.
0 - Driver OFFLINE: A camada fsica est fechada (parada). Este modo permite uma
configurao dinmica dos parmetros o driver atravs do tag Set Configuration
Parameters.
1 - Driver ONLINE: A camada fsica est aberta (sendo executada). Enquanto estiver
ONLINE, a camada fsica pode ser conectada ou desconectada (seu estado atual
pode ser conferido com o tag Physical Layer Status).
No exemplo a seguir (do E3), o driver colocado offline, sua porta COM modificada, e
ele ento posto online novamente:
' Put driver OFFLINE
Driver.Write -1, 0, 0, 4, 0
' Change port to COM2
Driver.Write -1, 0, 0, 3, Array("IO.Serial.Port", 2)
' Put driver ONLINE
Driver.Write -1, 0, 0, 4, 1
O comando Write pode falhar quando estiver configurando o driver como ONLINE
(write 1). Neste caso, o driver permanecer OFFLINE. A causa da falha pode ser:
tipo de camada fsica configurada incorretamente (provavelmente um valor
invlido foi configurado para a propriedade IO.Type);
o driver pode ter ficado sem memria;
a camada fsica pode ter deixado de criar seu thread de trabalho (procure no
arquivo de log pela mensagem Failed to create physical layer thread!);
a camada fsica no conseguiu inicializar. A causa da falha depende do tipo de
camada fsica. Pode ser um nmero de porta serial invlida, falha ao inicializar
Window Sockets, falha ao inicializar o TAPI (modem), etc. A causa ser estabelecida
no arquivo de log.
Referncia dos Tags do IOKit 21
IMPORTANTE: mesmo que configurao do driver para ONLINE seja bem sucedida,
isto no signfica necessariamente que a camada fsica est pronta para o uso. O tag
Physical Layer Status deve ser conferido para assegurar que a camada fsica esteja
conectada e preparada para comunicar.
3.2 Tags da Interface Serial
Tags da Interface Serial (N2/B2 = 2)
Atualmente, no existem tags definidos especificamente para gerenciar a interface
serial em tempo de execuo.
3.3 Tags da Interface Modem
Tags da Interface do Modem (N2/B2 = 3)
Os seguintes tags permitem controlar e diagnosticar a interface modem em runtime:
Get/Set Phone Number
Dial
Get Modem Status
Is Modem Connected
Hang-Up Call
Connection Baud-Rate
Is Modem Connecting
IMPORTANTE: Estes tags estaro disponveis apenas quando o driver estiver ONLINE.
3.3.1 Get/Set Phone Number
Get/Set Phone Number (-1, 0, 3, 0)
IO.TAPI.PhoneNumber (Leitura/Escrita)
(String) Este tag l ou modifica o nmero de telefone utilizado pelo comando Dial. Ao
22 Referncia dos Tags do IOKit
modificar este tag, o novo valor ser usado apenas no prximo comando Dial.
3.3.2 Dial
Dial (-1, 0, 3, 1)
IO.TAPI.Dial (Apenas Escrita)
Ao escrever qualquer valor neste tag, a interface modem fora uma chamada. Este
comando assncrono, apenas iniciando o processo de chamada. Pode-se monitorar
o tag Is Modem Connected para detectar quando a chamada ser estabelecida.
3.3.3 Get Modem Status
Get Modem Status (-1, 0, 3, 2)
IO.TAPI.ModemStatus (Apenas Leitura)
Retorna um string com o estado atual do modem. Os valores possveis so:
"No status!": A interface do modem ainda no foi aberta, ou j foi fechada.
"Modem initialized OK!": A interface do modem foi inicializada com sucesso.
"Modem error at initialization!": O driver no conseguiu inicializar a linha do
modem. Confira o arquivo de log do driver para maiores detalhes.
"Modem error at dial!": O driver no conseguiu comear ou aceitar uma chamada.
"Connecting...": O driver iniciou uma chamada com sucesso, e est atualmente
processando esta chamada.
"Ringing...": Indica que o modem est recebendo uma chamada externa (mas ainda
no a aceitou).
"Connected!": O driver conectou-se com sucesso (completou uma chamada ou
aceitou uma chamada externa).
"Disconnecting...": O driver est desligando a chamada atual.
"Disconnected OK!": O driver desligou a chamada atual.
"Error: no dial tone!": O driver abortou a chamada porque o sinal de linha
disponvel no foi detectado.
Referncia dos Tags do IOKit 23
"Error: busy!": O driver abortou a ligao porque a linha estava ocupada.
"Error: no answer!": O driver abortou a chamada porque no recebeu resposta do
outro modem.
"Error: unknown!": A chamada atual foi abortada por um erro desconhecido.
3.3.4 Is Modem Connected
Is Modem Connected (-1, 0, 3, 3)
IO.TAPI.IsModemConnected (Apenas Leitura)
Este tag indica o estado da conexo do modem. Os valores possveis so:
0: O modem no est conectado (mas pode estar fazendo ou recebendo uma
chamada externa).
1: O modem est conectado, e o driver completou ou recebeu uma chamada
externa com sucesso. Enquanto estiver neste estado, a camada fsica consegue
enviar ou receber dados.
3.3.5 Hang-Up Call
Hang-Up Call (-1, 0, 3, 4)
IO.TAPI.HangUp (Apenas Escrita)
Qualquer valor escrito neste tag desligar a chamada atual.
NOTE: Use este comando apenas quando estiver gerenciando a camada fsica
manualmente, ou se estiver explicitamente tentando forar o driver a reiniciar a
comunicao. Se a camada fsica estiver conectada para reconexo automtica, o
driver imediatamente tentar re-estabelecer a conexo.
3.3.6 Connection Baud-Rate
Connection Baud-Rate (-1, 0, 3, 5)
IO.TAPI.ConnectionBaudRate (Read-Only)
Indica a baud rate da conexo atual. Se o modem no estiver conectado, retorna o
valor 0.
24 Referncia dos Tags do IOKit
3.3.7 Is Modem Connecting
Is Modem Connecting (-1, 0, 3, 6)
IO.TAPI.IsModemConnecting (Apenas Leitura)
Este tag indica o estado de conexo do modem com maiores detalhes do que o tag Is
Modem Connected tag. Os valores possveis so:
0: O modem no est conectado.
1: O modem est conectando (fazendo ou recebendo uma chamada externa).
2: O modem est conectado. Enquanto estiver neste estado, a camada fsica
consegue enviar ou receber dados.
3: O modem est desconectando a chamada atual.
3.4 Tags da Interface Ethernet
Tags da Interface Ethernet(N2/B2 = 4)
Os seguintes tags permitem controlar e identificar a interface Ethernet em runtime
(tambm vlido quando a interface RAS estiver selecionada):
IPSelect
IPSwitch
IMPORTANTE: Estes tags esto disponveis apenas quando o driver estiver ONLINE.
3.4.1 IPSelect
IPSelect (-1, 0, 4, 0)
IO.Ethernet.IPSelect (Leitura/Escrita)
Indica o IP ativo:
0: O IP principal est selecionado (ativo).
1: O IP alternativo (backup) est selecionado (ativo).
Referncia dos Tags do IOKit 25
Se a interface Ethernet (ou RAS) estiver conectada, o tag indica qual dos dois IPs
configurados est sendo usado. Se a interface for desconectada, o tag indica qual IP
ser usado primeiro na prxima tentativa de conexo.
Durante o processo de conexo, se o IP ativo no estiver disponvel, o IOKit tentar
conectar com o outro IP. Se a conexo com o IP alternativo funcionar, este ser
configurado como o IP Ativo (switchover automtico).
Para forar um switchover manual, escreva 1 ou 0 neste tag. Isto forar a reconexo
com o IP especificado (0 = IP Principal; 1 = IP Backup) se o driver estiver atualmente
conectado. Se o driver estiver desconectado, isto configurar o IP ativo para a prxima
tentativa de conexo.
3.4.2 IPSwitch
IPSwitch (-1, 0, 4, 1)
IO.Ethernet.IPSwitch (Write-Only)
Qualquer valor escrito neste tag forar o switchover manual. Se o IP Principal estiver
ativo, ento o IP Backup ser ativado, e vice-versa. Isto forar a reconexo com o IP
especificado se o driver estiver atualmente conectado. Se o driver estiver
desconectado, isto configurar o IP ativo para a prxima tentativa de conexo.
3.5 Tags da Interface RAS
RAS Interface Tags (N2/B2 = 5)
Atualmente, no existem tags definidos especificamente para gerenciar a interface
RAS em tempo de execuo.
26 Tpicos Avanados
4
Tpicos Avanados
CAPTULO
Este captulo possui informaes mais aprofundadas sobre o funcionamento interno
do IOKit.
4.1 Estados do Driver
Existem quatro estados distintos do driver:
Parado;
Offline (iniciado);
Desconectado (iniciado, online);
Conectado (iniciado, online).
O estado Parado acontece quando o driver no est sendo executado ou carregado
(normalmente, quando a aplicao est sendo configurada).
Assim que a aplicao for executada, o driver entra no estado Offline. Neste estado,
foram detectadas as condies mnimas para a execuo (basicamente, a DLL do
driver foi carregada), e o driver espera por mais configuraes de parmetros ou por
um comando para entrar online.
O estado Online pode se apresentar de duas formas diferentes: conectado ou
desconectado. O driver est desconectado quando a camada fsica ainda no capaz
de transmitir ou receber dados. O driver est conectado quando a camada fsica est
pronta para ser usada.
NOTA: Os estados definidos aqui se aplicam somente camada fsica. Quando a
camada fsica est conectada, o driver consegue acessar o driver de comunicao
(PLC), mas este pode ainda sim no responder. Conectar a camada fsica um bom
ponto de partida, mas procure sempre verificar os tags especficos do driver que
reportam o estado do equipamento.
Tpicos Avanados 27
Estados de um driver do IOKit
4.2 Trabalhando OFFLINE
O modo OFFLINE foi projetado especialmente para sistemas com drivers que precisam
ser configurados em runtime. D preferncia a este modo quando o tipo de conexo
for ignorado, ou quando nem todos os parmetros de conexo forem conhecidos
antes da aplicao ser executada.
Enquanto estiver OFFLINE, todos os tags de comunicao do driver falharo, em todas
as leituras e escritas. Os nicos tags permitidos so os Tags Gerais do IOKit (N1/B1 = -1
e N2/B2 = 0).
Embora seja possvel mudar os estados ONLINE e OFFLINE a qualquer momento,
geralmente so seguidos estes procedimentos:
1. Configure a opo Start driver OFFLINE na caixa de dilogo Extras do driver. Esta
opo far com que o driver comece no modo OFFLINE.
2. Configure os parmetros do driver no script da aplicao. O script pode ser
executado automaticamente, ou em resposta a um comando da interface do
usurio.
3. Configure o driver como ONLINE.
28 Tpicos Avanados
4.3 Gerenciamento da Conexo
Quando um driver est configurado como ONLINE, ele entra em um estado onde tenta
conectar com a camada fsica. Esta conexo pode ser feita de trs modos diferentes:
Conexo automtica: o driver gerencia a conexo de acordo com as configuraes
da caixa de dilogo.
Conexo manual: o driver permance desconectado e depende de comandos de
aplicao (como um comando dial, por exemplo) para conectar-se camada fsica.
Modo Listen: o driver permance desconectado e se comporta como escravo,
aceitando conexes requisitadas por outros equipamentos na linha fsica.
Esta seo tambm cobre a deteco de inatividade, que automaticamente
desconecta a camada fsica se esta no receber nenhum byte dentro de um perodo
especfico de tempo.
4.3.1 Conexo Automtica
A Conexo Automtica pode ser selecionada de dois modos:
Na caixa de dilogo do driver, selecione a opo Automatic (managed by the driver)
no combo box do modo conexo.
Configure a propriedade IO.ConnectionMode como 0 (automtico).
O algoritmo de conexo automtica comea quando o driver est configurado como
modo ONLINE. Neste momento, o driver estabelece uma conexo inicial. A partir deste
momento, o driver passa a se comportar de acordo com as opes de gerenciamento
de conexo.
Se a recuperao de conexo estiver habilitada (Retry failed connection every nn
seconds), o driver automaticamente tentar se reconectar camada fsica se a
conexo for perdida. Se a recuperao da conexo estiver desabilitada e a conexo for
perdida, o driver retornar ao modo offline.
Pode-se tambm definir o nmero mximo de retentativas de conexo (Give up after
nn failed connections). Isto limitar o nmero de reconexes com a camada fsica. Se o
nmero mximo de retentativas for atingido, o driver parado, voltando ao modo
offline novamente. O contador de conexes re-setado (configurado como 0) quando
a conexo for bem-sucedida.
Tpicos Avanados 29
4.3.2 Conexo Manual
Quando o driver configurado para trabalhar no modo manual, ele permance no
estado desconectado aps ter sido configurado como online. Aps isto, pode-se for-
lo a conectar com a camada fsica atravs de tags de gerenciamento de conexo.
Por exemplo, ao usar a camada fsica Modem, h uma tela onde pode-se editar o
nmero de telefone (atravs de um setpoint) e pressionar um boto para iniciar a
ligao. Se a ligao for completada, o driver passar automaticamente para o estado
conectado. Pode-se desconectar o driver novamente atravs do tag Hang-Up.
4.3.3 Modo Listen
O Modo Listen quase idntico ao Modo Manual. A diferena que a camada fsica
ser programada para aceitar conexes externas. Para a camada Ethernet, verifique a
opo Listen for connections on port. Para a camada Modem, habilite a opo Accept
incoming calls.
Para que o modo Listen funcione, preciso configurar o driver para trabalhar em
modo manual. Ele permancer no estado desconectado at que a camada fsica
indique que uma conexo est disponvel. Pode-se verificar quando a conexo ser
estabelecida atravs da monitorao do tag Physical Layer Status.
4.3.4 Deteco de Inatividade
O driver pode ser programado para se desconectar automaticamente da camada
fsica se ela ficar inativa por um certo perodo de tempo. O driver considera que a
camada fsica est inativa se estiver constantemente solicitando dados (tentando
receber caracteres) sem que consiga obter nenhum. Se qualquer caractere for
recebido (mesmo que no seja um caractere de protocolo vlido), o tempo de
inatividade ser re-setado.
O temporizador de inatividade iniciado sempre que o tempo de recebimento de
caracteres da camada fsica expirar. O temporizador ser re-setado (parado) quando
qualquer byte for recebido pela camada fsica.
O timeout de inatividade deve ser maior que o timeout da camada fsica, do contrrio
a camada fsica pode ser considerada inativa durante a operao normal do driver.
Recomenda-se o uso de pelo menos 10 segundos.
30 Tpicos Avanados
4.4 Threads do Driver
Tanto o E3 quanto o Elipse SCADA beneficiam-se do multithreading em seus esquemas
de aquisio de dados. Com o multithreading, vrios drivers podem comunicar ao
mesmo tempo, sem que nenhum bloqueie o outro. Nesta seo, estudaremos os
threads de comunicao do E3 e Elipse SCADA.
4.4.1 Threads do Elipse SCADA
Ao usar o Elipse SCADA (Elipse32.exe), os seguintes threads de comunicao sero
apresentados:
Thread principal (MAIN): este thread executa a interface do usurio e todos os
scripts da aplicao. Todas as solicitaes do driver (leituras ou escritas
disparadas por scripts ou pela interface do usurio, alm de escritas assncronas)
so geradas neste thread. O thread principal (MAIN) as bloqueia, enquanto estas
solicitaes sncronas esto sendo manipuladas pelo driver.
Thread do DRIVER: este thread onde o driver executado. Existe um thread do
DRIVER para cada driver declarado na aplicao. Ele lida com as leituras em
background (polling) dos tags, bem como as solicitaes assncronas geradas pelo
thread principal. Se o driver estiver configurado como 16-bit compatibility mode,
este thread no existe e todas as solicitaes (sncronas e leituras em background)
so manipuladas no thread principal.
Thread PHYSICAL LAYER: este thread iniciado quando o driver fica ONLINE. Ele lida
com as solicitaes de comunicao enviadas pelo thread do DRIVER, e tambm
responsvel por gerenciar a conexo (conectar, desconectar, tentar reconexo,
etc.). Solicitaes do thread do DRIVER s podem ser manipuladas pelo thread
PHYSICAL LAYER quando o driver estiver conectado.
4.4.2 Threads do E3
Ao usar o E3, cada driver tem seu prprio processo (IOServer.exe). Todos os processos
de drivers so gerenciados pelo E3 Runtime (E3Run.exe). Sero cobertos nesta seo
apenas os threads do IOSERVER:
Thread principal (MAIN): este thread recebe solicitaes do E3RUN. Estas
solicitaes incluem iniciar ou parar o driver, escrever comandos, e iniciar ou parar
o tag scan.
Thread CALLBACK: este thread responsvel por enviar valores de volta ao E3RUN.
Thread do DRIVER: este thread, assim como no thread DRIVER do Elipse SCADA,
Tpicos Avanados 31
onde o driver realmente executado.
Thread de PHYSICAL LAYER: este thread, assim como o thread PHYSICAL LAYER do
Elipse SCADA, lida com as solicitaes de comunicao enviadas pelo thread do
DRIVER, bem como gerencia a conexo fsica. Ele iniciado apenas quando o driver
estiver ONLINE.
32 Knowledge Base
5
Knowledge Base
CAPTULO
Esta seo contm artigos com dicas sobre o uso do IOKit.
5.1 COMO: Enumerar a Lista de Modems
A propriedade IO.TAPI.ModemID permite ao usurio selecionar um novo modem em
tempo de execuo. O problema que este ID varia de um computador para outro, e
no h uma maneira simples de determinar o ID vlido para um computador.
A partir do IOKit v1.14, o IOKit agora gera eventos sempre que este no consegue se
conectar a um modem. Estes eventos listam o valores vlidos do Modem ID da
mquina atual.
Para enumerar a lista de modems, deve-se seguir estes trs passos:
1. Inicie o driver com um Modem ID invlido
Deixe o driver offline. H dois modos de faz-lo: configure o driver para que
sempre comece offline (escolha a opo Start Driver OFFLINE na Aba Setup), ou
escreva 0 no tag Work ONLINE enquanto o driver estiver sendo executado.
Ento, escreva um Modem ID invlido (-1 normalmente um ID invlido) para o
parmetro IO.TAPI.ModemID usando o tag Set Configuration Parameter.
Agora o driver estar OFFLINE, e com um Modem ID invlido configurado.
Configure o driver como ONLINE novamente (escreva 1 no tag Work ONLINE). Isto
ativar a interface TAPI com um Modem ID invlido, o que gerar eventos
enumerando os IDs vlidos.
NOTA: Os eventos so gerados assincronamente, portanto ao realizar estes passos
em um script, termine-o por aqui.
2. Capture os Eventos de Enumerao dos Modem IDs vlidos
Knowledge Base 33
Para capturar estes eventos, necessrio declarar um tag Read Driver Events
em sua aplicao. No evento OnRead deste tag, deve-se verificar os eventos que
reportam os modem IDs disponveis. Deve-se procurar por eventos com Tipo = 0
(informao), Fonte = -3 (Modem). A enumerao sempre inicia com um evento
com Cdigo = 2, seguido de um evento com Cdigo = 3 para cada Modem ID, e
termina com um evento com Cdigo = 4.
O exemplo abaixo lista os eventos retornados quando dois modems fictcios so
encontrados (IDs 318 e 99383):
TIPO FONTE CDIG
O
MENSAGEM
0
(Informa
o)
-3
(Mode
m)
2 "Begin of available modem list"
0
(Informa
o)
-3
(Mode
m)
3 "318:Modem on serial 3"
0
(Informa
o)
-3
(Mode
m)
3 "99383:Built in modem"
0
(Informa
o)
-3
(Mode
m)
4 "End of available modem list"
Seu script OnRead pode extrair os modem IDs da mensagem de eventos com
Cdigo = 3, e armazen-los para uso posterior.
3. Reconfigure o IOKit com um Modem ID vlido
Depois de haver enumerado os Modem IDs vlidos, pode-se continuar a
configurar o driver.
Primeiro, deixe o driver novamente offline (escreva 0 no tag Work ONLINE).
Ento, escreva um dos Modem IDs vlidos enumerados no parmetro IO.TAPI.
ModemID usando o tag Set Configuration Parameters.
Finalmente, deixe o driver novamente online (escreva 1 no tag Work ONLINE).
34 Apndice I - Eventos do IOKit
6
Apndice I - Eventos do
IOKit
CAPTULO
Este apndice lista os eventos atualmente reportados pelo IOKit. Para acessar estes
eventos, deve-se declarar o tag bloco Read Driver Events (B1 = -1, B2 = 0, B3 = 0, B4 = -1,
Tamanho = 4).
TIPO FONTE CDIGO MENSAGEM
Error (2)
Serial (-2) 0 Error opening serial port: %s
Tried to open port COM%u twice.
Failed to open port %s (Windows error %u).
Failed to configure port %s (Windows error
%u).
Error (2)
Modem (-3) 0 Error opening modem line: %s
Tried to open line twice.
Failed to initialize line (TAPI error %s).
Failed to negotiate API version (TAPI error
%s).
Failed to open line (TAPI error %s).
Failed to configure status messages (TAPI
error %s).
Failed to get line address status (TAPI error
%s).
Apndice I - Eventos do IOKit 35
TIPO FONTE CDIGO MENSAGEM
Out of memory getting line address status.
Failed to get device capabilities (TAPI error
%s).
Device ID = %u not found.
Out of memory getting device capabilities.
Info (0)
Modem (-3) 2 Beginning of available modem list.
Info (0)
Modem (-3) 3 %u:%s
%u o ID do modem (em decimal).
%s a descrio do modem.
Info (0)
Modem (-3) 4 End of available modem list.
Error (2)
Ethernet (-
4)
0 Error connecting to %s on port %u: %s
Error connecting to %s on port %u (backup IP):
%s
Tried to connect socket twice
Null address
Socket error %s(%d) calling %s()
Error (2)
Ras (-5) 1 Timeout waiting for CONNECT.
Info (0)
Ras (-5) 3 RAS response: '%s'.
Error (2)
Ras (-5) 4 RAS connection error: NO CARRIER.
Info (0)
IOKit (-1) 1 Initializing physical layer...
Error (2)
IOKit (-1) 2 Physical layer initialization failed!
Info (0)
IOKit (-1) 3 Physical layer initialized!
Info (0)
IOKit (-1) 4 Connecting physical layer...
36 Apndice I - Eventos do IOKit
TIPO FONTE CDIGO MENSAGEM
Error (2)
IOKit (-1) 5 Failed to connect physical layer!
Info (0)
IOKit (-1) 6 Physical layer connected!
Error (2)
IOKit (-1) 7 Physical layer connection lost!
Info (0)
IOKit (-1) 8 Reconnecting physical layer...
Error (2)
IOKit (-1) 9 Failed to reconnect physical layer!
Info (0)
IOKit (-1) 10 Physical layer reconnected!
Info (0)
IOKit (-1) 11 Physical layer connected automatically!
Info (0)
IOKit (-1) 12 Reconnecting physical layer (retry #%u)
Error (2)
IOKit (-1) 13 Failed to reconnect physical layer (retry #%u)!
Info (0)
IOKit (-1) 14 Physical layer reconnected (on retry #%u)!
Info (0)
IOKit (-1) 15 Terminating physical layer...
Info (0)
IOKit (-1) 16 Physical layer terminated! (%u bytes sent, %u
bytes received).
Info (0)
IOKit (-1) 17 Disconnecting physical layer...
Error (2)
IOKit (-1) 18 Physical layer aborted (exhausted all retries)!
Error (2)
IOKit (-1) 19 Physical layer non-responsive for %u seconds,
disconnecting...
Apndice II - Propriedades do IOKit 37
7
Apndice II - Propriedades
do IOKit
CAPTULO
Este apndice lista os parmetros suportados pelo IOKit. Os parmetros podem ser
modificados em runtime atravs de uma escrita no tag Set Configuration Parameters.
7.1 Parmetros Gerais
Estes so os parmetros gerais da camada fsica.
7.1.1 IO.ConnectionMode
IO.ConnectionMode (Integer)
Controla o modo de Gerenciamento da Conexo:
0: Modo automtico (o driver gerencia a conexo).
1: Modo manual (a aplicao gerencia a conexo).
7.1.2 IO.GiveUpEnable
IO.GiveUpEnable (Boolean)
TRUE pra definir um nmero mximo de tentativas de reconexo. Se todas as
reconexes falharem, o driver entrar no estado OFFLINE. Se configurado como FALSE,
o driver tentar at que uma reconexo seja bem-sucedida.
38 Apndice II - Propriedades do IOKit
7.1.3 IO.GiveUpTries
IO.GiveUpTries (Integer)
Nmero de tentativas de reconexo antes que esta seja abortada. Por exemplo, se o
valor deste parmetro for 1, o driver tentar apenas uma reconexo quando a
conexo for perdida. Se esta falhar, o driver entrar no estado OFFLINE.
7.1.4 IO.InactivityEnable
IO.InactivityEnable (Boolean)
TRUE para habilitar e FALSE para desabilitar a deteco de inatividade. A camada
fsica ser desconectada se estiver inativa por um perodo de tempo. Ela ser
considerada inativa apenas se for capaz de enviar dados, mas no de receb-los de
volta.
7.1.5 IO.InactivityPeriodSec
IO.InactivityPeriodSec (Integer)
Nmero de segundos para a verificao de inatividade. Se a camada fsica estiver
inativa por este perodo de tempo, ela ser desconectada.
7.1.6 IO.RecoverEnable
IO.RecoverEnable (Boolean)
TRUE para habilitar o driver a recuperar conexes perdidas, FALSE para deixar o driver
OFFLINE quando uma conexo for perdida.
7.1.7 IO.RecoverPeriodSec
IO.RecoverPeriodSec (Integer)
Tempo de espera entre duas tentativas de conexo, em segundos.
NOTA: A primeira reconexo ser feita imediatamente depois que a conexo for
perdida.
Apndice II - Propriedades do IOKit 39
7.1.8 IO.StartOffline
IO.StartOffline (Boolean)
TRUE para iniciar o driver offline, FALSE para iniciar o driver online.
NOTA: No faz sentido modificar esta propriedade em runtime, j que ela s pode ser
modificada quando o driver j estiver offline. Para deixar o driver online em runtime,
escreva 1 na tag Work ONLINE.
7.1.9 IO.TimeoutMs
IO.TimeoutMs (Integer)
Define o time-out da camada fsica (em milissegundos; 1 segundo = 1000).
7.1.10 IO.Type
IO.Type (String)
Define o tipo de interface fsica utilizada pelo driver. Os valores possveis so:
N ou None: No utiliza uma interface fsica (o driver deve fornecer uma interface
customizada).
S ou Serial: Utiliza uma porta serial local (COMn).
M ou Modem: Utiliza um modem local (interno ou externo) acessado via TAPI (
Telephony Application Programming Interface).
E ou Ethernet: Utiliza um socket TCP/IP ou UDP/IP.
R ou RAS: Utiliza uma interface RAS (Remote Access Server). O driver conecta-se ao
equipamento RAS atravs da interface Ethernet, e ento emite um comando AT
(dial).
40 Apndice II - Propriedades do IOKit
7.2 Parmetros de Log
Estes parmetros controlam a gerao de um arquivo de logs.
7.2.1 IO.Log.Enable
IO.Log.Enable (Boolean)
Configurado como TRUE para habilitar, e FALSE para desabilitar a gerao de logs.
7.2.2 IO.Log.Filename
IO.Log.Filename (String)
String que define o nome do arquivo de logs.
7.3 Parmetros da Interface Serial
Estes parmetros controlam a configurao da interface serial.
7.3.1 IO.Serial.Baudrate
IO.Serial.Baudrate (Integer)
Especifica a baud rate da porta serial. Exemplo: 9600.
7.3.2 IO.Serial.CTSTimeoutMs
IO.Serial.CTSTimeoutMs (Integer)
Tempo de espera pelo sinal CTS, em milissegundos. Aps o RTS ser ligado (ON), um
temporizador iniciado para esperar pelo sinal CTS; se o temporizador expirar, o
driver aborta o envio de bytes atravs da porta serial. Disponvel apenas quando o
RTS configurado como Toggle, e o WaitCTS TRUE.
Apndice II - Propriedades do IOKit 41
7.3.3 IO.Serial.DataBits
IO.Serial.DataBits (Integer)
Especifica o nmero de bits de dados para a configurao da porta serial. Os valores
possveis so:
5: 5 bits de dados.
6: 6 bits de dados.
7: 7 bits de dados.
8: 8 bits de dados.
7.3.4 IO.Serial.DelayAfterMs
IO.Serial.DelayAfterMs (Integer)
Nmero de milissegundos de atraso aps o ltimo byte ter sido enviado atravs do
serial, e antes de desligar (OFF) o sinal RTS. Disponvel apenas quando o RTS
configurado como Toggle, e o WaitCTS FALSE.
7.3.5 IO.Serial.DelayBeforeMs
IO.Serial.DelayBeforeMs (Integer)
Nmero de milissegundos de atraso aps o RTS ter sido ligado (ON), mas antes dos
dados serem enviados. Disponvel apenas quando o RTS configurado como Toggle, e
o WaitCTS FALSE.
7.3.6 IO.Serial.DTR
IO.Serial.DTR (String)
Indica o modo como o driver lida com o sinal DTR:
OFF: DTR sempre OFF.
ON: DTR sempre ON.
42 Apndice II - Propriedades do IOKit
7.3.7 IO.Serial.InterbyteDelayUs
IO.Serial.InterbyteDelayUs (Integer)
Tempo de espera, em milissegundos (1/1000000 de um segundo), para cada dois
bytes enviados pela interface serial.
7.3.8 IO.Serial.InterframeDelayMs
IO.Serial.InterframeDelayMs (Integer)
Tempo de espera, em milissegundos, antes de enviar um pacote aps o ltimo pacote
enviado ou recebido.
7.3.9 IO.Serial.Parity
IO.Serial.Parity (String)
Especifica a paridade para a configurao da porta serial. Os valores possveis so:
E ou Even: paridade par.
N ou None: sem paridade.
O ou Odd: paridade mpar.
M ou Mark: paridade de marca.
S ou Space: paridade de espao.
7.3.10 IO.Serial.Port
IO.Serial.Port (Integer)
Nmero da porta serial local:
1: Utiliza o COM1.
2: Utiliza o COM2.
3: Utiliza o COM3.
n: Utiliza o COMn.
Apndice II - Propriedades do IOKit 43
7.3.11 IO.Serial.RTS
IO.Serial.RTS (String)
Indica como o driver lida com o sinal RTS:
OFF: RTS sempre OFF.
ON: RTS sempre ON.
Toggle: Liga (ON) o RTS quando estiver transmitindo dados, e desliga (OFF) quando
no estiver transmitindo dados.
7.3.12 IO.Serial.StopBits
IO.Serial.StopBits (Integer)
Especifica o nmero de bits de parada para a configurao da porta seria. Os valores
possveis so:
1: um stop bit.
2: um e meio stop bits.
3: dois stop bits.
7.3.13 IO.Serial.SupressEcho
IO.Serial.SupressEcho (Integer)
Utiliza um valor diferente de zero para habilitar a supresso de eco, ou ento zero
para desabilit-la.
7.3.14 IO.Serial.WaitCTS
IO.Serial.WaitCTS (Boolean)
TRUE faz com que o driver espere pelo sinal CTS antes de enviar bytes quando o RTS
estiver ligado (ON). Disponvel apenas quando o RTS configurado como Toggle.
44 Apndice II - Propriedades do IOKit
7.4 Parmetros da Interface TAPI
Estes parmetros controlam a configurao da interface modem.
7.4.1 IO.TAPI.AcceptIncoming
IO.TAPI.AcceptIncoming (Integer)
FALSE se o modem no pode aceitar chamadas externas (o driver se comporta como
mestre); TRUE para habilitar a recepo de chamadas (o driver se comporta como
escravo).
7.4.2 IO.TAPI.ModemID
IO.TAPI.ModemID (Integer)
o nmero de ID do modem. Este ID criado pelo Windows, e usado internamente
para identificar o modem dentro de uma lista de equipamentos instalados no
computador. Este ID pode no permanecer vlido caso o modem seja re-instalado, ou
a aplicao for executada em outro computador.
Recomenda-se que este parmetro seja configurado como 0 (zero), indicando que o
driver deve utilizar o primeiro modem disponvel.
7.4.3 IO.TAPI.PhoneNumber
IO.TAPI.PhoneNumber (String)
O nmero de telefone utilizado em comandos dial. Por exemplo, 0w01234566 (o w
fora o modem a esperar por um sinal de chamada).
7.5 Parmetros da Interface Ethernet
Estes parmetros controlam a configurao da interface Ethernet (note que a
interface Ethernet tambm usada pela interface RAS).
Apndice II - Propriedades do IOKit 45
7.5.1 IO.Ethernet.AcceptConnection
IO.Ethernet.AcceptConnection (Boolean)
FALSE se o driver no puder aceitar conexes externas (o driver se comporta como
mestre); TRUE para habilitar a recepo de conexes (o driver se comporta como
escravo).
7.5.2 IO.Ethernet.BackupEnable
IO.Ethernet.BackupEnable (Boolean)
TRUE para habilitar o endereo de IP reserva (backup). Se a tentativa de reconectar
com o IP principal falhar, o driver tentar utilizar o endereo reserva. FALSE desabilita
sua utilizao.
7.5.3 IO.Ethernet.BackupIP
IO.Ethernet.BackupIP (String)
IP alternativo (backup) do equipamento de destino. Pode-se utilizar tanto o endereo
numrico ou o HOST name do equipamento. Exemplos: 192.168.0.7 ou SERVER2.
7.5.4 IO.Ethernet.BackupPort
IO.Ethernet.BackupPort (Integer)
Nmero da porta do IP alternativo do equipamento de destino (usado juntamente
com BackupIP).
7.5.5 IO.Ethernet.ListenPort
IO.Ethernet.ListenPort (Integer)
Nmero da porta de IP utilizada pelo driver para escutar conexes.
46 Apndice II - Propriedades do IOKit
7.5.6 IO.Ethernet.MainIP
IO.Ethernet.MainIP (String)
Endereo de IP do equipamento de destino. Pode-se utilizar tanto o endereo
numrico ou o HOST name do equipamento. Exemplos: 192.168.0.7 ou SERVER2.
7.5.7 IO.Ethernet.MainPort
IO.Ethernet.MainPort (Integer)
Nmero da porta do IP no equipamento de destino (utilizado juntamente com MainIP).
7.5.8 IO.Ethernet.PingEnable
IO.Ethernet.PingEnable (Boolean)
TRUE habilita o ping do endereo de IP do equipamento de destino antes de tentar
conectar-se ao socket. O timeout de conexo do socket no pode ser controlado, por
isso o ping de endereo antes de conectar uma maneira rpida de detectar se a
conexo vai falhar. FALSE desabilita o ping.
7.5.9 IO.Ethernet.PingTimeoutMs
IO.Ethernet.PingTimeoutMs (Integer)
Tempo de espera por uma resposta de ping, em milissegundos.
7.5.10 IO.Ethernet.PingTries
IO.Ethernet.PingTries (Integer)
Nmero mximo de tentativas de ping (o mnimo 1, incluindo o primeiro ping).
7.5.11 IO.Ethernet.Transport
IO.Ethernet.Transport (Integer)
Define o protocolo de transporte:
T ou TCP: utiliza TCP/IP.
Apndice II - Propriedades do IOKit 47
U ou UDP: utiliza UDP/IP.
7.6 Parmetros da Interface RAS
Estes parmetros controlam a configurao da interface RAS. Note que a interface RAS
utiliza a interface Ethernet, que por isso tambm deve ser configurada.
7.6.1 IO.RAS.ATCommand
IO.RAS.ATCommand (String)
Comando AT a ser enviado atravs do socket para forar o equipamento RAS a fazer
uma ligao usando o canal RAS atual. Exemplo: ATDT6265545.
7.6.2 IO.RAS.CommandTimeoutSec
IO.RAS.CommandTimeoutSec (Integer)
Tempo de espera pela mensagem CONNECT em resposta ao comando AT, em
segundos.
48 Histrico de Revises
8
Histrico de Revises
CAPTULO
VERSO DATA AUTOR COMENTRIOS
1.15
2009-08-
24
F. Englert
Corrigido: IPSwitch no funciona quando
disparado logo aps uma reconexo bem-
sucedida (Case 8012).
Adicionada a opo ECHO Supression nas
interfaces Ethernet e RAS (Case 8383).
A opo Retry failed connection every ... seconds
agora habilitada por padro (Case 9140).
Corrigido: Mudana de label na pgina de
configuraes do IOKit para "Give up after ...
failed retries" (Case 9289)
Adicionada opo Specify local port na interface
Ethernet (Case 9311).
Corrigido: IOKit pode travar se um driver
parado enquanto estiver comunicando com
outro thread (Case 9423).
IOKit agora loga uma mensagem quando o
nome do arquivo de logs modificado (por
exemplo, "Log redirected to 'newlog.log'") (Case
10175).
As seguintes features e correes esto
disponveis apenas para os drivers compilados
com o IOKitLib v1.15:
Adicionado suporte para leituras por callback
(Case 8222). [IOKitLib]
Corrigido: Leitura das tags de configurao (por
exemplo, ParamItem = "IO.Ethernet.MainIP")
Histrico de Revises 49
VERSO DATA AUTOR COMENTRIOS
causa escapamento de memria (Case 8949).
[IOKitLib]
IOKit agora registra no log a configurao do
driver e o nmero da verso do driver/IOKit nas
seguintes situaes:
Quando a camada fsica est conectada.
Quando o driver iniciado no modo offline.
Quando o log ligado, ou quando o nome
do arquivo de log modificado em tempo
de execuo (Case 10175). [IOKitLib]
Agora possvel modificar o nome do arquivo
de log em tempo de execuo sem precisar
deixar o driver offline (atravs de escritas nos
tags IO.Log.Enable e IO.Log.Filename) (Case
10175). [IOKitLib]
1.14
2007-01-
15
F. Englert
Corrigido: O IOKit pode travar quando estiver
finalizando um driver serial (Case 5313).
Melhorado tempo de resposta para drivers
seriais escravos (Case 7280).
IOKit agora enumera os modems disponveis
(com seus respectivos IDs) quando o driver
ativado com um modem ID invlido (Case 7474).
Corrigido: as primeiras operaes de
comunicao (leituras/escritas) podem falhar
enquanto o IOKit ainda est se conectando ao
equipamento alvo (Case 7614).
Corrigido: o IOKit pode cair quando um valor
float ou double muito grande for escrito/lido
(tal como -
4585887366944162000000000000.0) (Case
7806).
1.13
2006-08-
10
F. Englert
Corrigido: Timestamps de valores lidos/escritos
podem estar incorretos em 1 milissegundo
(Case 7261).
50 Histrico de Revises
VERSO DATA AUTOR COMENTRIOS
1.12
2006-07-
03
F. Englert
Corrigido: Escapamento de memria quando
um driver retorna um HVALUE dimensionado
como um array de HVALUEs (Case 7092).
Corrigido: Driver com thread de comunicao
separado pode travar ou cair quando o IOKit
posto em modo OFFLINE (Case 7099).
1.11
2006-05-
11
F. Englert
Agora impossvel verificar a verso do IOKitLib
com a qual o driver foi compilado. Uma funo
cujo nome seja IOKitLib_v1.11 exportada da
DLL do driver, permitindo a verso do IOKitLib
ser facilmente identificada. (Case 6968).
Corrigido: timeout no cumprido quando os
dados so enviados atravs da interface
Ethernet. Este bug pode travar o driver se o
equipamento par no estiver lendo dados de
um soquete conectado (Case 6935).
Corrigido: a opo Disconnect if inactive no
funciona se o driver estiver no modo Listen
(Case 6933).
Corrigido: no h retentativas de reconexo se
a interface serial no puder ser aberta (Case
6865).
1.10
2005-12-
20
F. Englert
O IOKit agora gera um arquivo de log por dia se o
nome do arquivo contiver o macro %DATE%
(Case 2047).
Corrigido: o log do IOKit mistura bytes enviados
ou recebidos de threads diferentes (Case 6530).
1.09
2005-12-
07
F. Englert
A interface do modem no lista ou abre um
modem se o sistema tiver outros modems
invlidos (Case 3613).
Uma caixa de mensagem agora mostrada
quando o usurio habilita a opo Start driver
OFFLINE, perguntando se ele confirma esta
opo (Case 4584).
Os parmetros de configurao do IOKIT agora
Histrico de Revises 51
VERSO DATA AUTOR COMENTRIOS
esto listados no arquivo de logs quando o
driver iniciado (Case 4584).
Corrigido: os atrasos nas configuraes do RTS
no funcionam no Windows NT (Case 5525).
Adicionada a opo Inter-frame delay
(miliseconds) na interface serial (tambm
disponvel para a interface de modem) (Case
5525).
A mensagem logada quando o parceiro remoto
fecha o soquete (recv3() returned error
(unknown) (0)) mudou para "Socket gracefully
closed by the remote partner" (Case 5599).
A interface Ethernet agora usa o WinSock v2.2
se disponvel (verses anteriores usavam o
WinSock v1.1). Alguns PLCs requerem essa
verso (Case 5617).
Adicionada a opo Enable ECHO supression
para a interface serial (tambm disponvel para
a interface do Modem) (Case 5647).
Adicionado o boto Modem settings interface
do modem, permitindo ao usurio configurar o
modem (Case 5656).
Adicionado suporte ao browsing dos tags
internos do IOKit (utilizado pela caixa de dilogo
do E3 TagBrowser) (Case 6016).
Adicionadas trs opes ao combo de baud-
rate da interface serial: 38700, 57600 e 115200
bauds (Case 6076).
O IOKit agora pode receber e identificar a fonte
de transmisses UDP. Este recurso agora est
disponvel para drivers que precisam receber
transmisses UDP. (Case 6085).
O IOKit no tenta se reconectar imediatamente
se a conexo recentemente feita tiver sido
perdida (Case 6294).
52 Histrico de Revises
VERSO DATA AUTOR COMENTRIOS
Adicionada a opo None lista de interfaces
disponveis, permitindo ao usurio desabilitar
a camada fsica (esta configurao til para
drivers que implementam camadas fsicas
customizadas) (Case 6316).
1.08
F. Englert
Adicionado o estado Ringing e o tag Is Modem
Connecting interface do modem (Case 4368).
Implementadas as opes Backup IP, Ping e UDP
na interface Ethernet (Cases 3014, 3015, e
3017).
Adicionada proteo contra buffer excedido na
gerao de logs (Case 4365).
Adicionada a opo Interbyte delay nas
interfaces serial e de modem (Case 4343).
IOKit portado para Linux e Windows CE (Case
4280).
Implementados os servios de ativao/
desativao de logs utilizado pelo dilogo
Driver Manager no E3Run (Case 4513).
Logs extras foram adicionados para ajudar no
debugging e diagnsticos de driver:
comunicao desconectada indicada em sputs
e sgets (Case 4851).
A verso do IOKit version agora mostrada na
barra de ttulo da folha de propriedades do
driver (Driver nonono (IOKit v1.08)) (Case 4778).
O estado anterior da porta serial agora
restaurado quando a porta estiver fechada. Isto
evita problemas em outros programas que
contam com a porta serial como configurada no
Windows Control Panel (Case 4484).
1.07
2004-05-
04
A. Corra Reviso de texto.
1.07
2004-01- F. Englert
A interface serial s vezes demora 1 segundo
Histrico de Revises 53
VERSO DATA AUTOR COMENTRIOS
26
antes de lidar com bytes de entrada (isto afeta
apenas drivers escravos) (Case 3279).
1.06
2003-12-
18
F. Englert
O IOKit agora verifica a verso do driver para
assegurar que o driver foi compilado com uma
verso compatvel do IOKit (Case 3018).
1.05
2003-11-
27
F. Englert
Implementada a opo Listen for connections
on port na interface Ethernet. Drivers escravos
via Ethernet agora so suportados (Case 3018).
1.04
2003-10-
27
F. Englert
A interface RAS agora desconecta corretamente
o soquete se receber uma sequncia de string
NO CARRIER aps a conexo ter sido
estabelecida (Case 2643).
1.03
2003-10-
09
F. Englert
A aba Ethernet no permite que os parmetros
de porta de IP sejam editados quando a
interface RAS estiver selecionada (Case 2675).
Permite que %PROCESS% seja inserido no nome
do arquivo de logs, para permitir que o ID do
processo seja inserido no nome do arquivo.
Exemplo: c:\driver_%PROCESS%.log criar o
arquivo de logs c:\driver_0000.log, onde 0000
o ID de processo (Case 2676).
As propriedades IO.Log.Enable e IO.Log.
Filename no funcionam, e devem ser
imediatamente aplicadas quando modificadas
atravs do tag Set Parameters (Case 2678).
1.02
2009-10-
07
F. Englert
A interface RAS agora conecta com uma nica
porta de IP (a porta especificada na aba
Ethernet). O hardware RAS verificar se h um
modem disponvel e atribuir o modem ao
soquete, ou ento negar conexo do soquete
(Case 2656).
1.01
2003-10-
06
F. Englert
A interface RAS agora desconecta o soquete se
receber uma sequncia de string NO CARRIER
aps a conexo ter sido estabelecida (Case
2643) (Este recurso no funciona corretamente,
utilize a verso 1.04).
54 Histrico de Revises
VERSO DATA AUTOR COMENTRIOS
1.00
2003-08-
11
F. Englert
Primeira verso. As seguintes opes de
Ethernet ainda no foram implementadas: Ping
, Backup address, UDP, Use new socket e Accept
connection.
Matriz
Rua 24 de Outubro, 353 - 10 andar
90510-002 Porto Alegre RS
Fone: (51) 3346-4699
Fax: (51) 3222-6226
E-mail: elipse@elipse.com.br
Filial SP
Rua dos Pinheiros, 870 - Conj. 141/142
05422-001 So Paulo - SP
Fone: (11) 3061-2828
Fax: (11) 3061-2828
E-mail: elipse-sp@elipse.com.br
Filial PR
Av. Sete de Setembro, 4698/1705
80240-000 Curitiba - PR
Fone: (41) 342-0120
Fax: (41) 342-0103
E-mail: elipse-pr@elipse.com.br
Consulte nosso website para informaes
sobre o representante do seu estado.
www.elipse.com.br
elipse@elipse.com.br
USA
40190 Jarvis Gray Lane
Avon - NC - USA 27915
Fone: (252) 995-6885
Fax: (252) 995-5686
E-mail: info@elipse-software.com
Filial MG
Av. do Contorno, 6594- 17 andar Sala 01
30110-044 Belo Horizonte - MG
Fone: (31) 3555-3366
Fax: (31) 3555-3399
E-mail: elipse-mg@elipse.com.br
Taiwan
15F.-1, No.56,Minsheng 1 st Rd.
800 Kaohsiung City Taiwan
Fone: +886-7-2221582
Fax: +886-7-2225909
E-mail: evan@elipse.com.br
Alemanha
D-67714 Waldfischbach Deutschland
Fone: +49 (0) 6333 4439
Fax: +49 (0) 6333 2790045
E-mail: elipse@elipse.de

Você também pode gostar