Array
(
)

Captura dados Serial

Marcal
   - 10 fev 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;


Massuda
   - 10 fev 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.


Marcal
   - 10 fev 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


Massuda
   - 10 fev 2006


Citação:
...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.


Marcal
   - 10 fev 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


Massuda
   - 10 fev 2006


Citação:
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.


Marcal
   - 13 fev 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.


Aroldo Zanela
   - 13 fev 2006

Colega,

Explica isso melhor, por favor.

A = 65 (Valor na tabela ASCII); Ord
´100´ = 100 (string para numérico) = StrToStr


Marcal
   - 14 fev 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.


Michael
   - 14 fev 2006


Citação:
mussuda...
massunda...
mussuada...


É Massuda, vc sofre como eu! ;-)

[]´s


Massuda
   - 14 fev 2006


Citação:
É Massuda, vc sofre como eu!
Verdade... mas já acostumei com isso. Também já tinha percebido que isso acontece bastante com você também.


Marcal
   - 14 fev 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.[/tagcod]


Aroldo Zanela
   - 15 fev 2006


Citação:
Colega,

Explica isso melhor, por favor.

A = 65 (Valor na tabela ASCII); Ord
´100´ = 100 (string para numérico) = StrToStr

Colega,

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

Resolveu?


Michael
   - 15 fev 2006


Citação:
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.[/tagcod]


Acho que o colega não entendeu meu post... Eu quis dizer que o Massuda (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


Zlink
   - 10 ago 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);