SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: leslimix en Miércoles 16 de Junio de 2004, 20:49

Título: Comunicacion Del Puerto Paralelo En Win98
Publicado por: leslimix en Miércoles 16 de Junio de 2004, 20:49
Necesito ayuda con respecto a las funciones PortIn y PortOut para manejar el motor de un aparato llamado difractometro de rayos X, gracias...
P.D.- Enviar respuesta lo antes posible...
Título: Re: Comunicacion Del Puerto Paralelo En Win98
Publicado por: Eternal Idol en Miércoles 16 de Junio de 2004, 20:54
Si estas tratando de tener acceso directo al hardware eso es imposible en el anillo 3 (de usuario). Debes estar tratando de usar un código diseñado originalmente para 16 bit (MS-DOS) en un entorno de 32 bits (Windows), verdad?

http://silverstr.ufies.org/lotr0/terminology.html (http://silverstr.ufies.org/lotr0/terminology.html)

http://silverstr.ufies.org/lotr0/ (http://silverstr.ufies.org/lotr0/)

Buscá información, para usar el puerto que quieras en Windows haces CreateFile() ya sea con COM1, COM2, LPT, etc.

 :ph34r:  :hola:  :comp:
Título: Re: Comunicacion Del Puerto Paralelo En Win98
Publicado por: leslimix en Miércoles 16 de Junio de 2004, 21:00
Para ser clara necesito manipular el puerto paralelo  para controlar el motor que mueve el brazo de un parato llamado difractometro de rayos x, este codigo que te envio es el que tengo me falta controlar la entrada fijate bien como hice el codigo: esta pantalla es simple mando la salida y eso mueve el motor, pero  cuando quiero crear otro formulario pues para definir a que el brazo se vcaya a un angulo especifico me da errores de PortIn, que no entiendo que hacer .....

#include <vcl\vcl.h>
#pragma hdrstop
#include "Formbar.h"
#include "io.h"
#include "Angulo.h"
HMODULE hio;
int paso=1,sentido=0;

//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TForbarrido *Forbarrido;
//---------------------------------------------------------------------------
__fastcall TForbarrido::TForbarrido(TComponent* Owner)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForbarrido::FormCreate(TObject *Sender)
{
    hio=LoadLibrary("io");
    PortOut=(PORTOUT)GetProcAddress(hio,"PortOut");
    PortIn=(PORTIN)GetProcAddress(hio,"PortIn");

}
//---------------------------------------------------------------------------
void __fastcall TForbarrido::Button1Click(TObject *Sender)
{
  PortOut(0x378,atoi(txtpaso1->Text.c_str()));
 
}
//---------------------------------------------------------------------------
void __fastcall TForbarrido::Button2Click(TObject *Sender)
{
  PortOut(0x378,atoi(txtpaso2->Text.c_str()));   
}
//---------------------------------------------------------------------------
void __fastcall TForbarrido::Button3Click(TObject *Sender)
{
  PortOut(0x378,atoi(txtpaso3->Text.c_str()));   
}
//---------------------------------------------------------------------------
void __fastcall TForbarrido::Button4Click(TObject *Sender)
{
  PortOut(0x378,atoi(txtpaso4->Text.c_str()));
}
//---------------------------------------------------------------------------
void __fastcall TForbarrido::Button5Click(TObject *Sender)
{
  TMpaso->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForbarrido::TMpasoTimer(TObject *Sender)
{
    switch (paso)
        {
          case 1: paso=2;
                  PortOut(0x378,atoi(txtpaso1->Text.c_str()));
                  break;
          case 2: paso=3;
                  PortOut(0x378,atoi(txtpaso2->Text.c_str()));
                  break;
          case 3: paso=4;
                  PortOut(0x378,atoi(txtpaso3->Text.c_str()));
                  break;
          case 4: paso=1;
                  PortOut(0x378,atoi(txtpaso4->Text.c_str()));
                  break;
        }
}
//---------------------------------------------------------------------------
void __fastcall TForbarrido::Button6Click(TObject *Sender)
{
 TMpaso->Enabled=false;
}
//------------------------------
Título: Re: Comunicacion Del Puerto Paralelo En Win98
Publicado por: Eternal Idol en Miércoles 16 de Junio de 2004, 21:01
Lee mi anterior mensaje, no podes hacer eso en Windows, ese código SEGURO que fue diseñado para DOS.

 :ph34r:  :comp:  :hola:
Título: Re: Comunicacion Del Puerto Paralelo En Win98
Publicado por: leslimix en Miércoles 16 de Junio de 2004, 21:08
Ya lo corri bajo windows 98 y sirve corriendo el .exe de borland c++ builder lo q necesito es como sabes en que angulo me encuentro o sea leer el puerto de  entrada porque ya mando para la salida del puerto, me explique?????, gracias pero tu respuesta no me ayuda en nada, hay un programa que uso bajo ms dos que se llama qmodem que se parece al hipe terminal de windows, pero no me sirve quiero uno creado en borland para hacer la interfaz grafica del difractometro mediante la comucacion paralelo-serial, por favor si tienes alguna informacion te lo agradeceria, hasta pronto...
Título: Re: Comunicacion Del Puerto Paralelo En Win98
Publicado por: Eternal Idol en Jueves 17 de Junio de 2004, 00:03
Ya te dejé links con información y te dije como usar el puerto paralelo en Windows en mi primera respuesta:

http://silverstr.ufies.org/lotr0/terminology.html (http://silverstr.ufies.org/lotr0/terminology.html)

http://silverstr.ufies.org/lotr0/ (http://silverstr.ufies.org/lotr0/)

Buscá información, para usar el puerto que quieras en Windows haces CreateFile() ya sea con COM1, COM2, LPT, etc.