Problem mit WriteFile für die COM-Schnittstelle
31. Mai 2006, 09:01
Hi DPler
Ich hab ein Problem mit WriteFile für die COM-Schnittstelle
Ich verwende für die COM Schnittstelle die Unit UCOM (nicht die Komponente)
Jetzt hab ich mir eine Prozedur geschrieben die vier Byte nacheinander sendet und beim vierten Byte gibt es einen access fehler (schreiben auf adresse: zugriff verweigert)
Delphi-Quellcode:
procedure TCOMThread.SendData(Speicherpos : integer; Data : Char);
const
cSleepTime = 10;
var
DPTR, DPH, DPL : String;
Command : String;
TempChar : PChar;
begin
DPTR := IntToBin(Speicherpos, 16);
DPH := copy(DPTR, 1, 8);
DPL := copy(DPTR, 9, 8);
COMPort.SendString(#64);
sleep(cSleepTime);
COMPort.SendString(PChar(IntToStr(BinToInt(DPH))));
sleep(cSleepTime);
COMPort.SendString(PChar(IntToStr(BinToInt(DPL))));
sleep(cSleepTime);
TempChar := PChar(Data);
COMPort.SendString(TempChar); //<--- Hier kommt die Fehlermeldung
end;
Die Unit:
Delphi-Quellcode:
procedure TCOM.SendString(const Buffer: PChar);
var BytesWritten: DWord;
begin
WriteFile(PortHandle, Buffer^ ,Length(Buffer) ,BytesWritten ,NIL);
Inc(COMThread.ComSendedBytes);
end;
Der Aufruf der Prozedure:
SendData(AktSpeicherPos, DataField[Y, X]);
Konnt ihr mir helfen?
Alex "Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
|