Zottel
Level-3
- Beiträge
- 2.299
- Reaktionspunkte
- 278
-> Hier kostenlos registrieren
Ich habe gefragt, ob es 2 oder 3 Änderungen sind, weil dein voriges Posting DREI Zeilen Code enthielt. (Ja, ich hätte auch in den Quelltext gucken können...)Hallo Zottel,
für mich sind das 2 Grundlegende Änderungen beim Programmablauf.
Die eigentliche Änderung besteht in meinen Augen aus diesen beiden Zeilen:
Code:dc->communicationType = 2; // OP dc->maxPDUlength = 240; // hack for LOGO
Und es wundert mich. Möglicherweise kann die LOGO die PDU-Länge nicht aushandeln, wie es die anderen Steuerungen machen?Das ich die Änderungen brauche ist für mich ein funktionierender Workaround.
Dann verstehe ich, warum
Code:
dc->maxPDUlength = 240; // hack for LOGO
Aber bei
Code:
dc->communicationType = 2; // OP
Dann beantworte bitte noch mal klip und klar, dass die beiden Programmaufrufe KEIN verschiedenes Ergebnis liefern. Ich sitz da nämlich vor und denke: "Warum postet er nun 2 Ausgaben?. Ich sehe keinen Unterschied!" (abgesehen von der Debug-Ausgabe, die ich zum Vergleich im Geiste ausblenden muß.
Ziemlicher Mist. 1.Die beiden ErgänzungenWie wäre es denn wenn man in die Lib ein Precompiler-Flag(#ifdef SIEMENS_LOGO_0BA7) abfägt und beim Aufruf von daveNewConnection(..,..,..,..) die entsprechenden Einstellungen für die PDU-Länge,(..) hinterlegt?
Code:
dc->maxPDUlength = 240; // hack for LOGO
dc->communicationType = 2; // OP
2.Für die Anbindung an solche Programmiersprachen, die nicht direkt über Zeiger auf Felder eines structs zugreifen können, wären Methoden wie setMaxPDUlength erforderlich.
3. Die Optionen von testISO_TCP wären um Optionen für maxPDUlength und Kommunikationsart zu ergänzen.
4. Eventuell wäre ein Programm testLOGO_TCP sinnvoll, weil die Leute sich mit Kommandozeilenoptionen so schwer tun...