Portas COM
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
Curtidas 0
Respostas
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.
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
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.
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
04/02/2003
Eu uso ele e é muito bom se chama Comport, caso náo ache me manda um email....
GOSTEI 0