FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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.
Copien el código en una aplicación console, ajusten Mode a vuestras necesidades y prueben. Je Je Saludos |
#2
|
|||
|
|||
hola
|
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
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. |
#5
|
|||
|
|||
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. |
#6
|
|||
|
|||
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. |
#7
|
|||
|
|||
Se puede poner el codigo dentro de los repeat.
Para usar break, por ejemplo. |
#8
|
|||
|
|||
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
|
#9
|
|||
|
|||
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?
|
#10
|
|||
|
|||
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!!!!!! |
#11
|
||||
|
||||
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
|
|
|
|