Ir para conteúdo
Fórum Script Brasil
  • 0

Executável Muito Lento!


Guest Rafael Mansur

Pergunta

Guest Rafael Mansur

Olá, preciso da ajuda de vocês!

Eu desenvolvo sistemas supervisórios em delphi, sistemas que se comunicam pela porta serial com CLP's! Porem eu estou começando, e me deparei com um sério problema.

O programa roda normal em quase todas as máquinas, porém nos computadores IBM e DELL ele não estabelece comunicação normalmente, fica muito lento! alguém sabe me dizer porque? se os computadores IBM possuem alguma restrição para a porta serial ou alguma coisa do tipo?!!

eu instalei o delphi no IBM e compilei e rodei direto do fonte (f9), quando fiz isso o programa ficou mais rápido, porem com o desempenho ainda menor que em máquinas menos potentes de outros fabricantes.

se puderem me ajudar, ficaria muito grato

dapeste@bol.com.br

abraço a todos

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

Olá...

Bom, tenho muitas rotinas de leitura e gravação nas portas seriais... numa delas, por exemplo, preciso acessar um GPS (que fornece uma informação por segundo) em uma serial e um odômetro digital (que fornece 12 informações por segundo) em outra serial, ao mesmo tempo em que leio um dispositivo indicador (tipo um mouse) em outra serial...

Se você já verificou as configurações das portas, desabilitou o controle do hardware pelo Windows (se o seu software acessa as portas diretamente), pode ser necessário segmentar o programa, usando um "steper"...

Assim, cada chamada (leitura ou gravação) na serial precisa estar em um segmento específico dentro de um laço, que controla o ínicio e o fim de cada pequena tarefa, de modo a você poder saber qual tarefa está tomando mais tempo do processamento... este tipo de aplicãção funciona como o protocolo tokenring, no qual cada terminal tem uma espécie de "senha" para desempenhar uma tarefa no loop (o "anel" circular) da rede...

Por falar em processamento, também é importante monitorar a máquina, eliminando processos desnecessários (tipo, monitoramento de novos dispositivos USB, p.e.)...

Ok?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rafael Mansur

obrigado pela atenção pessoal, assim que possui eu coloco o driver de comunicação pra vocês, e mando no e-mail...

mas o seguinte, esqueci de mencionar...., eu uso API's do windows para a comunicação, não é direto da porta! O CLP comunica em Hexadecimal, então tenho que tratar os dados. O drive de comunicação segue o protocolo alnet 1, e a velocidae de comunicação é de 9.600Kbps....

agora eu não consigo entender porque no computador IBM essa comunicação é muito lenta! no meu computador por exemplo, funciona perfeitamente, é tem só 256 de memória e processador de 1.6ghz...., o IBM é 2.8Ghz, e tem 1.256MB de memória....

obrigado pela ajuda, e se puderem me ajudar ainda....

Rafael

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rafael Mansur

Nossa, muito obrigado, pelo jeito era isso mesmo!!!

não sabia que o HT podia gerar perda de desempenho para alguns software's!!! foi só eu desativar o HyperT que a comunicação funcionou normalmente!!!muito obrigado.....

quem quiser deixe o e-mail que eu mando o driver de comunicação pra vocês...

abraço a todos!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Olá...

Muito estranho essa questão do HT...

Os computadores que usam meus programas são P4 3200 ht e não têm problema de lentidão em condições extremas (funcionam embarcados em carros, lendo as três seriais - a da placa-mães e duas adicionais da Naxos, filmando as vias - estradas, rios ou ferrovias - com o MovieMaker e ainda alimentando um banco de dados de ocorrências com informações digitadas por um engenheiro)...

Nunca precisei desativar o HT...

Apenas lembro que, em 2003, quando desenvolvi o software, nunca consegui "rodar" o sistema em notebooks com adaptadores "usb-serial"... foram necessárias portas seriais de verdade...

O componente serial que utilizo é o ComportLibrary 2.64 (Dejan Crnila)...

http://sourceforge.net/projects/comport/

Ok?

Link para o comentário
Compartilhar em outros sites

  • 0

