Ir para conteúdo
Fórum Script Brasil
  • 0

Trabalhar Com Porta USB/LPT


Evandro

Pergunta

Pessoal, Estou Bolando um Projeto, mas para isso o computador vai interagir com um protótipo criado por mim, essa interface de comunicação entre PC e o protótipo será a porta USB, ou em ultimo caso a LPT, mas alguém sabe como, no meu programa em C, trabalho com essas portas?

Procurei na internet, mas tá complicado achar algo bem explicado, se alguém puder me ensinar, ou dar diretrizes, seria de grande valia, preferencialmente USB, mas em ultimo caso LPT.

Abraços :lol:

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá Evandro, ainda não sei com USB mas com LPT "win xp" veja o código:

"OBS.: o código a seguir é em c++ 'que estou tentando aprender no momento' então não garanto que vai funcionar sem alterações mas espero que o ajude"

#include <windows.h>

typedef short _stdcall (*PtrInp)(short EndPorta);
typedef void _stdcall (*PtrOut)(short EndPorta, short valor);

int main(){

    // Parte onde utlizamos a dll...
    HINSTANCE hLib;                            // Instância para a DLL inpout32.dll
    hLib = LoadLibrary("inpout32.dll");    // Carrega a DLL na memória
    PtrInp inportb;                            // Instância para a função Imp32() 
    PtrOut outportb;                           // Instância para a função Out32()    
    if(hLib == NULL){ // Verifica se houve erro.
        printf("Erro. O arquivo inpout32.dll não foi encontrado.\n");
        getch();
        return -1;
    }
    inportb = (PtrInp) GetProcAddress(hLib, "Inp32"); // Obtém o endereço da função Inp32 contida na DLL.
    if(inportb == NULL){ // Verifica se houve erro.
        printf("Erro. A função Inp32 não foi encontrada.\n");
        getch();
        return -1;
    }
    outportb = (PtrOut) GetProcAddress(hLib, "Out32"); // Obtém o endereço da função Out32 contida na DLL.
    if(outportb == NULL){ // Verifica se houve erro.
        printf("Erro. A função Out32 não foi encontrada.\n");
        getch();
        return -1;
    }
    // Fim da parte dll, agora é só utilizar as funções.
    
    struct PortaParalela{
        unsigned char Dados;
        unsigned char Status;
        unsigned char Controle;
    };
    
    struct PortaParalela LPT;

    // Para status das saídas...
    LPT.Status = inportb( 0x778 );
            .
            .
            .
    // Para envio...
    outportb( 0x378, 1 ); // Aciona D0 ou pino 2
    outportb( 0x378, 2 ); // Aciona D1 ou pino 3
    outportb( 0x378, 4 ); // Aciona D2 ou pino 4
            .
            .
            .
    outportb( 0x378, 128 ); // Aciona D7 ou pino 9

    // Para status das entradas...
    LPT.Status = inportb( 0x779 ); // Lê a Porta Paralela, pinos 10, 11, 12, 13 e 15
            .
            .
            .

    FreeLibrary(hLib); // Para liberar a memória alocada pela DLL.
            .
            .
            .

Você deverá baixar a dll inpout32.dll para obter acesso a porta e verificar os valores E/S de seu Computador em gerenciador de dispositivos/portas COM & LPT/LPT/recursos/intervalo de E/S

Observe que no meu caso os valores foram 378/778 = saída/status saídas e 779 = status entradas.

Dê uma olhada em rogercom.com e codeproject.com, são SHOW DE BOLA! Very detalhes! A sim, conseguindo USB, posta aí pra galera! :D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...