Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-01-2010
Avatar de BPL
BPL BPL is offline
Miembro
 
Registrado: ene 2009
Posts: 47
Poder: 0
BPL Va por buen camino
Lectura Puerta Serial---

hola a todos....

primero le cuento cual es mi problema ;
tengo un balanza la cual esta conectada al pc por el puerto serial,
Con las rutinas que estan a continuacion logro configurar leer y limpiar el puerto, pero existen ocaciones en que no lee del todo bien, por ejemplo
se esta pesando un bulto de 14.5 y trae 714.5 o
14.0 y trae 714 o
25.5 y trae 985825.5
que podria estar pasando que no siempre me lee bien el puerto...???

ojala alguien me ayude.....
abajo estan todas las rutinas obvio en delphi

Código Delphi [-]
Function ConfigurarPuerto:Boolean ;
var
NombrePuerto : String ; // nombre puerto elegido
ValDCB : DCB ; // estructura en api de windows para comunicacion
dwError : DWORD ; // Captura el nºerror devuelto x GetlastError()
v_Result : Boolean ; // que captura culequier error.
Begin
Result := False ;
Windows.CloseHandle(HCom) ; // cierre el puerto.
HCom := Windows.CreateFile(pChar('Com1'),GENERIC_READ or
GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0) ;
if (HCom=INVALID_HANDLE_VALUE) then begin 
dwError := GetLastError() ;
ShowMessage('Error al configurar el puesto:'+IntToStr(dwError)) ;
Exit ;
end ;
Result := GetCommState(HCom,ValDCB) ; 
if not result then begin
ShowMessage('el estado del puerto no es corecto o eta desabilitado');
exit ;
end ;
ValDCB.BaudRate := 9600 ;
ValDCB.ByteSize := 7 ;
ValDCB.Parity := 2 ;
ValDCB.StopBits := 0 ;
 
{seteo la estructura para configurar el puerto}
if not SetCommState(HCom,ValDCB) then begin
ShowMessage('no es posible configurar el puerto con estos valores');
Exit ;
end ;
Result := True ;
End ;
otra para leer

Código Delphi [-]
Function LeerPuerto :String ;
Var
Cadena : String ; 
TamanoLectura : DWORD ; 
EstadoLectura : COMSTAT ; 
Error : DWORD ; 
v_Result : Boolean ;
Begin
Cadena := '' ;
v_Result:= False ;
if windows.ClearCommError(Hcom,Error,@EstadoLectura) then begin
if (EstadoLectura.cbInQue>0) Then begin
SetLength(Cadena,(EstadoLectura.cbInQue+1)) ; 
v_Result := Windows.ReadFile(hCom,Pchar(Cadena) 
^,EstadoLectura.cbInQue,TamanoLectura,nil); 
end ;
end ;
if v_Result Then begin
SetLength(Cadena,TamanoLectura);
Result := LimpiarCadena(Cadena) ;
end ;
end ;
y limpiar

Código Delphi [-]
 
Function LimpiarCadena(Bus : String):String ;
Var v_j : Integer ;
Bus2 : String ;
Begin
Bus := UpperCase(Bus) ;
For v_j := 1 To Length(Bus) do Begin
if Bus[v_j] in ['0','1','2','3','4','5','6','7','8','9'] then
Bus2 := Bus2 + Bus[v_j]
else if Bus[v_j]='.' then
Bus2 := Bus2 + Bus[v_j]
else if Bus[v_j]= 'K' then Break ;
end ;
Result := Bus2;
Bus := '' ;
Bus2 := '' ;
End ;

Última edición por rgstuamigo fecha: 18-02-2010 a las 20:45:14. Razón: Estética de código
Responder Con Cita
 



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Socket en puerta 210 y 211 Paulao Varios 0 22-08-2008 16:39:47
Puerta Serial Paulao Varios 2 28-03-2008 13:37:33
Predicadores de puerta a puerta. marcoszorrilla La Taberna 5 01-09-2007 19:04:26
Lectura del serial de un disco duro. mlara Windows 4 22-12-2004 17:11:11
Necesito enviar datos de mi aplicacion a una puerta serial..como?? Serbok Varios 1 19-11-2003 22:26:06


La franja horaria es GMT +2. Ahora son las 05:40:10.


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