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

serielle kommunikation Kategorie: Programmierung (von DieterF - 20.05.2006 13:46)
Ich nutze:
C-Control II Station, OSOPT V3.0
Hallo,

ich möchte mit der Station kommunizieren und dieses vom PC aus steuern.
Ich möchte z.B. Daten aus meiner Wetterstation an die CC2 senden und Statusdaten von der CC2 empfangen
Auf dem PC läuft ein VB Programm z.B. mit dem MsComm Steuerelement das folgende Befehle absetz:

' Sensordaten aus Station lesen --------------------------------------------------------------------------------------------
MSComm1.Output = "a"
DoEvents
MSComm1.Output = "b"
' Es sollen alle verfügbaren Daten abgerufen werden.
' Prüfen, ob Daten vorhanden sind.
If MSComm1.InBufferCount Then
   ' Daten lesen.
   InString$ = MSComm1.Input
   ' Umwandeln und ausgeben
   x = InStr(1, InString, "AD0=")
   If x > 0 Then
      Schema.txtBox(9).Text = Val(Mid(InString, x + 4, 3)) / 10
   End If
   x = InStr(1, InString, "AD1=")
   If x > 0 Then
      Schema.txtBox(13).Text = Val(Mid(InString, x + 4, 3)) / 10
   End If
End If

' Wetterdaten an Station übergeben ---------------------------------------------------------------------------------------
cString = "A" + CStr(Int(Rs!weatherdata * 10)) + vbCrLf
MSComm1.Output = cString


Dazu habe ich auf der Station folgenden Tread geschrieben, der auch funktioniert:
//---------------------------------------------------------------------------------------------------
  thread SerKom{
//---------------------------------------------------------------------------------------------------
 int schalter;
 string s;
 byte command;
 command=hwcom.get();
 if      command=='A'{
  // AuÃ?entemperatur setzen --------------------------------------------
  ta=hwcom.input(3);
  }
 else if command=='S' {
  // Schalter und Led ein aus --------------------------------------------
  schalter=hwcom.input(2);
  if schalter>=10 {
     stports.setLED(schalter+1-10,True);
     if schalter == 17  stports.LCDlight(True);
     if schalter == 18  stports.setRel(1,True);
     if schalter == 19  stports.setRel(2,True);

  }else{
     stports.setLED(schalter+1,False);
     if schalter == 7  stports.LCDlight(False);
     if schalter == 8  stports.setRel(1,False);
     if schalter == 9  stports.setRel(2,False);
  }
}
 else if command=='a' {
  // Status AD0 zurückgeben -----------------------------------------
    s="AD0=";
    str.putint(s,tww);
    hwcom.print(s);
    hwcom.ret();
   }
 else if command=='b' {
  // Status AD1 zurückgeben -----------------------------------------
    s="AD1=";
    str.putint(s,twb);
    hwcom.print(s);
    hwcom.ret();
   }
 } // End Thread


Habt Ihr dazu Anmerkungen oder Verbesserungen?

Gruss Dieter



    Antwort schreiben


Antworten:

Re: serielle kommunikation (von André H. - 5.06.2006 19:57)