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

Re: Integer/Long über HWCom senden Kategorie: Programmierung (von André H. - 19.12.2004 13:48)
Als Antwort auf Integer/Long über HWCom senden von Sushi Bert - 8.12.2004 15:09
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
Hallo Bert,

> Ich versuch gerade folgendes:
>
>
> byte sbuf[2];
>
> sbuf[1]=32450;
> hwcom.send(sbuf,2);
>

> ...
> Dieses Versuche ich mit VB zu empfangen. Klappt mit Byte-Variablen prima.
> Nur wenn ich integer-Variablen (oder long)  senden möchte kann ich diese in VB nicht auswerten.
>
> Dieses als String zu senden währe möglich, macht aber viel Arbeit alles wieder zu ändern.

Dies kann natürlich niche gehen, da Du versuchst einer Bytevariabel einen Integerwert zu zu weisen.
Das Endet in einer "AND 0xFF"-Verknüpung.
Du kannst, wie schon genannt, die Zahl als String senden.
Nachteile:
- Es werden unnötig viele Datenbytes über die RS232 übertragen.
- Es mu� ein Anschlu�zeichen gesendet werden, da der String keine feste Länge hat.
Vorteil:
- die Auswertung in VB ist relativ einfach.

Aber, warum verwendest Du nicht einfach die Funktionen in hwcom.c2, zum Senden von
Longwerte als 4Byte-Datenpaket ? hwcom.putling();
Du brauchst dann nur
hwcom.putlong(wert);

schreiben, und der Wert wird als vier Bytes mit MSB-First gesendet.
Der Vorteil ist hier, da� immer nur 4 Bytes übertragen werden.
Somit hast Du alle Vorteile eines festen Formats.

In VB kannst Du dies dann sehr einfach wieder zusammensetzten:

Function getlong ()
 inputlenold = MSCcomm1.Inputlen
 MSCcomm1.Inputlen = 1
 Wert = 0
 For i = 0 To 3
   Wert = (Wert * 256) + ASC(MSComm1.Input)
 Next i
 MSCcomm1.Inputlen = inputlenold
 getlong = Wert
End Function


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: