Lazarus™
Level-2
- Beiträge
- 434
- Reaktionspunkte
- 52
-> Hier kostenlos registrieren
Hallo Zottel, nochmal eine Frage
Ich habe DaveInterface^.Timeout := 2000000; // 2 Sekunden
und folgenden Code :
Wenn direkt im Lesen von Variablen aus der Steuerung nun der CP ausgeht, kommt mein Programm nie wieder ??
Gilt das TimeOut nicht auch für DaveReadBytes... Kann es sein, das, wenn der CP ausfällt mitten in DaveReadBytes ein Programmhänger entsteht ???? Früher,mit dem Seriellen Adapter, habe ich das so nie gesehen. Bin mir aber nicht sicher...
Und lach nicht, mit dem Ping vor dem Lesen, habe ich eine schnellere Reaktion bei ausgefallenem CP (?)
Ich habe DaveInterface^.Timeout := 2000000; // 2 Sekunden
und folgenden Code :
Code:
function TMaschine.NextJob: Integer;
begin
Result := -1;
if TestPing(FIpAdresse, PollTimeOut) then begin
case FJobIndex of
0: Result := DaveReadBytes(DaveConnection, DaveInputs, 0, 0, 128, @EData[0]); // EB 0 - 127
1: Result := DaveReadBytes(DaveConnection, DaveOutputs, 0, 0, 2, @AData[0]); // AB 0 - 127
2: Result := DaveReadBytes(DaveConnection, DaveFlags, 0, 0, 128, @MData[0]); // MB 0-127
3: Result := DaveReadBytes(DaveConnection, DaveFlags, 0, 128, 128, @MData[128]); // MB 128 - 255
4: Result := DaveReadBytes(DaveConnection, DaveDB, 1, 0, 150, @DB1Data[0]); // DB1 DBB 0 - 149
5: Result := DaveReadBytes(DaveConnection, DaveDB, 1, 150, 148, @DB1Data[150]); // DB1 DBB 150 - 298
6: Result := DaveReadBytes(DaveConnection, DaveDB, 35, 0, 150, @DB35Data[0]); // DB35 DBB 0 - 149
7: Result := DaveReadBytes(DaveConnection, DaveDB, 35, 150, 150, @DB35Data[150]); // DB35 DBB 150 - 299
8: Result := DaveReadBytes(DaveConnection, DaveDB, 35, 300, 150, @DB35Data[300]); // DB35 DBB 300 - 449
9: Result := DaveReadBytes(DaveConnection, DaveDB, 20, 0, 103, @DB20Data[0]); // DB20 DBB 0 - 102
10: Result := DaveReadSZL(DaveConnection, $19, 0, @SzlData[0]); // SZL Led - Abbild
100: Result := DaveWriteBytes(DaveConnection, DaveDB, 1, 48, 4, @DB1Data[48]); // DB1 DBB 48 - 51
end;
Inc(FJobIndex);
if FJobIndex < 100 then begin
if FJobIndex > 10 then
FJobIndex := 0;
end else begin
if FJobIndex > 100 then
FJobIndex := 0;
end;
end;
end;
Wenn direkt im Lesen von Variablen aus der Steuerung nun der CP ausgeht, kommt mein Programm nie wieder ??
Gilt das TimeOut nicht auch für DaveReadBytes... Kann es sein, das, wenn der CP ausfällt mitten in DaveReadBytes ein Programmhänger entsteht ???? Früher,mit dem Seriellen Adapter, habe ich das so nie gesehen. Bin mir aber nicht sicher...
Und lach nicht, mit dem Ping vor dem Lesen, habe ich eine schnellere Reaktion bei ausgefallenem CP (?)