SlideShare uma empresa Scribd logo
1 de 6
Baixar para ler offline
Controle de dispositivos externos através da porta paralela utilizando C#
Publicado em: 03/02/2004
Em nosso artigo vamos aprender a controlar dispositivos externos, através da porta paralela do
PC, utilizando a linguaguem C#. Esses dispositivos podem ser desde de simples leds até motores
e máquinas de potência.
Antes de começarmos precisamos entender alguns conceitos importantes.
Porta Paralela
Modos de Operação
A porta paralela atualmente possui três modos de operações. São eles:
SPP – bits de dados unidirecional
EPP – bits de dados biderecional
ECP – bits de dados bidericional
Estes modos de operação são configurados pelo BIOS Setup.
A diferença entre EPP e ECP é que esta última utiliza DMA(acesso direto a memória).
Endereços da Porta Paralela
Para enviarmos ou recebermos dados da porta paralela precisamos saber o seu endereço base.
Nome da Porta no SO Endereço
LPT1 378 hexadecimal / 888 decimal
LPT2 278 hexadecimal / 632 decimal
Pinagem
Pinagem da porta paralela DB-25.
A pinagem no conector DB25 é dividida em três grupo, são eles:
1. Pinos de Dados (Data Register)
2. Pinos de Controle (Control Register)
3. Pinos de Status (Status Register)
Em nosso projeto utilizaremos apenas os pinos de dados (D0 a D7) para controlar dispositivos
externos. E como estaremos apenas enviando sinal de saída (unidirecinoal), o projeto funcionará
independente do modo de operação definido no BIOS Setup.
Observe também que D0 a D7 representam 8 bits (1 byte). Então o valor de saída pode variar
entre 00000000 (0 decimal) e 11111111(255 decimal).
Software
Bem, agora que já temos um embasamento técnico sobre o hardware da porta paralela, iremos
nos concentrar no software que irá controlá-la.
Nos sistemas operacionais da família Windows 9x , a maioria das linguagens de programação
acessavam com facilidade a porta paralela através de funções nativas da própria linguagem ou
via código assembler.
Sistemas operacionais como o Windows NT/2000/XP não permitem o acesso direto a este tipo de
porta. Nesse caso é necessário um driver de sistema.
Para contornar este problema usaremos a Inpout32.dll que pode ser adquirida em
http://www.logix4u.net/.
Veja o funcionamente básico da Inpout32.dll na figura abaixo:
A Inpout32.dll possui duas funcões: Out32 e Inp32. A primeira para escrever um valor (byte)
num endereço de I/O e a segunda para ler um valor (byte) de um endereço de I/O.
Como não se trata de uma dll .NET devemos utilizá-la como Código Não-Gerenciado (UnManage
Code).
Aplicativo
Vamos então ao nosso software. Inicie o VS.NET e crie uma nova aplicação C# Windows Forms.
Vamos então criar uma classe de nome Paralela.cs para manipular a dll. Veja figura abaixo.
Escreva o seguinte código para a classe:
using System;
using System.Runtime.InteropServices;
namespace automacao
{
/// <summary>
/// Summary description for Paralela.
/// </summary>
public class Paralela
{
// Escreve um byte no endereço
[DllImport("Inpout32.dll", EntryPoint="Out32")]
public static extern void Escrever(int endereco, byte valor);
// Lê um byte do endereço
[DllImport("Inpout32.dll", EntryPoint="Inp32")]
public static extern byte Ler(int endereco);
}
}
Não esqueça de declarar o namespace que permite a utilização de dlls não gerenciadas.
using System.Runtime.InteropServices;
Embora o nosso projeto utilize apenas o método de escrita (enviar dados para um dispositvo
externo), decidi importar também o método de leitura. Então nossa classe possuirá dois métodos
estáticos que são:
public static extern void Escrever(int endereco, byte valor);
public static extern byte Ler(int endereco);
Como deu pra perceber os endereços são do tipo inteiro e o valor escrito/lido do tipo byte. Dessa
forma podemos garantir que o valor lido/escrito estará sempre entre 0 e 255.
Agora vamos retornar ao nosso formulário e deixá-lo conforme a figura abaixo:
Vamos definir o seguinte código para o botão Escrever:
private void btnEscrever_Click(object sender, System.EventArgs e)
{
int endereco = Convert.ToInt32(txtEndereco.Text.Trim(), 16);
byte dados = Convert.ToByte(txtDados.Text.Trim(), 2);
Paralela.Escrever(endereco,dados);
MessageBox.Show("O byte " + txtDados.Text.Trim() +
" foi enviado para o endereço " + txtEndereco.Text.Trim()
, "Automação");
}
Observe que utilizamos os métodos estáticos da classe Convert para converter os valores
fornecidos para inteiro e byte.
Pronto! Com isso nossa aplicação já está pronta para enviar dados para a porta paralela. Para
testarmos nossa aplicação vamos construir um hardware bem simples.
Hardware
Como o nosso objetivo é apenas didático, iremos montar um circuito com 8 leds que serão
acionados de acordo com a saída de dados de nossa aplicação. Observe que nada impede de
utilizarmos um circuito com relés para acionar dispositivos mais potentes. Aconselho a pedir a
ajuda de um técnico caso você não possua conhecimentos em eletrônica suficientes para montar
o circuito. Se não desejar montar o circuito você poderá medir com um multímetro os valores de
tensão diretamente nos pinos da porta paralela. Onde:
0 = 0 Volts
1 = 5 Volts
Circuito
Componentes
8 Resistores de 470R
8 LEDs
1Conector DB25 macho
Cabos, placa, etc...
Exemplos do circuito montado:
1 – Circuito montado numa matriz de contato
2 – Circuito montado dentro do conector do cabo paralelo
Atenção. A autor do artigo não se responsabiliza por qualquer dano que venha a ocorrer
à porta paralela ou ao PC, utilizando o projeto apresentado ou pelo manuseio indevido
dos mesmos.
Autor: Eric Cavalcanti

