Sugestao de componente tipo Comport pra uso CLX delphi/kylix

Programação Delphi e Pascal

Moderadores: 51, guest2003

Sugestao de componente tipo Comport pra uso CLX delphi/kylix

Mensagempor Andremp » 18 Jan 2007 20:54

Alguém tem uma sugestao de componente tipo Comport pra uso CLX delphi/kylix?

até agora só achei o TurboPower Async Professional CLX esta versao é pra instalar no kylix nao instala no delphi e a versao TurboPower Async Professional pra instalar no delphi, mas se eu fizer um código no delphi nao sei se vou conseguir utilizar o mesmo no kylix já que sao versoes diferente ficou meio confuso. Alguém tem outra sugestao ?
Avatar do usuário
Andremp
Bit
 
Mensagens: 45
Registrado em: 13 Out 2006 13:37
Localização: Florianópolis

Mensagempor Wagner de Queiroz » 19 Jan 2007 07:17

Tem a opção de usar opção de usar o Synase

http://synapse.ararat.cz/files/synaser.zip

Ele serve para o Delphi/Kylix/Lazarus/CBuilder e funciona tanto no Windows como no Linux.

Este é a parte serial do mesmo criador do SYNAPSE que é um pacote de componentes para TCP-IP

http://synapse.ararat.cz/

Brinca com ele um pouco. Se gostar, bote um exemplo de como voce esta usando para que outros possam usar também.
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor Andremp » 19 Jan 2007 13:25

parece que era isso mesmo, hoje devo fazer um testes no delphi dai eu posto aqui depois.

Obrigado
Avatar do usuário
Andremp
Bit
 
Mensagens: 45
Registrado em: 13 Out 2006 13:37
Localização: Florianópolis

Mensagempor Andremp » 19 Jan 2007 17:58

Ainda nao testei tudo mas ai está uma parte:

procedimento para conectar em uma porta verificando se ela está livre

Código: Selecionar todos
uses SynaSer,Sysutils,QForms;
...
procedure teste;
var
  com:byte;
  conectou:boolean;
  serial:TBlockSerial;
begin
  inherited;
  serial:=TBlockSerial.Create;
  serial.RaiseExcept:=True;
  com:=1;
  conectou:=false;
  try                         
                //LastError = [ 5 {porta sendo usada}, 2 {porta inexistente}]
    while (serial.LastError <> 2) and (not conectou) do
    begin
      try
        serial. Connect('COM'+IntToStr(com));
                  //no caso do linux o componente transforma a string COMx para o formato linux e visse versa
        //se der erro ele pula direto pro except,
        //OBS*
        conectou:=true;
      except
        Inc(com);
      end;
    end;
    if serial.LastError = 2 then
       Application.MessageBox('Não foi possível conectar, as '+IntToStr(com-2)+' portas estão ocupadas'
                  ,'Transferência de dados',[smbOK]) // com -2 pois a ultima nao existia, deu erro e incremento +1
    else
       Application.MessageBox('Conectado na COM'+IntToStr(com)
                  ,'Transferência de dados',[smbOK]);
    serial.Config(9600,8,'N',0,false,false);
    //aqui pode fazer a comunicacao, enviar/receber, tem varias funcoes prontas para todos os gosto
  finally
    serial.free;  //fecha a conecxao
  end;
end;


*OBS: neste ponto pode testar se está recebendo uma string pela serial que no caso seria enviada por um uC para que saiba em qual porta ele está conectado (teste duas vezes pois na primeira pode ter pego só a metade da mensagem, de um delay entre as mensagens enviadas pelo uC, e um delay maior para o procedimento de leitura neste programa) , caso não esteja recebendo é só usar serial.RaiseSynaError(5); pra ele pular pro except como se a porta já estivesse sendo usada.


Se alguém tiver outro modo de saber se a porta está livre me avissa!
Editado pela última vez por Andremp em 19 Jan 2007 18:08, em um total de 1 vez.
Avatar do usuário
Andremp
Bit
 
Mensagens: 45
Registrado em: 13 Out 2006 13:37
Localização: Florianópolis

Mensagempor Andremp » 19 Jan 2007 18:07

Eu acho que não mais é possível o sistema criar COM1, COM3 e não existir uma COM2 ?
Avatar do usuário
Andremp
Bit
 
Mensagens: 45
Registrado em: 13 Out 2006 13:37
Localização: Florianópolis

Mensagempor Wagner de Queiroz » 24 Mai 2008 12:53

possivel sim criar uma COM1, COM16, com4 sem ter uma COM2. Isso s nao vale para portas seriais base como as que ficam no hardware padrao (endereco 03f8, 2f8, etc) pq elas sao definidas no setup da maquina e geralmente nao podem ser mudadas pelo windows.

agora para seriais baseadas em USB, bluetooth ou outros que sao conectadas ao computador isso sim bem possivel. o chip FTDI pode mudar sua porta com pelo painel de controle assim como os cabos conversores USB Serial baseados no chip Prolific PL2303.

Andremp vc tem usado o synaser? Tem problemas de perda de dados no recebimento?

Antes que eu me esquea, para saber se uma porta esta livre depois de aberta, use o metodo CanRead ou CanWrite.

Agora se voce nao sabe se a porta esta livre ou nao antes de abrir isso eu nao sei ao certo.

tem uma funcao chamada GetSerialPortNames que lista as portas seriais instaladas no sistema com versoes para windows e linux.

eu mandei um email para o criador do synaser que demorou um bocado para responder que diz que vai tentar ajudar. pois estou tendo problema de perda de dados recebidos.

se ainda usar o synaser podiamos conversar por MSN.
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP


Voltar para Delphi e Pascal

Quem está online

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

x