Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Stören Threads die serielle Übertragung? Kategorie: Programmierung (von Michael Zapf - 9.09.2007 16:23)
Ich nutze:
C-Control II Unit, CC2-ReglerBoard, OSOPT V3.1
Hallo,

ich habe hier eine interessante Beobachtung, aber vielleicht steht das schon irgendwo und ich hab's nicht gesehen.

Also: Ich hatte schon vor ein paar Wochen erzählt, dass ich ein Regelungssystem mit dem CC2+ReglerBoard aufgebaut
habe. Eine der Eigenschaften ist, dass man das System im laufenden Betrieb vom PC aus abfragen und umkonfigurieren
kann. Das System läuft multithreaded. Der Anwender kann auch den Regelsatz zwischendurch austauschen. Dieser
wird nach Erhalt auf das Flash-ROM gebrannt.

Aber ich hatte immer wieder Kommunikationsprobleme. Irgendwie ging hier und dort mal ein Byte verloren, wie mir mein
Protokoll meldete. Nur hatte ich bislang keinen Schimmer, wieso manchmal die Ã?bertragung funktioniert und manchmal
nicht. Ich habe hier und dort versucht, Bereiche als kritischen Abschnitt zu behandeln und mit capture-release zu
schützen, da ich vermutete, dass irgendwie zwischendrin ein Thread auch auch die Schnittstelle zugreift, aber das
half alles nichts. Dann wählte ich einen grö�eren Empfangspuffer, aber helfen konnte das auch nicht.

Und jetzt bin ich drauf gekommen: Nachdem ich alles rausgeworfen hatte und nur noch den Upload-Server im CC2
übriglie�, fiel mir auf, dass es nur zu Instabilitäten kommt, wenn ich das Modul "rbports.c2" einbinde. Wenn ich es
weglasse, waren alle Versuche (>100) fehlerfrei.

Ich wusste bereits, dass in rbports.c2 ein Main-Thread gestartet wird, der im Hintergrund die Ports abfragt.

Die Lösung - so scheint es nach ein paar Tests - ist offenbar, dass ich den Thread in der fraglichen Zeit stoppe:

    halt rbports.main;
    ...
    nRead = hwcom.receive(code, nLengthPrg, 10000);
    ...
    resume rbports.main;

Damit geht es nun fehlerfrei (also, bislang).

Das ist nun keine Frage, sondern einfach eine Beobachtung. Vielleicht ist das noch jemandem widerfahren.
Klingt dieser Zusammenhang irgendwie plausibel? Sollte da etwas vom System aus getan werden (Multithreading
blockieren während receive oder so)? Oder einfach den Programmierer auf dieses Problem hinweisen?

Michael


    Antwort schreiben


Antworten:

Re: Stören Threads die serielle Übertragung? (von André H. - 14.09.2007 10:45)
    Re: Stören Threads die serielle Übertragung? (von Michael Zapf - 15.09.2007 13:07)
        Re: Stören Threads die serielle Übertragung? (von André H. - 30.09.2007 18:59)
            CRC16 (war Re: Stören Threads die serielle Übertragung?) (von Michael Zapf - 17.10.2007 15:12)
                Re: CRC16 (war Re: Stören Threads die serielle Übertragung?) (von Michael Zapf - 17.10.2007 15:16)
Re: Stören Threads die serielle Übertragung? (von Tinber - 12.09.2007 20:36)
    Re: Stören Threads die serielle Übertragung? (von Michael Zapf - 13.09.2007 23:03)
    Re: Stören Threads die serielle Übertragung? (von Michael Zapf - 13.09.2007 22:53)