Mais conteúdo relacionado

Destaque

Csharp ebook
Csharp ebookCsharp ebook
Csharp ebookTiago
 
Apostila gnulinux modulo_1__introducao
Apostila gnulinux modulo_1__introducaoApostila gnulinux modulo_1__introducao
Apostila gnulinux modulo_1__introducaoTiago
 
6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascalTiago
 
Apresentacao Linux módulo 1
Apresentacao Linux módulo 1Apresentacao Linux módulo 1
Apresentacao Linux módulo 1Tiago
 
Screen
ScreenScreen
ScreenTiago
 
Linhas de transmissão
Linhas de transmissãoLinhas de transmissão
Linhas de transmissãoTiago
 
Hardware
HardwareHardware
HardwareTiago
 
Montagem de computadores
Montagem de computadoresMontagem de computadores
Montagem de computadoresTiago
 
Shell script
Shell scriptShell script
Shell scriptTiago
 
Apostila cdtc dotproject
Apostila cdtc dotprojectApostila cdtc dotproject
Apostila cdtc dotprojectTiago
 
C# o basico
C#   o basicoC#   o basico
C# o basicoTiago
 
Curso linux professor rafael
Curso linux professor rafaelCurso linux professor rafael
Curso linux professor rafaelTiago
 
C# classes
C#   classesC#   classes
C# classesTiago
 
Aspectos transistores
Aspectos transistoresAspectos transistores
Aspectos transistoresTiago
 
036 programando para-web-com-php-e-mysql
036 programando para-web-com-php-e-mysql036 programando para-web-com-php-e-mysql
036 programando para-web-com-php-e-mysqlTiago
 
Configurando uma rede local com acesso internet
Configurando uma rede local com acesso  internetConfigurando uma rede local com acesso  internet
Configurando uma rede local com acesso internetTiago
 
Foca iniciante
Foca inicianteFoca iniciante
Foca inicianteTiago
 

Destaque (18)

Csharp ebook
Csharp ebookCsharp ebook
Csharp ebook
 
Squid
SquidSquid
Squid
 
Apostila gnulinux modulo_1__introducao
Apostila gnulinux modulo_1__introducaoApostila gnulinux modulo_1__introducao
Apostila gnulinux modulo_1__introducao
 
6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal
 
Apresentacao Linux módulo 1
Apresentacao Linux módulo 1Apresentacao Linux módulo 1
Apresentacao Linux módulo 1
 
Screen
ScreenScreen
Screen
 
Linhas de transmissão
Linhas de transmissãoLinhas de transmissão
Linhas de transmissão
 
