Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-04-2008
zurdosoft zurdosoft is offline
Miembro
 
Registrado: may 2005
Ubicación: Villa Maria, Cordoba, Argentina
Posts: 16
Poder: 0
zurdosoft Va por buen camino
Leer puerto serie

En este caso realicé esta rutina porque necesitaba leer los datos devueltos de una balanza electrónica.
Es un extracto de una aplicación console que funciona en Windows XP y finalmente debe escribir un archivo con la lectura.
Se me ocurrió ponerla como Truco porque me parece extremadamente simple, sin instalar componentes de terceros, ni utilizar muchas rutinas de las API.
Código Delphi [-]
uses
  SysUtils,
  windows;

var Puerto,n:integer;
    Num:byte;
    Cad:string;
    Mode:DCB;
begin
  Puerto:=FileOpen('COM1',fmOpenRead);//Abre el puerto
  Mode.BaudRate := 1200;
  Mode.ByteSize := 8;
  Mode.Parity := NOPARITY;
  Mode.StopBits := ONESTOPBIT;
  SetCommState(Puerto, Mode); //Ajusta los parámetros
  // Los datos se repiten y terminan con #13(CR) 
  repeat
   repeat until FileRead(Puerto,Num,1)=1;
  until Num=13; // Final de cadena anterior
  Cad:='';
  for n := 1 to 8 do begin
   repeat until FileRead(Puerto,Num,1)=1;//lee un byte
   Cad:=Cad+chr(Num);
  end;
 write(Cad);//Muestra la lectura
 Sleep(1000); // Espera para poder ver el resultado
end.

Copien el código en una aplicación console, ajusten Mode a vuestras necesidades y prueben.

Je Je
Saludos


Responder Con Cita
  #2  
Antiguo 21-04-2008
candia candia is offline
Miembro
 
Registrado: abr 2008
Posts: 15
Poder: 0
candia Va por buen camino
hola
Responder Con Cita
  #3  
Antiguo 07-07-2008
JCarlosas JCarlosas is offline
Miembro
 
Registrado: abr 2006
Ubicación: Habana. Cuba
Posts: 103
Poder: 12
JCarlosas Va por buen camino
Seria interesante tener tambien un ejemplo de como escribir en el puerto serie, aunque supongo que sea como escribir a un archivo.
Muy interesante el codigo.
Responder Con Cita
  #4  
Antiguo 08-07-2008
zurdosoft zurdosoft is offline
Miembro
 
Registrado: may 2005
Ubicación: Villa Maria, Cordoba, Argentina
Posts: 16
Poder: 0
zurdosoft Va por buen camino
Efectivamente JCarlosas, es del mismo modo, lo que no hace es confirmar la recepcion OK.
Puede que con una rutina de control se pueda realizar, donde el receptor envie una señal de recibido.
Esto es lo que probe:


[delphi]
uses
SysUtils,
windows;

var Puerto,n:integer;
Num, Res:byte;
Cad:string;
Mode:DCB;
begin
Puerto:=FileOpen('COM1',fmOpenReadWrite);//Abre el puerto
Mode.BaudRate := 1200;
Mode.ByteSize := 8;
Mode.Parity := NOPARITY;
Mode.StopBits := ONESTOPBIT;
SetCommState(Puerto, Mode); //Ajusta los parámetros
Num:=253; // Dato a enviar
repeat until FileWrite(Puerto,Num,1)=1;
Sleep(1000); // Espera para enviar el siguiente dato
end.
Responder Con Cita
  #5  
Antiguo 08-07-2008
zurdosoft zurdosoft is offline
Miembro
 
Registrado: may 2005
Ubicación: Villa Maria, Cordoba, Argentina
Posts: 16
Poder: 0
zurdosoft Va por buen camino
uses
SysUtils,
windows;

