Captura dados Serial
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;
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
Curtidas 0
Respostas
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.
Quanto ao resto, dê mais detalhes, pois não entendi.
GOSTEI 0
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
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
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
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
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
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
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
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]
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
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.
ex.: equipamento envia o codigo (ascii) e converto esse valor para Decimal.
GOSTEI 0
Michael
10/02/2006
mussuda...
massunda...
mussuada...
É [b:5ca5cb716c]Massuda[/b:5ca5cb716c], vc sofre como eu! ;-)
[]´s
GOSTEI 0
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
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]
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
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?
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
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
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);
Undeclared identifier: ´hCommm´
RetLeitor := ReadFile(hComm, bRead[0], 255, BytesLidos, nil);
GOSTEI 0