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

Re: hwcomm und multithreading Kategorie: Programmierung (von André H. - 10.04.2004 9:47)
Als Antwort auf Re: hwcomm und multithreading von Johannes - 4.04.2004 16:45
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT_V2, OSOPT V3.0
Hallo Johannes,


> ich hatte nur hier mal gehört, dass Multithreading und Hwcom bei der CC2 gro�e Probleme bereiten soll.
> Ich habe nun ein Modul geschrieben, was immer nur in einem Thread sendet und empfängt. Mein
> Problem war, dass mir beim Senden eines Strings die Zeichenlänge zu kurz war. Erst gestern ist mir
> aufgefallen, dass ich ja genauso gut ein Bytearray senden kann, dass aber wesentlich länger sein
> darf als ein String. Deshalb wollte ich einen String in ein Bytearray umwandeln.

Das Umwandeln in ein Bytearray wäre hier eher ein Umkopieren mit mem.copy() .
Allerdings gibt es auch einen Dirty-Hack:

string s[4]; // Stringarray mit 4 Elementen = 120 Zeichen = 128 Byte
...
...
hwcom.send(s[0],128);
...


So werden alle 128Byte der vier Strings gesendet.
Jedoch muÃ? Du PC-seitig ein wenig mehr auswerten:
- Null-Zeichen (ASCII-0 entfernen)
- Jedes 32.te Byte entfernen (in diesem Byte steht die Anzahl der Bytes pro String)

Alternativ kannst Du, wie gesagt, mit mem.copy() arbeiten oder sogar eine eigene Funktion
hierfür benutzen:
byte longstring[130]; // String mit 128 Zeichen
...
function StrToLongstr(byte src[], byte dest[])
{byte i;
 for i=0 ... src[31]-1
 {
  dest[dest[129]+i] =src[i];
 }
 dest[129]=dest[129]+i;
 dest[dest[129]] =0;
}
...
...

string a,b,c,d;
...
...
longstring[129]=0; // Clear Longstring
longstring[0]=0;

StrToLongstr(a,longstring);
StrToLongstr(b,longstring);
StrToLongstr(b,longstring);
StrToLongstr(c,longstring);
hwcom.send(longstring,longstring[129]);
...


Auf "longstring" darfst Du erst wieder schreibend zugreifen, wenn hwcom.ready()==True ist.

Ich hoffe, das hilft Dir. :-)

MfG André H.


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: hwcomm und multithreading (von Johannes - 12.04.2004 18:09)