You are on page 1of 55

Manual do Usurio do IOKit

2009 Elipse Software Ltda. Todos direitos reservados. 05/10/2009 - Verso 1.15

Sumrio
1 Introduo 2 Configurao 2.1 A Caixa de Dilogo do IOKit 2.2 A Aba Setup 2.3 A Aba Serial 2.4 A Aba Modem 2.5 A Aba Ethernet 2.6 A Aba RAS 3 Referncia dos Tags do IOKit 3.1 Tags Gerais do IOKit 3.2 Tags da Interface Serial 3.3 Tags da Interface Modem 3.4 Tags da Interface Ethernet 3.5 Tags da Interface RAS 4 Tpicos Avanados 4.1 Estados do Driver 4.2 Trabalhando OFFLINE 4.3 Gerenciamento da Conexo 4.4 Threads do Driver 5 Knowledge Base 5.1 COMO: Enumerar a Lista de Modems 6 Apndice I - Eventos do IOKit 7 Apndice II - Propriedades do IOKit 7.1 Parmetros Gerais 7.2 Parmetros de Log 7.3 Parmetros da Interface Serial 7.4 Parmetros da Interface TAPI 7.5 Parmetros da Interface Ethernet 7.6 Parmetros da Interface RAS 8 Histrico de Revises 4 5 5 6 8 10 12 13 16 16 21 21 24 25 26 26 27 28 30 32 32 34 37 37 40 40 44 44 47 48

CAPTULO

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

Introdu o

CAPTULO

Configurao
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 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. para abrir a configurao do

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.

Configura o

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

Configura o

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 Configura o 7

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

Configura o

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.

Configura o

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.

10

Configura o

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.

Configura o

11

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. 12 Configura o

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

Configura o

13

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

14

Configura o

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.

Configura o

15

CAPTULO

Referncia dos Tags do IOKit


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) Parmetros numricos Read Driver Events (Apenas Leitura)

B1 = -1 B2 = 0 B3 = 0 B4 = 1

16

Refernc ia dos Tags do IOKit

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.

Refernc ia dos Tags do IOKit

17

3.1.2 Physical Layer Status


TAG Parmetros numricos Physical Layer Status (Apenas Leitura) N1 = -1 N2 = 0 N3 = 0 N4 = 2 ParamItem = "IO.PhysicalLayerStatus"

Parmetros de string

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 18 Refernc ia dos Tags do IOKit

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:

Refernc ia dos Tags do IOKit

19

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. 20 Refernc ia dos Tags do IOKit

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 Refernc ia dos Tags do IOKit 21

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.

22

Refernc ia dos Tags do IOKit

"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. Refernc ia dos Tags do IOKit 23

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). 24 Refernc ia dos Tags do IOKit

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.

Refernc ia dos Tags do IOKit

25

CAPTULO

Tpicos Avanados
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.

26

Tpic os Avan ados

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.

Tpic os Avan ados

27

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.

28

Tpic os Avan ados

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

Tpic os Avan ados

29

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, 30 Tpic os Avan ados

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.

Tpic os Avan ados

31

CAPTULO

Knowledge Base
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

32

Know ledge Base

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 -3 2 (Informa (Mode o) m) 0 -3 3 (Informa (Mode o) m) 0 -3 3 (Informa (Mode o) m) 0 -3 4 (Informa (Mode o) m)

"Begin of available modem list"

"318:Modem on serial 3"

"99383:Built in modem"

"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).

Know ledge Base

33

CAPTULO

Apndice I - Eventos do IOKit


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 Error (2)

FONTE Serial (-2)

CDIGO 0

MENSAGEM 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)

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

34

Apndic e I - Eventos do IOKit

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) Info (0)

Modem (-3) Modem (-3)

2 3

Beginning of available modem list. %u:%s %u o ID do modem (em decimal). %s a descrio do modem.

Info (0) Error (2)

Modem (-3) Ethernet (4)

4 0

End of available modem list. 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) Info (0) Error (2) Info (0) Error (2) Info (0) Info (0)

Ras (-5) Ras (-5) Ras (-5) IOKit (-1) IOKit (-1) IOKit (-1) IOKit (-1)

1 3 4 1 2 3 4

Timeout waiting for CONNECT. RAS response: '%s'. RAS connection error: NO CARRIER. Initializing physical layer... Physical layer initialization failed! Physical layer initialized! Connecting physical layer...

Apndic e I - Eventos do IOKit

35

TIPO Error (2) Info (0) Error (2) Info (0) Error (2) Info (0) Info (0) Info (0) Error (2) Info (0) Info (0) Info (0)

FONTE IOKit (-1) IOKit (-1) IOKit (-1) IOKit (-1) IOKit (-1) IOKit (-1) IOKit (-1) IOKit (-1) IOKit (-1) IOKit (-1) IOKit (-1) IOKit (-1)

CDIGO 5 6 7 8 9 10 11 12 13 14 15 16

