Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Exeption bei ReadCom (https://www.delphipraxis.net/134047-exeption-bei-readcom.html)

Gehstock 14. Mai 2009 19:45


Exeption bei ReadCom
 
Zitat:

---------------------------
Apoxiutils1
---------------------------
Access violation at address 00405750 in module 'APOXIutils1.exe'. Write of address 0006004F.
---------------------------
OK
---------------------------

Delphi-Quellcode:
var
i : Integer;
c : Array of Byte;
begin
  SetLength(c,10);
   WriteCom(@Start,sizeOf(Start));
     if not ReadCom(@c,9) then//****hier nicht
      WriteCom(@Start3,sizeOf(Start3))
     else
      WriteCom(@Start2,sizeOf(Start2));
        if not ReadCom(@c,9) then//****aber hier
         AddLinesLOG(3,'Nicht erfolgt');
end;
die Com Funktionen

Delphi-Quellcode:
function ReadCom(Buf:Pointer; BufLen :Dword) : boolean;
var
 dErr: Dword;
begin
 result := False;
 if (hCom<>INVALID_HANDLE_VALUE)and(Buf<>Nil)and(BufLen<>0) then begin
  rxlen:=0;
  if FlgOvrlp then begin
   COMrd.hEvent:=CreateEvent(Nil,TRUE,FALSE,Nil);
   if not ReadFile(hCom,Buf^,BufLen,rxLen,@COMrd) then begin
    if not GetOverlappedResult(hCom,COMrd,rxLen,True) then begin
    end;
   end;
//   ResetEvent(COMrd.hEvent);
   CloseHandle(COMrd.hEvent);
  end
  else begin
   if not ReadFile(hCom,Buf^,BufLen,rxLen,Nil) then begin
//     ClearCommError(hCom,dErr,Nil);
//     exit;
   end;
  end;
  if rxLen = BufLen then
  begin
  result := True;
//  frmMain.AddTerminalLog(Buf,BufLen,'TX');
  end else ClearCommError(hCom,dErr,Nil);
 end;
end;

function WriteCom(Buf:Pointer; BufLen:Dword) : boolean;
Var
 dErr: Dword;
begin
 result:=FALSE;
 if (hCom<>INVALID_HANDLE_VALUE)and(Buf<>Nil)and(BufLen<>0) then begin
  txLen:=0;
  if FlgOvrlp then begin
   COMwr.hEvent:=CreateEvent(Nil,TRUE,FALSE,Nil);
   if not WriteFile(hCom,Buf^,BufLen,txLen,@COMwr) then begin
    if not GetOverlappedResult(hCom,COMwr,txLen,True) then begin
    end;
//     ClearCommError(hCom,dErr,Nil);
   end;
//   ResetEvent(COMwr.hEvent);
   CloseHandle(COMwr.hEvent);
  end
  else begin
   if not WriteFile(hCom,Buf^,BufLen,txLen,Nil) then begin
//     ClearCommError(hCom,dErr,Nil);
//     exit;
   end;
  end;
  if txLen = BufLen then result:=TRUE
  else ClearCommError(hCom,dErr,Nil);
 end;
end;
das ComLog

Zitat:

[14/05/2009 20:57:24] - Written data

41 54 0d AT.
41 54 23 00 58 00 67 42 fa e8 ce 72 29 33 0d AT#.X.gBúèÎr)3.

[14/05/2009 20:57:25] - Read data

57 00 06 00 4d 74 db b5 99 W...MtÛµ™
Es sieht also danach aus das das Auslesen klappt

Muetze1 14. Mai 2009 23:13

Re: Exeption bei ReadCom
 
Delphi-Quellcode:
ReadCom(@c[0], ...);


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz