Port asılı kalma sorunu.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
seci20

Port asılı kalma sorunu.

Mesaj gönderen seci20 »

Merhaba. Serial porttan veri alıp gönderiyorum. Olursa işlem yaparken bağlantı koparsa closehandle yaptığım halde genede port kullanılıyor gözüküyor. Port kullanılıyor gözüktüğü için tekrar açma işlemi yapamıyorum. Ancak usb söküp takarsam o zaman ancak kapatıyor. Nerede hata yapıyorum ? Yardımcı olursanız sevinirim.


Port açma işlemini şu şekilde yapıyorum.

Kod: Tümünü seç

  UsbHandle := CreateFile(PWideChar(DevicePath), GENERIC_READ or
 
       GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Set işlemini şu şekilde.

Kod: Tümünü seç

 if not SetupComm(UsbHandle, AdjustmentData.RxBufferSize,
       AdjustmentData.TxBufferSize) then
       Exit;
 
     DCB.BaudRate := AdjustmentData.Baud;
 
     DCB.Parity := 0;
     DCB.ByteSize := 8;
     DCB.StopBits := 0;
     DCB.EvtChar := #10;
 
 
 
     if not SetCommState(UsbHandle, DCB) then
       Exit;
 
     if not SetCommMask(UsbHandle, EV_RXCHAR or EV_ERR) then
       Exit;
     with CommTimeouts do
     begin
       ReadIntervalTimeout := AdjustmentData.ReadIntervalTimeout;
       ReadTotalTimeoutMultiplier := AdjustmentData.ReadTotalTimeoutMultiplier;
       ReadTotalTimeoutConstant := AdjustmentData.ReadTotalTimeoutConstant;
       WriteTotalTimeoutMultiplier :=
         AdjustmentData.WriteTotalTimeoutMultiplier;
       WriteTotalTimeoutConstant := AdjustmentData.WriteTotalTimeoutConstant;
     end;
     if not SetCommTimeouts(UsbHandle, CommTimeouts) then
       Exit;
Close işleminide şu şekilde.

Kod: Tümünü seç

     PurgeComm(UsbHandle, PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or
       PURGE_RXCLEAR);
     CloseHandle(UsbHandle);
Cevapla