Hardware
HardwareHardware
Hardware
 
Montagem de computadores
Montagem de computadoresMontagem de computadores
Montagem de computadores
 
Shell script
Shell scriptShell script
Shell script
 
Apostila cdtc dotproject
Apostila cdtc dotprojectApostila cdtc dotproject
Apostila cdtc dotproject
 
C# o basico
C#   o basicoC#   o basico
C# o basico
 
Curso linux professor rafael
Curso linux professor rafaelCurso linux professor rafael
Curso linux professor rafael
 
C# classes
C#   classesC#   classes
C# classes
 
Aspectos transistores
Aspectos transistoresAspectos transistores
Aspectos transistores
 
036 programando para-web-com-php-e-mysql
036 programando para-web-com-php-e-mysql036 programando para-web-com-php-e-mysql
036 programando para-web-com-php-e-mysql
 
Configurando uma rede local com acesso internet
Configurando uma rede local com acesso  internetConfigurando uma rede local com acesso  internet
Configurando uma rede local com acesso internet
 
Foca iniciante
Foca inicianteFoca iniciante
Foca iniciante
 

Semelhante a Controle lpt em_c_sharp

Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresLuis Ferreira
 
Geração de código linguagem c
Geração de código   linguagem cGeração de código   linguagem c
Geração de código linguagem cJefferson Bessa
 
Slide - Introdução ao Arduino e Sensores.pdf
Slide - Introdução ao Arduino e Sensores.pdfSlide - Introdução ao Arduino e Sensores.pdf
Slide - Introdução ao Arduino e Sensores.pdfHenrique Alves
 
Workshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetWorkshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetFabio Souza
 
Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Marcelo Charan
 
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...tdc-globalcode
 
Aula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdfAula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdfDeboraMateus3
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoJorge Cardoso
 
Sistemas logicos programaveis
Sistemas logicos programaveisSistemas logicos programaveis
Sistemas logicos programaveislaritha
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Cisco Packet Tracer
Cisco Packet TracerCisco Packet Tracer
Cisco Packet Tracermaykon-26
 
LabMM3 - Exercício de revi
LabMM3 - Exercício de reviLabMM3 - Exercício de revi
LabMM3 - Exercício de reviCarlos Santos
 

Semelhante a Controle lpt em_c_sharp (20)

Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Geração de código linguagem c
Geração de código   linguagem cGeração de código   linguagem c
Geração de código linguagem c
 
Corpo relatorio
Corpo relatorioCorpo relatorio
Corpo relatorio
 
Slide - Introdução ao Arduino e Sensores.pdf
Slide - Introdução ao Arduino e Sensores.pdfSlide - Introdução ao Arduino e Sensores.pdf
Slide - Introdução ao Arduino e Sensores.pdf
 
Apostila de-arduino
Apostila de-arduinoApostila de-arduino
Apostila de-arduino
 
ptt
pttptt
ptt
 
Workshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetWorkshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da Internet
 
Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Redes 1 - Sockets em C#
Redes 1 - Sockets em C#
 
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
 
Aula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdfAula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdf
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de Programacao
 
Sistemas logicos programaveis
Sistemas logicos programaveisSistemas logicos programaveis
Sistemas logicos programaveis
 
3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino
 
Oficina Arduino
Oficina ArduinoOficina Arduino
Oficina Arduino
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Cap07
Cap07Cap07
Cap07
 
Cap07
Cap07Cap07
Cap07
 
Cisco Packet Tracer
Cisco Packet TracerCisco Packet Tracer
Cisco Packet Tracer
 
LabMM3 - Exercício de revi
LabMM3 - Exercício de reviLabMM3 - Exercício de revi
LabMM3 - Exercício de revi
 

Mais de Tiago

Programacao php moodle
Programacao php moodleProgramacao php moodle
Programacao php moodleTiago
 
Guia rapido de_pascal
Guia rapido de_pascalGuia rapido de_pascal
Guia rapido de_pascalTiago
 
Python bge
Python bgePython bge
Python bgeTiago
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 pythonTiago
 
Threading in c_sharp
Threading in c_sharpThreading in c_sharp
Threading in c_sharpTiago
 
Retirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpRetirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpTiago
 
Remover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpRemover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpTiago
 