var Puerto,n:integer;
Num, Res:byte;
Cad:string;
Mode:DCB;
begin
Puerto:=FileOpen('COM1',fmOpenReadWrite);//Abre el puerto
Mode.BaudRate := 1200;
Mode.ByteSize := 8;
Mode.Parity := NOPARITY;
Mode.StopBits := ONESTOPBIT;
SetCommState(Puerto, Mode); //Ajusta los parámetros
Num:=253; // Dato a enviar
repeat until FileWrite(Puerto,Num,1)=1;
Sleep(1000); // Espera para enviar el siguiente dato
end.
Responder Con Cita
  #6  
Antiguo 25-09-2008
GabrielK GabrielK is offline
Registrado
 
Registrado: sep 2008
Posts: 1
Poder: 0
GabrielK Va por buen camino
tengo una duda, cuando se está leyendo un puerto serial con:

FileRead(Puerto,Num,1);

¿Como se puede parar la lectura del puerto programáticamente si es que no se recibe nada en un tiempo de establecido?

Saludos.
Responder Con Cita
  #7  
Antiguo 03-10-2008
zurdosoft zurdosoft is offline
Miembro
 
Registrado: may 2005
Ubicación: Villa Maria, Cordoba, Argentina
Posts: 16
Poder: 0
zurdosoft Va por buen camino
Se puede poner el codigo dentro de los repeat.
Para usar break, por ejemplo.
Responder Con Cita
  #8  
Antiguo 16-10-2008
ivan_del21 ivan_del21 is offline
Registrado
 
Registrado: oct 2008
Posts: 2
Poder: 0
ivan_del21 Va por buen camino
hola amigo soy nuevo en esta pagina tengo una duda acerca de como utilizar el timer de delphi ya que quiero hacer un segundero con un label
Responder Con Cita
  #9  
Antiguo 13-11-2008
ivan_del21 ivan_del21 is offline
Registrado
 
Registrado: oct 2008
Posts: 2
Poder: 0
ivan_del21 Va por buen camino
hola amigos se que no tiene que ver con el tema pero quisiera saber si me podrian ayudar con un proyecto que deseo realizar, quiero mover un carrito de control alambrico por medio del puerto paralelo, me podrian asesorar?
Responder Con Cita
  #10  
Antiguo 05-02-2009
pollo_c pollo_c is offline
Miembro
 
Registrado: oct 2006
Posts: 55
Poder: 12
pollo_c Va por buen camino
hola amigos me parece muy interesante este tema, solo tengo una pregunta: puedo adaptar el código a cbuilder5?
el problema es que tengo desarrollado un punto de venta(para abarroteras) con builder5 y mysql y le quiero agregar la facultad de que una pesa digital le envié los datos a un edit de mi formulario de ventas.

puedo convertir este código a builder5?


uses
SysUtils,
windows;

var Puerto,n:integer;
Num:byte;
Cad:string;
Mode:DCB;
begin
Puerto:=FileOpen('COM1',fmOpenRead);//Abre el puerto
Mode.BaudRate := 1200;
Mode.ByteSize := 8;
Mode.Parity := NOPARITY;
Mode.StopBits := ONESTOPBIT;
SetCommState(Puerto, Mode); //Ajusta los parámetros
// Los datos se repiten y terminan con #13(CR)
repeat
repeat until FileRead(Puerto,Num,1)=1;
until Num=13; // Final de cadena anterior
Cad:='';
for n := 1 to 8 do begin
repeat until FileRead(Puerto,Num,1)=1;//lee un byte
Cad:=Cad+chr(Num);
end;
write(Cad);//Muestra la lectura
Sleep(1000); // Espera para poder ver el resultado
end.

porfa ayuda!!!!!!
Responder Con Cita
  #11  
Antiguo 23-12-2009
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.048
Poder: 12
kurono Va por buen camino
hola como estan se que este truco se desarrollo hace mucho pero quisiera saber si este truco funciona en windows xp 64bit y si es asi que modificacion deberia hacerce
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 21:53:31.


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