SoloCodigo
Programación General => C/C++ => C++ Builder => Mensaje iniciado 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...
-
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:
-
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;
}
//------------------------------
-
Lee mi anterior mensaje, no podes hacer eso en Windows, ese código SEGURO que fue diseñado para DOS.
:ph34r: :comp: :hola:
-
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...
-
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.