Página 1 de 1

AJUDA COM SERIAL + DELPHI (voltímetro 8 canais)

MensagemEnviado: 03 Jul 2014 20:16
por vibrexbr2014
Boa noite.

Estou começando a programar em Delphi e preciso comunicar com um equipamento via porta serial.
São vários comandos diferentes que precisam ser interpretados e colocar a informação em labels.
Já consegui fazer a comunicação utilizando o componente TComport e associando cada comando a um botão. Funciona perfeitamente!!!
O problema é que preciso enviar todos os comandos sequencialmente para que não precise apertar um botão de cada vez, mas sim somente um que realize todo o ciclo.
Preciso:
1) selecionar a string do comando;
2) transmitir o comando;
3) verificar se houve timeout;
4) desmembrar a rotina recebida com o comando COPY(já operacional);
5) colocar no local certo a informação
6) repetir o processo até o ultimo comando.

Tenho que executar 5 botões com essa sequência descrita acima.
Não consegui fazer em Delphi porque ainda não entendi com fazer:
FOR COMANDO 0 TO 10
BEGIN
WHILE NOT FLAG_TUDO_OK DO; // AGUARDA A PORTA SERIAL RECEBER O VALOR PARA QUE POSSA TRATAR E CONTINUAR O PROCESSO
INTERPRETA O RESULTADO DA SERIAL
EXECUTA O COMANDO
END;
END;
O problema é que o DELPHI trava durante o WHILE ... DO.
Isso funciona perfeitamente nos uC!!!
Qualquer ajuda é muito bem vinda, pois já estou quebrando a cabeça há dias!!!

Obrigado.

Vibrex.

Re: AJUDA COM SERIAL + DELPHI (voltímetro 8 canais)

MensagemEnviado: 03 Jul 2014 20:54
por tcpipchip
Ou usa thread ou timer event.
Não deixe um programa em LOOP, colocado dentro do loop a seguinte função

application.processmessages;

Que tal usar a lib da marshallsoft, que tem serialização por interrupt ?

tcpipchip

Re: AJUDA COM SERIAL + DELPHI (voltímetro 8 canais)

MensagemEnviado: 03 Jul 2014 21:14
por vibrexbr2014
Obrigado por responder!
Não tenho essa LIB.
Você poderia indicar onde posso encontrar mais informações ou exemplos?
Você já fez algum programa utilizando esse recurso?

Mais uma vez,, obrigado.

Re: AJUDA COM SERIAL + DELPHI (voltímetro 8 canais)

MensagemEnviado: 03 Jul 2014 21:48
por vtrx
O componente Tcomport trabalha com thread .
Você pode usar um truke comum que é deixar um TMemo invisivel com a largura da string que você vai usar,assim o memo vai recebendo e pulando as linhas automaticamente,você só tem que verificar cada linha do memo e pegar o dado que quiser.
Faça também a verificação da quantidade de linhas que o memo terá,assim voce executa um Memo.clear,pois o memo tem limitação de memória.
Um exemplo genérico;
1) selecionar a string do comando;

Usando o Memo seria,tipo,if Memo1.Lines.Strings[0]=

Re: AJUDA COM SERIAL + DELPHI (voltímetro 8 canais)

MensagemEnviado: 03 Jul 2014 22:44
por vibrexbr2014
Haveria a possibilidade de você enviar um exemplo de programa, pois estou começando agora e sinto certa dificuldade.
Eu tenho que executar 5 listas com 10 comandos pela porta serial.
Muito obrigado pela sua atenção.

Re: AJUDA COM SERIAL + DELPHI (voltímetro 8 canais)

MensagemEnviado: 04 Jul 2014 08:56
por tcpipchip
Código: Selecionar todos
 unit Dvce_pgm;

interface

uses
  wsc32, wsc32w, keycode, Display,
  SysUtils, WinTypes, WinProcs, Messages,
  Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, ExtCtrls;

implementation

function SendCommand(Port,Baud:Integer;Command:String;var Buffer:String:BufLen:Integer):Integer;
begin
  {reset (open) the port}
  SendCommand := fReset(Port, 1024, 1024);
  {error ? (negative return codes are errors)}
  if Code < 0 then exit;
  {set the baud rate}
  SendCommand := fBaud(Port, Baud);
  if Code < 0 then exit;
  {send string}
  SendCommand := fPuts(Port, Command, Length(Command));
  if Code < 0 then exit;
  {wait up to 250 mSec for a response}
  if(fWaitFor(Port, 250)<0) return Code;
  {allow time for entire response (depends on serial device)}
  fSleep(1);
  {return data}
  SendCommand := SendCommand fGets(Port, Buffer, BufLen)
end;

{initialization}
begin
end.


http://www.marshallsoft.com/

Re: AJUDA COM SERIAL + DELPHI (voltímetro 8 canais)

MensagemEnviado: 05 Jul 2014 08:04
por vtrx
Oque voce ja tem programado?

Re: AJUDA COM SERIAL + DELPHI (voltímetro 8 canais)

MensagemEnviado: 05 Jul 2014 22:06
por vibrexbr2014
Eu estou fazendo uma interface para calibrar um equipamento, utilizando comunicação serial.
A interface deverá gerar sinais senoidais, medir tensões positivas e negativas, e medir frequência (<5kHz).
Estou utilizando o Arduíno Leonardo como interface e comprei um módulo DDS AD9850 na China.

Abraço.

André.