recebendo dados pela porta serial

Programação Delphi e Pascal

Moderadores: 51, guest2003

recebendo dados pela porta serial

Mensagempor ernande_filho » 15 Mar 2007 13:45

Pessoal, tô com uma bronquinha, que ainda não consegui resolver.

Mando um comando pro celular (at+cbc ou outro qualquer) e ele me retorna alguns valores, só que em várias linhas.

TX
Código: Selecionar todos
AT+CBC


RX
Código: Selecionar todos
AT+CBC

+CBC: 0,13

OK


+CBC: (comando)
0 (Bateria em uso)
13 (carga restante da bateria em %)

Como faço para ler cada linha individualmente?
Estou usando o componente CPort com o Delphi 7

minha rotina de recepção é essa:
Código: Selecionar todos
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
str: string;
begin
comport1.ReadStr(str,count);
memo1.Text:=memo1.Text+str;
end;
Ernande Filho

==>> Meus cabelos já não caem, PULAM!! <<==
Avatar do usuário
ernande_filho
Byte
 
Mensagens: 233
Registrado em: 13 Out 2006 17:28
Localização: Recife/PE/Brasil

Resolvido!

Mensagempor ernande_filho » 23 Mar 2007 00:45

Resolvi da seguinte forma:

Juntei caracter por caracter...
ou seja:

dado:= str[n]+str[n+1]+...

Se alguem tiver outra ideia, estou ouvindo.
Ernande Filho

==>> Meus cabelos já não caem, PULAM!! <<==
Avatar do usuário
ernande_filho
Byte
 
Mensagens: 233
Registrado em: 13 Out 2006 17:28
Localização: Recife/PE/Brasil

Re: Resolvido!

Mensagempor Paulo » 23 Mar 2007 07:07

ernande_filho escreveu:Resolvi da seguinte forma:

Juntei caracter por caracter...
ou seja:

dado:= str[n]+str[n+1]+...

Se alguem tiver outra ideia, estou ouvindo.


Ernande,

Tenho que desenvolver um software em Delphi, mas Delphi não é mto minha praia, daí o bixo vai pegar, pois tenho que coletar dados da porta serial e não sei como exatamente.
Vc teria algum material ou exemplo sobre isso para me passar?
Ficaria mto grato se vc pudesse me ajudar.

Até +...
Paulo D.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor ernande_filho » 23 Mar 2007 19:34

Paulo, o material que eu tenho é minha cabeça e a famosa "bíblia do delphi" de Marco Cantu

Não sei nem pra onde vai direito o delphi, mas o trivial eu to desenrolando graças a necessidade.

Explica melhor o que vc precisa, que eu te ajudo.

como as vezes me perguntam o que eu to usando, falo logo: Delphi 7 com o CPort

Como ja foi dito: para trabalhar com o valor recebido, estou convertendo ele numa string, só que tô pegando caracter por caracter. Como não são muitos caracteres, (no max 5) eu os pego, transformo numa string (tiro os comandos CR, LF, ...) e uso da maneira que eu quero. Converto em inteiro, aplico o valor numa barra, ETC.

Eu posso lhe passar o codigo fonte dos meus testes. Só está um pouco bagunçado, mas dá pra entender numa boa. Dá pra ver a recepção do sinal serial, transmissão, filtragem e conversão dos dados recebidos e aplicação em componentes do Delphi.

Não sei se fui muito claro nas explicações, mas é que eu sou ruim mesmo pra ensinar. Nunca consegui bancar um professor...

Depois manda um email p mim em pvt.

Boa Sorte e Tamos por aqui.
Ernande Filho

==>> Meus cabelos já não caem, PULAM!! <<==
Avatar do usuário
ernande_filho
Byte
 
Mensagens: 233
Registrado em: 13 Out 2006 17:28
Localização: Recife/PE/Brasil

Mensagempor Maia » 24 Mar 2007 08:54

Eu não entendi sua dúvida. Vc está recebendo caracter por caracter e não string por string? É isso? Explica mais um pouquinho.
Abraços,
Maia
Avatar do usuário
Maia
Byte
 
Mensagens: 348
Registrado em: 15 Out 2006 16:25
Localização: Rio de Janeiro

Mensagempor ernande_filho » 24 Mar 2007 09:03

Maia, valeu pela ajuda, mas já resolvi.

Eu recebo a string (com CR e LF), mas como queria separar alguns caracteres (valores) de uma vez só, nao conseguia, então crei uma string nova. Nela ponho só os caracteres que me interessam da string que recebi pela serial. Depois, transformo num int e aplico numa barra que mostra a porcentagem (gauge ou ProgressBar)
Ernande Filho

==>> Meus cabelos já não caem, PULAM!! <<==
Avatar do usuário
ernande_filho
Byte
 
Mensagens: 233
Registrado em: 13 Out 2006 17:28
Localização: Recife/PE/Brasil

Mensagempor Maia » 24 Mar 2007 11:10

Neste caso vc pode usar o string2 := copy(string, pos inicial, num caracteres). Dá uma olhada no help do Delphi que ele explica melhor.
Abraços,
Maia
Avatar do usuário
Maia
Byte
 
Mensagens: 348
Registrado em: 15 Out 2006 16:25
Localização: Rio de Janeiro

Mensagempor ernande_filho » 25 Mar 2007 16:13

Valeu Maia!

Era justamente isso que tava procurando.

Vou testar e depois coloco o resultado.
Ernande Filho

==>> Meus cabelos já não caem, PULAM!! <<==
Avatar do usuário
ernande_filho
Byte
 
Mensagens: 233
Registrado em: 13 Out 2006 17:28
Localização: Recife/PE/Brasil

Mensagempor ernande_filho » 26 Mar 2007 11:31

Pessoal, o código que criei para aprender a trabalhar com a porta Serial está aí.

Me pediram que enviasse em pvt, mas prefiro enviar só uma vez e compartilhar com quem está interessado.

http://rapidshare.com/files/22875276/Co ... l.rar.html

Boa programação.
Ernande Filho

==>> Meus cabelos já não caem, PULAM!! <<==
Avatar do usuário
ernande_filho
Byte
 
Mensagens: 233
Registrado em: 13 Out 2006 17:28
Localização: Recife/PE/Brasil

Mensagempor ernande_filho » 26 Mar 2007 11:32

Ops!

Esqueci da senha...

Senha: asm51
Ernande Filho

==>> Meus cabelos já não caem, PULAM!! <<==
Avatar do usuário
ernande_filho
Byte
 
Mensagens: 233
Registrado em: 13 Out 2006 17:28
Localização: Recife/PE/Brasil


Voltar para Delphi e Pascal

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x