MENSAGEM Failed to connect physical layer! Physical layer connected! Physical layer connection lost! Reconnecting physical layer... Failed to reconnect physical layer! Physical layer reconnected! Physical layer connected automatically! Reconnecting physical layer (retry #%u) Failed to reconnect physical layer (retry #%u)! Physical layer reconnected (on retry #%u)! Terminating physical layer... Physical layer terminated! (%u bytes sent, %u bytes received). Disconnecting physical layer... Physical layer aborted (exhausted all retries)! Physical layer non-responsive for %u seconds, disconnecting...

Info (0) Error (2) Error (2)

IOKit (-1) IOKit (-1) IOKit (-1)

17 18 19

36

Apndic e I - Eventos do IOKit

CAPTULO

Apndice II - Propriedades do IOKit


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.

Apndic e II - Propriedades do IOKit

37

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.

38

Apndic e II - Propriedades do IOKit

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

Apndic e II - Propriedades do IOKit

39

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.

40

Apndic e II - Propriedades do IOKit

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.

Apndic e II - Propriedades do IOKit

41

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. 42 Apndic e II - Propriedades do IOKit

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.

Apndic e II - Propriedades do IOKit

43

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

44

Apndic e II - Propriedades do IOKit

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.

Apndic e II - Propriedades do IOKit

45

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.

46

Apndic e II - Propriedades do IOKit

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.

Apndic e II - Propriedades do IOKit

47

CAPTULO

Histrico de Revises
VERSO DATA AUTOR COMENTRIOS Corrigido: IPSwitch no funciona quando disparado logo aps uma reconexo bemsucedida (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). 1.15 2009-0824 F. Englert 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") 48 Histric o de Revises

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] 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).

1.14

2007-0115

F. Englert

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-0810

F. Englert

Corrigido: Timestamps de valores lidos/escritos podem estar incorretos em 1 milissegundo (Case 7261). 49

Histric o de Revises

VERSO

DATA

AUTOR

COMENTRIOS Corrigido: Escapamento de memria quando um driver retorna um HVALUE dimensionado como um array de HVALUEs (Case 7092).

1.12

2006-0703

F. Englert Corrigido: Driver com thread de comunicao separado pode travar ou cair quando o IOKit posto em modo OFFLINE (Case 7099). 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 F. Englert 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). 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). A interface do modem no lista ou abre um modem se o sistema tiver outros modems invlidos (Case 3613).

1.11

2006-0511

1.10

2005-1220

F. Englert

1.09

2005-1207

F. Englert

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

50

Histric o de Revises

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 baudrate 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).

Histric o de Revises

51

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

1.08

F. Englert 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 1.07 52

2004-0504 2004-01-

A. Corra Reviso de texto. F. Englert A interface serial s vezes demora 1 segundo Histric o de Revises

VERSO

DATA 26

AUTOR

COMENTRIOS antes de lidar com bytes de entrada (isto afeta apenas drivers escravos) (Case 3279). O IOKit agora verifica a verso do driver para assegurar que o driver foi compilado com uma verso compatvel do IOKit (Case 3018). Implementada a opo Listen for connections on port na interface Ethernet. Drivers escravos via Ethernet agora so suportados (Case 3018). A interface RAS agora desconecta corretamente o soquete se receber uma sequncia de string NO CARRIER aps a conexo ter sido estabelecida (Case 2643). A aba Ethernet no permite que os parmetros de porta de IP sejam editados quando a interface RAS estiver selecionada (Case 2675).

1.06

2003-1218

F. Englert

1.05

2003-1127

F. Englert

1.04

2003-1027

F. Englert

1.03

2003-1009

Permite que %PROCESS% seja inserido no nome do arquivo de logs, para permitir que o ID do processo seja inserido no nome do arquivo. F. Englert 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). A interface RAS agora conecta com uma nica porta de IP (a porta especificada na aba Ethernet). O hardware RAS verificar se h um F. Englert modem disponvel e atribuir o modem ao soquete, ou ento negar conexo do soquete (Case 2656). A interface RAS agora desconecta o soquete se receber uma sequncia de string NO CARRIER F. Englert aps a conexo ter sido estabelecida (Case 2643) (Este recurso no funciona corretamente, utilize a verso 1.04).

1.02

2009-1007

1.01

2003-1006

Histric o de Revises

53

VERSO

DATA 2003-0811

AUTOR

COMENTRIOS Primeira verso. As seguintes opes de Ethernet ainda no foram implementadas: Ping , Backup address, UDP, Use new socket e Accept connection.

1.00

F. Englert

54

Histric o de Revises

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

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

USA 40190 Jarvis Gray Lane Avon - NC - USA 27915 Fone: (252) 995-6885 Fax: (252) 995-5686 E-mail: info@elipse-software.com

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

Consulte nosso website para informaes sobre o representante do seu estado.

w w w .elipse.c om.br elipse@elipse.c om.br

You might also like