Fórum Como se limpa o buffer da serial (Com1, com2, com3....) ? #310370
23/01/2006
0
variáveis públicas:
hComm: THandle;
bRead: array[0..255] of byte;
RetLeitor: LongBool;
Function TFprincipal.ReadComm : String;
var
BytesLidos: DWord;
i: Integer;
ReadStr: String;
begin
RetLeitor := ReadFile(hComm, bRead[0], 255, BytesLidos, nil);
if ord(RetLeitor) = -1 then
exit;
ReadStr := ´´;
If BytesLidos > 0 Then
For I := 0 To BytesLidos - 1 do
ReadStr := ReadStr + chr(bRead[i])
Else
FlushComm;
Result := ReadStr;
End;
Estou utilizando esta função para ler códigos q venham de um leitor serial a cada segundo. Para ler, funciona beleza. O problema é q se eu passar o código mais de uma vez ele acumula a leitura. Por exemplo:
se eu passar o produto 1 várias vezes fica assim: 001001001; e na verdade é para ser apenas 001.
Já tentei utilizar a função [b:ab217c879e]CancelIO(hcomm)[/b:ab217c879e], mas não funcionou.
Alguém conhece alguma função para limpar o buffer da serial?
Grato pela atenção.[b:ab217c879e][/b:ab217c879e][b:ab217c879e][/b:ab217c879e]
Turbo Drive
Curtir tópico
+ 0Posts
23/01/2006
Aroldo Zanela
Na verdade nem li o seu código, pois minha proposta é indicar a utilização do Async32. Tenho total satisfação com estes componentes, pois alem de encapsular toda a complexidade é totalmente free: http://www.tmssoftware.com/ta32.htm
Gostei + 0
23/01/2006
Aroldo Zanela
Oops!, foi mal, não é mais free. Acabei de entrar no site para ver as atualizações.
Gostei + 0
23/01/2006
Turbo Drive
Mesmo assim muito obrigado pela dica.
Gostei + 0
23/01/2006
Massuda
Gostei + 0
23/01/2006
Turbo Drive
:( :cry: :oops:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)