Duas seriais no mesmo micro

Delphi

18/09/2006

Amigos, tenho um cabo que utilizo com o simulador da impressora fiscal Bematch, em meu micro tem duas seriais.
Preciso de ajuda para o seguinte problema:

Primeiro um software que: Teste a porta Com1 para ver se esta ativa
Depois envie o conteudo de um Edit a cada 5 minutos.

Outro programa: que ao entra teste a Com2 se esta ativa e funionando, depois fique esperando a string enviado pelo programa da com1 e grave em um arquivo txt.

De predefericia queria fazer um codigo que não necessitasse de nenhum componente que não seja nativo do Delphi.
Poderia utilizar API.

Sei que é complicado de fzer, gostaria se possivel que me ajudasse de alguma forma. com exemplos, ou indicação de alguma apostilas ou livro sobre o assnto. Ja pesquizei muito na Net e em foruns e não conseguir encontrar o que procuro.

Desde ja agradeço qualquer ajuda.

Claudio Pinho
msn: claudiodpinho@hotmail.com


Dpinho

Dpinho

Curtidas 0

Respostas

Dpinho

Dpinho

18/09/2006

ja conseguir abrir a porta com este codigo:

[color=red:dcd39c2c40]Function TForm1.PortaSerialLivre(StrPort:String):String;
begin
CommHandle := CreateFile(Pchar(StrPort), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if CommHandle = INVALID_HANDLE_VALUE then //Verifica a abertura da porta
begin
open.Lit := False;
CloseHandle(CommHandle);
butFechar.Visible := false;
butAbrir.Visible := true;
end
else
begin
butAbrir.Visible := false;
butFechar.Visible := true;
butFechar.Top := 34;
open.Lit := True;
ConfiguraControle();
end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
MostraPortasCom;
end;

procedure TForm1.MostraPortasCom();
var
Registro: TRegistry; //Para trabalhar com os Registros do windows.
Lista: Tstrings;
indice: Integer; //Para incrementar.
begin
Registro := TRegistry.Create; //Cria e aloca espaço na memória para o objeto.
try
Registro.RootKey := HKEY_LOCAL_MACHINE; //Define chave raiz.
Registro.OpenKey(´hardware\devicemap\serialcomm´, False); //Abre a chave.
Lista := TstringList.Create;
try
//Obtém uma string contendo todos os nomes de valores associados com a chave atual.
Registro.GetValueNames(Lista);
//Pega nos nomes das portas.
for indice := 0 to Lista.Count - 1 do //Count é a quantidade de portas existentes.
ComboBoxPorta.Items.Add(Registro.ReadString( Lista.Strings[indice] ));

//Adciona os nomes das porta no ComboBox1.
if ComboBoxPorta.Items.Count > 0 then
ComboBoxPorta.ItemIndex := 0; //Para exibir o nome da porta.
finally
Lista.Free;
end;
Registro.CloseKey;
finally
Registro.Free;
end;
end;

procedure TForm1.butAbrirClick(Sender: TObject);
begin
portaSerialLivre(ComboBoxPorta.Text);
end;

procedure TForm1.butFecharClick(Sender: TObject);
begin
//fechar porta

CloseHandle(CommHandle);
butFechar.Visible := false;
butAbrir.Visible := true;
open.Lit := false;
end;

//CONFIGURA PORTA SERIAL.
Function TForm1.ConfiguraControle:boolean;
begin
if not GetCommState(CommHandle, dcb) then
result:= false;

dcb.BaudRate := CBR_9600; //define velocidade em bps.
dcb.ByteSize := 8; //define bits de dados.
dcb.Parity := NOPARITY; //define paridade
dcb.StopBits := ONESTOPBIT; //define stop bit.

if not SetCommState(CommHandle, dcb) then
result:= false
else
result:= true;
end;[/color:dcd39c2c40]

Agora preciso criar um função para enviar o conteudo de um edit pela com1.
E outra função para receber pela com2.


GOSTEI 0
Dpinho

Dpinho

18/09/2006

Alguem pode ajudar?


GOSTEI 0
POSTAR