Eu escrevi um codigo em C++ para controlar a porta paralela, bom compilei o codigo e ele funcionou perfeitamente acendendo todas as luzes que eu queria no prototipo de LED´s que eu faz para porta LPT.
Porem , quando fui testar meu programa nem outros computadores, o windows não quia nem iniciar o programa ele dava um erro, o mesmo erro ocorreu em mais de 10 pcs com windows XP, que é o mesmo que o meu.
Eu sei que meu codigo carrega uma DLL, quando fui testar nos outros pc levei essa DLL tambem e a coloquei junto ao programa e na pasta C:\windows tambem.
O que será que está dando errado???, sera que está faltando algum arquivo que meu computador possui???
Pergunta
invent
Fala galera, bom vou contar meu problema.
Eu escrevi um codigo em C++ para controlar a porta paralela, bom compilei o codigo e ele funcionou perfeitamente acendendo todas as luzes que eu queria no prototipo de LED´s que eu faz para porta LPT.
Porem , quando fui testar meu programa nem outros computadores, o windows não quia nem iniciar o programa ele dava um erro, o mesmo erro ocorreu em mais de 10 pcs com windows XP, que é o mesmo que o meu.
Eu sei que meu codigo carrega uma DLL, quando fui testar nos outros pc levei essa DLL tambem e a coloquei junto ao programa e na pasta C:\windows tambem.
O que será que está dando errado???, sera que está faltando algum arquivo que meu computador possui???
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <dos.h> //Para saida
#include <windows.h> // Necessário para: LoadLibrary(), GetProcAddress() e HINSTANCE
using namespace std;
#define LPT1_DATA 0X378 //define o endereço da porta paralela para envio de dados
#define LPT1_STATUS 0X379 //define o endereço da porta paralela leiura de status
//Cria os ponteiros para armazenar o endereço das funções Int32 e Out32 da DLL
typedef short (_stdcall *PtrImp)(short EndPorta);
typedef void (_stdcall *PtrOut)(short EndPorta, short valor);
PtrImp inportb; //Instância para a função Imp32()
PtrOut outportb; //Instância para a função Out32()
//Declara as funções Int32 e Out32 para as funções de retorno outportb e inportb
short Inp32 (short EndPorta)
{
return (inportb)(EndPorta);
}
void Out32 (short EndPorta, short valor)
{
(outportb)(EndPorta,valor);
}
int main(int argc, char *argv[])
{
//--------Procedimentos para a definir as funções de I/O-----------------------------------------------------------------
HINSTANCE hLib ;
hLib = LoadLibrary(_T("inpout32.dll")); // Carrega a DLL, _T() é nescessario para o Visual C++ =]
if (hLib == NULL)// Verifica erro no carregamento da DLL
{
cout << "Erro. DLL 'inpout32.dll' não pode ser carregada\n";
return -1;
}
//Pega endereço da função Inp32 contida na DLL e joga em inportb.
inportb = (PtrImp) GetProcAddress(hLib, "Inp32");
if (inportb == NULL) // Verifica erro na busca da função
{
cout << "Erro. Imposivel encontrar a função Inp32.\n";
return -1;
}
//Pega endereço da função Out32 contida na DLL e joga em inportb.
outportb = (PtrOut) GetProcAddress(hLib, "Out32");
if (outportb == NULL) {
cout << "Erro. Imposivel encontrar a função Out32.\n";
return -1;
}
//-------------------------------------------------------------------------------------------------------------------------
int envio, leitura;
// Caso os parametros sejam incorretos encerra o programa, o programa permite 1 parametro somente
if (argc < 2)
{
cout << "O programa aceita somente de 0 a 256\n";
cout << "Modo de uso: " << argv[0] << " <parametro de byte> \n";
return 1;
}
// Converte o parametro de string para inteiro
envio = atoi(argv[1]);
outportb(LPT1_DATA, envio);
cout << envio;
return 0;
}
OBS: Uso Visual c++
Agradeço desdejá a ajuda
Editado por inventLink para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
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.