Comment sur un port série sosu delphi 8 .net?

baris48 Messages postés 1 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 2 juin 2004 - 2 juin 2004 à 21:51
cs_flo1984 Messages postés 12 Date d'inscription dimanche 16 mai 2004 Statut Membre Dernière intervention 22 février 2006 - 5 juin 2004 à 15:56
Bjr,
j ai des pb pr ecrire sur le port série ss delphi 8 .net?

j ai essayé d utiliser writeFile ReadFile, la sol de delphi 7 .. mais sans succès.. :(

si qlq un peut m 'aider...

merci d avance

1 réponse

cs_flo1984 Messages postés 12 Date d'inscription dimanche 16 mai 2004 Statut Membre Dernière intervention 22 février 2006
5 juin 2004 à 15:56
En utilisant l'API je comme ça :

procedure TForm1.XXX;
var
nb : Cardinal ;
timeout : Tcommtimeouts ;
hcom: THandle ;
pcom: PAnsiChar ;
dcb : Tdcb ;
Hdl: THandle;

begin

pcom := 'COM1' ;
dcb.BaudRate := CBR_9600 ;
dcb.StopBits := ONESTOPBIT ;
dcb.Parity := NOPARITY ;
dcb.ByteSize := 8 ;

hcom := CreateFile(pcom, GENERIC_READ or GENERIC_WRITE, 0, NIL, OPEN_EXISTING, 0, 0);

if (hcom = INVALID_HANDLE_VALUE)
then EdtEnvoi.Text := 'Erreur ouverture';

if not SetCommState(hcom,dcb)
then EdtEnvoi.Text := 'Erreur SetCommState';

TimeOut.ReadIntervalTimeOut:=MAXDWORD;
TimeOut.ReadTotalTimeOutMultiplier:=0;
TimeOut.ReadTotalTimeOutConstant:=0;
SetCommTimeOuts(hcom,timeout);

CreateThread(nil,0,@attente,Label1,0,hdl);

writefile(hcom,key,1,nb,nil);

end;

procedure attente(lbl : TLabel); stdcall;
var
buffer: Char ;
n : Cardinal;
i : Byte ;
begin

repeat

buffer:=' ' ;
ReadFile(hcom,buffer,1,n,nil);
sleep(10);
if buffer<>' '
then lbl.Caption:=buffer;

until (FALSE);

end;

Mais le plus simple c'est encore d'utiliser le composant TComPort de Dejan Crnila que devrais trouver sans trop de difficulté.
0
Rejoignez-nous