serielle kommunikation Kategorie: Programmierung (von DieterF - 20.05.2006 13:46) | ||
| ||
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) |