quem quiser deixe o e-mail que eu mando o driver de comunicação pra vocês...

Opa, qualquer coisa que quiserem mandar pro meu email será bem vinda. Tenho muita curiosidade de saber como funciona, e exemplos da utilização dessas bibliotecas seriam interessantes.

O componente serial que utilizo é o ComportLibrary 2.64 (Dejan Crnila)...

http://sourceforge.net/projects/comport/
Ok?
Opa, valeu. Se quiser mandar ou postar exemplos de utilização, a comunidade agradece.
thalespo@terra.com.br

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Antonio -

O problema da tecnologia HT não está em relacao ao delphi, mas sim em relacao ao Interbase,se você tiver um programa que use INTERBASE + HT a conexao com o interbase fica muito lenta.

Há varios topicos em relacao a esse assunto no google.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rafael Mansur

Discussão legal de HT.

Após eu ter visto que o problema era esse, eu pesquisei pra saber o porque, e pelo pouco que procurei e pelo pouco que eu li, deu pra entender que a tecnologia HT é boa para alguns softwares e pra outros não, assim como para BD's...

acontece que deve fazer uma otimização do programa para que ele se adeque ao HT, ao método que o HT utlizada para processamento!

não que ele tenha problema com a serial ou com um banco de dados específico, é td questão de otimização!

Como o nosso amigo falou em cima, que o programa dele não tem problema nenhum, e usa seriais e BD, com certeza é porque o componente que ele usa já está adequado para a tecnologia HT, creio que é isso!!!

abraço a todos

Link para o comentário
Compartilhar em outros sites

  • 0

Daí agora ficou a dúvida porque já desenvolví software de biometria com leitura e escrita na porta RS232.

Na época era um pentium sem HT e não utilizava nenhum componente de terceiros; apenas as funções:

CreateFile, SetupComm, SetCommState, SetCommTimeouts, ReadFile e WriteFile.

Não sei se com um HT a performance cairia e também não sei como esses componentes se adaptariam ao HT, sendo que eles não fogem muito dessas funções.

Link para o comentário
Compartilhar em outros sites

  • 0

Sobre o Comport do Dejan, o usu é simples... basta monitorar o que "cai" na serial...

Se você colocou um componente no seu form (por exemplo, GPS = TComPort), observe seu evento OnRxChar...

  StrComB := 'COM2';
  Count := 0;
  GPS.ReadStr(StrComB, Count);
  sDados  := sDados+StrComB;
 {sDados é uma variável global, que vai acumulando toda a leitura serial até encontrar um CR}
  iPosCr := Pos(CHR(13),sDados);
  IF iPosCr>0 then
    Begin
      ShowMessage('Recebi isto pela serial: '+sDados+'!');
      {Aqui, faço o que quiser com o conteúdo recebido e depois esvazio a variável sDados}
    End;
  {EndIf iPosCr>0}

Cuidados com as seriais...

Como citei anteriormente, uso o componente em situações críticas... por exemplo, o mesmo programa lê uma porta que recebe uma informação por segundo (de um GPS Etrex Garmin) e até doze informações por segundo (de um Odômetro NiteStar)... O fato é que eles não param de enviar as informações... Assim, o programa precisa ficar lendo os dados o tempo todo, para não perder informação...

Então, principalmente no caso do odômetro, os dados chegam de forma muito variada, com vários blocos numa mesmo strintg... mais ou menos assim:

velocidade+distância+cr+velocidade+distància+cr+velocidade

distância+cr+velocidade+distância+cr+velocidade+distância+cr+velocidade+distância

cr+velocidade

distância+cr+velocidade+distância+cr

Então, preciso manter aquela variável global (sdados) bem controlada, pois não processo todo o seu conteúdo de uma só vez...

Já quando utilizamos o componente para uma leitura estática (por exemplo, leitura da pesagem da balança conectada ao pdv em um mercado), é mais simples, pois vou "ler" somente uma string, de uma só vez, processar seu peso ou valor e pronto...

Então, muito cuidado quando a leitura pela serial for de um fluxo contínuo de informações...

Ok?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...