Obter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpObter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpTiago
 
Metodo using no_c_sharp
Metodo using no_c_sharpMetodo using no_c_sharp
Metodo using no_c_sharpTiago
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantesTiago
 
Interfaces windows em c sharp
Interfaces windows em c sharpInterfaces windows em c sharp
Interfaces windows em c sharpTiago
 
Filestream sistema arquivos
Filestream  sistema arquivosFilestream  sistema arquivos
Filestream sistema arquivosTiago
 
Curso de shell
Curso de shellCurso de shell
Curso de shellTiago
 
Classes csharp
Classes csharpClasses csharp
Classes csharpTiago
 
Curso de shell
Curso de shellCurso de shell
Curso de shellTiago
 
Fatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programarFatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programarTiago
 
Webdesign idepac
Webdesign idepacWebdesign idepac
Webdesign idepacTiago
 
Introdução a Multimídia
Introdução a MultimídiaIntrodução a Multimídia
Introdução a MultimídiaTiago
 

Mais de Tiago (20)

Programacao php moodle
Programacao php moodleProgramacao php moodle
Programacao php moodle
 
Guia rapido de_pascal
Guia rapido de_pascalGuia rapido de_pascal
Guia rapido de_pascal
 
Python bge
Python bgePython bge
Python bge
 
Curso python
Curso pythonCurso python
Curso python
 
Curso python
Curso pythonCurso python
Curso python
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 
Threading in c_sharp
Threading in c_sharpThreading in c_sharp
Threading in c_sharp
 
Retirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpRetirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharp
 
Remover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpRemover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharp
 
Obter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpObter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharp
 
Metodo using no_c_sharp
Metodo using no_c_sharpMetodo using no_c_sharp
Metodo using no_c_sharp
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantes
 
Interfaces windows em c sharp
Interfaces windows em c sharpInterfaces windows em c sharp
Interfaces windows em c sharp
 
Filestream sistema arquivos
Filestream  sistema arquivosFilestream  sistema arquivos
Filestream sistema arquivos
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
Classes csharp
Classes csharpClasses csharp
Classes csharp
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
Fatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programarFatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programar
 
Webdesign idepac
Webdesign idepacWebdesign idepac
Webdesign idepac
 
Introdução a Multimídia
Introdução a MultimídiaIntrodução a Multimídia
Introdução a Multimídia
 

Último

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...SileideDaSilvaNascim
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxgia0123
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...MariaCristinaSouzaLe1
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfFbioFerreira207918
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfJuliana Barbosa
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasrfmbrandao
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdLeonardoDeOliveiraLu2
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeLEONIDES PEREIRA DE SOUZA
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubeladrianaguedesbatista
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Centro Jacques Delors
 

Último (20)

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptx
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdf
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidade
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 

