Captura dados Serial

10/02/2006

0

Galera desenvolvi uma função q so tem como testa no meu cliente pq? pq so la que tem os leitores conctados a uma porta serial então eu fiz a seguinte função para capturar 7 bits e o que o leitor manda, mas e o seguinte nesse 7 bits bem Codigo, Data, nome como fazer para q apos a captura fasso a conversão para armazenamento em BD. ja pesquisei muito sobre conversão de hexTobin, BinToHex, BinToDec, mais quando uso conversão de Dec da erro pois tem dados como nome. estou fazendo teste passando variais ja preenchida para a função sei q funciona a função de abrir fechar capturar dados na Serial.

Function CapturaDados(StrValor: String) : String;
var
BytesLidos: DWord;
i: Integer;
ReadStr: String;
RetLeitor: LongBool;
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;


Marcal

Marcal

Responder

Posts

10/02/2006

Massuda

Você está falando de ´7 bits´, mas imagino que isso se refira à configuração da porta serial... no caso, cada caractere transmitido/recebido contem 7 bits de dados. Nesse caso, basta configurar a porta serial de acordo.

Quanto ao resto, dê mais detalhes, pois não entendi.


Responder

10/02/2006

Marcal

Grande Massuda ai vem os detalhe:
Foi desenvolvido um Hardware p uma empresa igual de supermercado um leitor de dados ele captura e envia esses dados para o pc com falei sao 7 bits, então eu preciso pegar este 7 bits e passar para o Banco de dados mais antes tenho q converte-los para o normal ja tentei pra decimal mais da erro pois os campos são CODIGO, DATA e NOME.

A detalhe mussuda eu fiz todo o codigo de captura e leitura na unha mais tenho o componente ComPort sendo usando to testando os dois metodos pra ver o qual consigo fazer primeiro.

e isso ai mussuda


Responder

10/02/2006

Massuda

...sao 7 bits...
Acho que você está confundindo... Toda porta serial trabalha com caracteres/bytes, mas a comunicação serial pode ocorrer usando 4, 5, 6, 7, 8 bits de dados. O lance do ´7 bits´ é apenas um parâmetro da configuração da porta serial.

Com relação aos dados que o leitor manda, você precisa saber como eles estão codificados... podem ser caracteres ASCII ou algum formato binário do fabricante do leitor.


Responder

10/02/2006

Marcal

E Massunda foi mal no 7 bits.
Mussuada penso eu q seja caracter ASCII pelo que tive pesquisando sobre este equipamento dele. Massunda o componente ComDataPacket não resolveria este meu problema como vc disse na quela outra duvida minha sobre ComData.
Como seria o o Codigo se trabalhar com ASCII pois as conversões de Hex pra Bin e Bin pra Dec eu desenvolvi mais não consegui foi desenvolver pra ASCII


Responder

10/02/2006

Massuda

Como seria o o Codigo se trabalhar com ASCII pois as conversões de Hex pra Bin e Bin pra Dec eu desenvolvi mais não consegui foi desenvolver pra ASCII
Não sei que leitor você está usando, mas geralmente não precisa fazer conversão alguma nos dados. O que você recebe é uma string contendo os dados.


Responder

13/02/2006

Marcal

Massunda deu certo o teste q fiz no cliente esta enviando e recebendo dados perfeitamente e me certifiquei com ele que tipo de conversão precisa ser feito. é de ASCII para Decimal mais nada fazendo isso funcionara perfeitamente. Brigadão, há Vc ou alguém do forum ai tem essa funçãozinha que converte ASCII para Decimal.


Responder

13/02/2006

Aroldo Zanela

Colega,

Explica isso melhor, por favor.

A = 65 (Valor na tabela ASCII); [b:922cee833f]Ord[/b:922cee833f]
´100´ = 100 (string para numérico) = [b:922cee833f]StrToStr[/b:922cee833f]


Responder

14/02/2006

Marcal

Aroldo e o seguinte o equipamento do meu cliente envia dados para a porta serial em formato ASCII com o sistema de catura q fiz ele tem q pegar o valor em ASCII e ser convertido em decimal so isso. mais nada

ex.: equipamento envia o codigo (ascii) e converto esse valor para Decimal.


Responder

14/02/2006

Michael

mussuda... massunda... mussuada...


É [b:5ca5cb716c]Massuda[/b:5ca5cb716c], vc sofre como eu! ;-)

[]´s


Responder

14/02/2006

Massuda

É [b:9baf5e49a7]Massuda[/b:9baf5e49a7], vc sofre como eu!
Verdade... mas já acostumei com isso. Também já tinha percebido que isso acontece bastante com você também.


Responder

14/02/2006

Marcal

E verdade amigo Michael

Sem querer desviar o objetivo do forum mas ainda bem nossos amigos Massunda e Michael são karas bons e Gente boa e faz parte do Forum. Alias acho q e por isso q gostei de desenvolver em Delphi porque so tem kra gente boa e isso faz incentivar aqueles que querem aprender a desenvolver e isso so faz com que a comunidade Delphiana venha acrescer. Continuem assim kra o Mundo Precisa de voces rsrsrs.[/code]


Responder

15/02/2006

Aroldo Zanela

[quote:1513fb47bc=´Aroldo Zanela´]Colega,

Explica isso melhor, por favor.

A = 65 (Valor na tabela ASCII); [b:1513fb47bc]Ord[/b:1513fb47bc]
´100´ = 100 (string para numérico) = [b:1513fb47bc]StrToStr[/b:1513fb47bc][/quote:1513fb47bc]
Colega,

Desculpe, onde se lê: StrToStr
Leia-se: StrToInt ou StrToFloat (Conforme o caso).

Resolveu?


Responder

15/02/2006

Michael

E verdade amigo Michael Sem querer desviar o objetivo do forum mas ainda bem nossos amigos Massunda e Michael são karas bons e Gente boa e faz parte do Forum. Alias acho q e por isso q gostei de desenvolver em Delphi porque so tem kra gente boa e isso faz incentivar aqueles que querem aprender a desenvolver e isso so faz com que a comunidade Delphiana venha acrescer. Continuem assim kra o Mundo Precisa de voces rsrsrs.[/code]


Acho que o colega não entendeu meu post... Eu quis dizer que o [b:1dc8adf029]Massuda [/b:1dc8adf029](Massuda, Massuda, Massuda, Massuda...) ´sofre´ com as trocas do seu nome, e não em ajudar aos membros do fórum...

Foi apenas uma brincadeira... ;-)

[]´s


Responder

10/08/2006

Zlink

Alguém poderia falar qual o erro que representa este quando eu tento compilar a função acima que o colega disponibilizou, eu acho que é a unit que eu não declarei. qual a unit ?

Undeclared identifier: ´hCommm´

RetLeitor := ReadFile(hComm, bRead[0], 255, BytesLidos, nil);


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar