Captura dados Serial

Delphi

10/02/2006

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

Curtidas 0

Respostas

Massuda

Massuda

10/02/2006

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.


GOSTEI 0
Marcal

Marcal

10/02/2006

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


GOSTEI 0
Massuda

Massuda

10/02/2006

...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.


GOSTEI 0
Marcal

Marcal

10/02/2006

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


GOSTEI 0
Massuda

Massuda

10/02/2006

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.


GOSTEI 0
Marcal

Marcal

10/02/2006

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.


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

10/02/2006

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]


GOSTEI 0
Marcal

Marcal

10/02/2006

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.


GOSTEI 0
Michael

Michael

10/02/2006

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


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

[]´s


GOSTEI 0
Massuda

Massuda

10/02/2006

É [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.


GOSTEI 0
Marcal

Marcal

10/02/2006

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]


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

10/02/2006

[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?


GOSTEI 0
Michael

Michael

10/02/2006

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


GOSTEI 0
Zlink

Zlink

10/02/2006

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);


GOSTEI 0
POSTAR