Controle lpt em_c_sharp

  • 1. Controle de dispositivos externos através da porta paralela utilizando C# Publicado em: 03/02/2004 Em nosso artigo vamos aprender a controlar dispositivos externos, através da porta paralela do PC, utilizando a linguaguem C#. Esses dispositivos podem ser desde de simples leds até motores e máquinas de potência. Antes de começarmos precisamos entender alguns conceitos importantes. Porta Paralela Modos de Operação A porta paralela atualmente possui três modos de operações. São eles: SPP – bits de dados unidirecional EPP – bits de dados biderecional ECP – bits de dados bidericional Estes modos de operação são configurados pelo BIOS Setup. A diferença entre EPP e ECP é que esta última utiliza DMA(acesso direto a memória). Endereços da Porta Paralela Para enviarmos ou recebermos dados da porta paralela precisamos saber o seu endereço base. Nome da Porta no SO Endereço LPT1 378 hexadecimal / 888 decimal LPT2 278 hexadecimal / 632 decimal Pinagem Pinagem da porta paralela DB-25. A pinagem no conector DB25 é dividida em três grupo, são eles: 1. Pinos de Dados (Data Register) 2. Pinos de Controle (Control Register) 3. Pinos de Status (Status Register)
  • 2. Em nosso projeto utilizaremos apenas os pinos de dados (D0 a D7) para controlar dispositivos externos. E como estaremos apenas enviando sinal de saída (unidirecinoal), o projeto funcionará independente do modo de operação definido no BIOS Setup. Observe também que D0 a D7 representam 8 bits (1 byte). Então o valor de saída pode variar entre 00000000 (0 decimal) e 11111111(255 decimal). Software Bem, agora que já temos um embasamento técnico sobre o hardware da porta paralela, iremos nos concentrar no software que irá controlá-la. Nos sistemas operacionais da família Windows 9x , a maioria das linguagens de programação acessavam com facilidade a porta paralela através de funções nativas da própria linguagem ou via código assembler. Sistemas operacionais como o Windows NT/2000/XP não permitem o acesso direto a este tipo de porta. Nesse caso é necessário um driver de sistema. Para contornar este problema usaremos a Inpout32.dll que pode ser adquirida em http://www.logix4u.net/. Veja o funcionamente básico da Inpout32.dll na figura abaixo: A Inpout32.dll possui duas funcões: Out32 e Inp32. A primeira para escrever um valor (byte) num endereço de I/O e a segunda para ler um valor (byte) de um endereço de I/O. Como não se trata de uma dll .NET devemos utilizá-la como Código Não-Gerenciado (UnManage Code). Aplicativo Vamos então ao nosso software. Inicie o VS.NET e crie uma nova aplicação C# Windows Forms.
  • 3. Vamos então criar uma classe de nome Paralela.cs para manipular a dll. Veja figura abaixo. Escreva o seguinte código para a classe: using System; using System.Runtime.InteropServices; namespace automacao { /// <summary> /// Summary description for Paralela. /// </summary> public class Paralela { // Escreve um byte no endereço [DllImport("Inpout32.dll", EntryPoint="Out32")] public static extern void Escrever(int endereco, byte valor);
  • 4. // Lê um byte do endereço [DllImport("Inpout32.dll", EntryPoint="Inp32")] public static extern byte Ler(int endereco); } } Não esqueça de declarar o namespace que permite a utilização de dlls não gerenciadas. using System.Runtime.InteropServices; Embora o nosso projeto utilize apenas o método de escrita (enviar dados para um dispositvo externo), decidi importar também o método de leitura. Então nossa classe possuirá dois métodos estáticos que são: public static extern void Escrever(int endereco, byte valor); public static extern byte Ler(int endereco); Como deu pra perceber os endereços são do tipo inteiro e o valor escrito/lido do tipo byte. Dessa forma podemos garantir que o valor lido/escrito estará sempre entre 0 e 255. Agora vamos retornar ao nosso formulário e deixá-lo conforme a figura abaixo: Vamos definir o seguinte código para o botão Escrever: private void btnEscrever_Click(object sender, System.EventArgs e) { int endereco = Convert.ToInt32(txtEndereco.Text.Trim(), 16); byte dados = Convert.ToByte(txtDados.Text.Trim(), 2); Paralela.Escrever(endereco,dados); MessageBox.Show("O byte " + txtDados.Text.Trim() + " foi enviado para o endereço " + txtEndereco.Text.Trim() , "Automação"); } Observe que utilizamos os métodos estáticos da classe Convert para converter os valores fornecidos para inteiro e byte. Pronto! Com isso nossa aplicação já está pronta para enviar dados para a porta paralela. Para testarmos nossa aplicação vamos construir um hardware bem simples. Hardware Como o nosso objetivo é apenas didático, iremos montar um circuito com 8 leds que serão acionados de acordo com a saída de dados de nossa aplicação. Observe que nada impede de utilizarmos um circuito com relés para acionar dispositivos mais potentes. Aconselho a pedir a ajuda de um técnico caso você não possua conhecimentos em eletrônica suficientes para montar
  • 5. o circuito. Se não desejar montar o circuito você poderá medir com um multímetro os valores de tensão diretamente nos pinos da porta paralela. Onde: 0 = 0 Volts 1 = 5 Volts Circuito Componentes 8 Resistores de 470R 8 LEDs 1Conector DB25 macho Cabos, placa, etc... Exemplos do circuito montado: 1 – Circuito montado numa matriz de contato 2 – Circuito montado dentro do conector do cabo paralelo
  • 6. Atenção. A autor do artigo não se responsabiliza por qualquer dano que venha a ocorrer à porta paralela ou ao PC, utilizando o projeto apresentado ou pelo manuseio indevido dos mesmos. Autor: Eric Cavalcanti