![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
![]() 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
|
#2
|
||||
|
||||
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. ![]() |
#3
|
|||
|
|||
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_dcb ![]() 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_enviado ![]() 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_leido ![]() 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... |
#4
|
|||
|
|||
Hola a todos
He utilizado el ejemplo de l compañero RABATA Cita:
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 |
#5
|
||||
|
||||
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. ![]() |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
|