Portas COM

Delphi

04/02/2003

Preciso de um componente que capture dados via portas seriais (COM1, COM2) para desenvolvimento do meu projeto de conclusão. Para tal, se alguém possuir, agradeço de comunicar via e-mail para gialdi@smo.com.br.


Anonymous

Anonymous

Curtidas 0

Respostas

Skaarj

Skaarj

04/02/2003

procedure TForm1.PegaModem(porta : string);
var
FHandle : THandle;
Reg : TRegistry;
Lista : TStrings;
i : integer;
varPorta, varModelo : string;
begin
Reg :=TRegistry.Create;

//Procurar na secção...
Reg.RootKey :=HKEY_LOCAL_MACHINE;

//SubSecção onde estão as Portas de comunicação disponíveis
if Reg.OpenKey(´\Hardware\DeviceMap\SerialComm´, false) then begin

//Cria a uma ´lista´ das portas encontradas (mouse, modem... etc..)
lista := TStringList.Create;

//Adiciona à ´lista´ as portas encontradas
Reg.GetValueNames(lista);
for i := 0 to lista.count -1 do begin
if trim(porta) = ´´ then
begin
varPorta := Reg.ReadString(lista[i]);// Lê nome da porta
combobox1.Items.Add(varPorta);
end
else
varPorta := porta;

{Cria o Handle para receber a(s) porta(s) e faz tentativa de abertura em todas encontradas, no modo leitura ou escrita (modem) }
FHandle := CreateFile(
PChar(´\\.\´ + varPorta),
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
0);

// Se for uma porta válida para modem...
if FHandle <> INVALID_HANDLE_VALUE then begin
CloseHandle(FHandle); // Fecha o Handle e a porta

//Pega o nome/modelo do modem instalado na porta existente
if Reg.OpenKey(´\System\CurrentControlSet\´+
´Services\Class\Modem\0000\´, false)then begin
varModelo := Reg.ReadString(´Model´);
Label2.Caption := varModelo+´ - Instalado na porta ´+varPorta;
Combobox1.Text := varPorta;
end;
end
else
Label2.Caption := ´Não há modem instalado na porta ´+varPorta;
end;
//Fecha e libera variáveis
Reg.CloseKey;
Lista.Free;
Reg.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
porta : string;
begin
Combobox1.Clear;
PegaModem(porta);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
porta : string;
begin
//Verificar se existe mais de um modem...
porta := combobox1.text;
PegaModem(porta);
end;

end.


GOSTEI 0
Anonymous

Anonymous

04/02/2003

Utilize o componente Async32.
Exemplos e o componente entre no site abaixo:

[url]www.veloso.kit.net[/url]

outros exemplos entre no site abaixo:
[url]www.tecsimi.com.br[/url]

Entre na página d download de ambos.


OBS:
A utilização da API do Windows para leitura da porta serial é muito complexa.


GOSTEI 0
Dor_poa

Dor_poa

04/02/2003

Eu uso ele e é muito bom se chama Comport, caso náo ache me manda um email....


GOSTEI 0
POSTAR