Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-03-2004
daseretto daseretto is offline
Registrado
 
Registrado: mar 2004
Posts: 1
Poder: 0
daseretto Va por buen camino
Unhappy Lectura Escritura de puertos

Quisiera saber como comunicarme con un dispositivo electronico a travez de los puertos si es posible con visual c++6 o si no diganme con que puedo hacerlo
Responder Con Cita
  #2  
Antiguo 22-03-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.955
Poder: 28
delphi.com.ar Va camino a la fama
Seguramente haya paquetes de herramientas para trabajar en forma sencilla con esto, pero sinó puedes utilizar las herramientas que te proporciona el sistema operativo, como la winapi CreateFile

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 22-03-2004
Rabata Rabata is offline
Miembro
 
Registrado: jul 2003
Posts: 167
Poder: 22
Rabata Va por buen camino
yo he utilizado en varios lenguajes la SDK y me funciona perfectamente, como bien ha dicho delphi.com.ar, la ayuda de las sdk la puedes encontrar en delphi, esto es un paquete de librerías del kernell de windows.

Te mando lo k yo hice para un proyecto en delphi k me comunicaba con una pistola de rf con el puerto serie, para k te funcione pasalas a C

Const
SERIAL_COM = '19200,n,8,1';
// Te acopnsejo k la configuración del puerto sea variable por ejemplo la puedes leer de un ini o base de datos


var
Serial_Handle:THandle;
// Esto nos devuelve el numero de identificación para comunicarnos con el puerto

Procedure Abrir_Puerto_Serie();
Var
status:Integer;
temp_dcbcb;
time_out:COMMTIMEOUTS;
begin

// +GENERIC_WRITE
serial_handle:=CreateFile('COM1',GENERIC_READ Or GENERIC_write ,0, 0, OPEN_EXISTING, 0, 0);
// serial_handle:=CreateFile('COM1',GENERIC_READ Or GENERIC_write ,0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NOTRMAL,0);

IF (serial_handle=INVALID_HANDLE_VALUE) THEN
Begin
ShowMessage('Error Open Serial Port');
closehandle(serial_handle);
status := -1;
End
Else
IF GetCommState(serial_handle, temp_dcb) THEN
Begin
BuildCommDCB(SERIAL_COM,temp_dcb);
IF SetCommState(serial_handle, temp_dcb) THEN
Begin
time_out.readintervaltimeout := 20;
time_out.readtotaltimeoutmultiplier := 2;
time_out.readtotaltimeoutconstant := 50;
time_out.writetotaltimeoutmultiplier := 2;
time_out.writetotaltimeoutconstant := 50;
IF SetCommTimeouts(serial_handle, time_out) THEN
status := 0
Else
Begin
ShowMessage('Error Open Serial Port');
status := -6;
//done()
End;
End
Else
Begin
status := -5;
//done()
End;
End
Else
Begin
ShowMessage('Error Open Serial Port');
status := -4;
// done()
End;
end;



Function Escribir_Puerto_Serie(as_cadena:String):Boolean;
Var
li_longitud:Integer;
li_enviadoWord;
lb_Write:Boolean;
Begin

li_longitud := Length(as_cadena);

lb_write := WriteFile(serial_handle, as_cadena, li_longitud, li_enviado, nil);

If Not lb_write Then
Begin
Showmessage('Error Write Puerto Serie');
result:=False;
End;

IF li_longitud <> li_enviado THEN
Begin
ShowMessage('Error en el envio de datos');
result:=False;
End;

result:=True;

End;



Function Leer_Puerto_Serie (ai_cantidad:Integer):String;
Var
lb_read:Boolean;
ls_cadena:String;
li_leidoWord;
Begin
//read_msg = Space(amount_to_read+1)

lb_read:=ReadFile(serial_handle, ls_cadena, ai_cantidad,li_leido,nil);

If not lb_read Then
ShowMessage('Error Read Puerto Serie');

IF li_leido = 0 THEN
Showmessage('No Hay Dato en el Puerto Serie');

Result:=ls_cadena;

end;


Usa las 3 funciones y espero k te sirven, pueden contener algún pekeño descuido pero nadie es perfecto....

Hasta luego...
Responder Con Cita
  #4  
Antiguo 19-04-2004
mrmanuel mrmanuel is offline
Miembro
 
Registrado: may 2003
Posts: 135
Poder: 23
mrmanuel Va por buen camino
Hola a todos

He utilizado el ejemplo de l compañero RABATA

Cita:
Empezado por Rabata

Function Escribir_Puerto_Serie(as_cadena:String):Boolean;

........
lb_write := WriteFile(serial_handle, as_cadena, li_longitud, li_enviado, nil);
........

y al compilar tengo un error en los marámetros diciendo que deben ser identicos. ¿?

he comprobado el tipo de los parametros y marece estar bien.

Gracias
__________________
Un Saludo a todos/as
Responder Con Cita
  #5  
Antiguo 19-04-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.955
Poder: 28
delphi.com.ar Va camino a la fama
No creo que el compilador se equivoque, nunca me ha sucedido, te recomiendo volver a ver y fijarte especialmente en los tipos de parámetros.

Otra opción válida es usar un TFileStream para escribir en un puerto.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:20:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi