큰꼼의 세상

 

CPort 컴퍼넌트사용할때  USBTo232포트를 제거하는 경우 "PurgeComm function failed(Error:22)" 에러가 발생합니다.

Component CPort.PAS 파일에서 아래와 같이 예외처리를 추가 해주면 오류를 해결할수 있습니다.

원본:

procedure TCustomComPort.AbortAllAsync;
begin
    try
        if not PurgeComm(FHandle, PURGE_TXABORT or PURGE_RXABORT) then
          //raise EComPort.Create
      CallException(CError_PurgeFailed, GetLastError);
end;


수정:

procedure TCustomComPort.AbortAllAsync;
begin
    try
          if not PurgeComm(FHandle, PURGE_TXABORT or PURGE_RXABORT) then
              //raise EComPort.Create
              CallException(CError_PurgeFailed, GetLastError);
    except on E: Exception do
          Application.ProcessMessages;
    end;
end;