
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> Ich möchte Wetterdaten von der seriellen Schnittstelle meiner Wetterstation WS2300 einlesen und per SMS weitersenden. Das versenden von SMS mit dem Siemensmodul M20 ist kein Problem. Aber das einlesen der Daten von der Wetterstation wenn eine Reihe von bits daher kommen steigt mein Programmerl dabei aus. Wer kann mir dabei weiterhelfen wie ich die Daten flüssig übernehmen kann? Hallo, ich hab eine WS 2000 und nutze die Daten von einigen Temperatursensoren für eine Steuerung mit einer C-Control I 2.0. Empfange die Daten mit dem „PC-Wettersensor Empfänger“ von ELV. Lese die Daten über die serielle Schnittstelle ein. Hier ein Auszug, nur Datenempfang und Aufbereitung der Temperatursensoren (Temperatur und Feuchte), aus meinem Programm zur Gewächshaussteuerung. Das Sendeprotokoll besteht aus 8 bit (im Programm eins bis acht) im einzelnen sind: Eins = Startsignal Zwei = Adresse des Sensors Drei = Zeigt an wie der Temperaturwert zu lesen ist Vier = Wert Temperatur Fuenf = Wert Luftfeuchtigkeit Sechs, sieben, acht = von mir nicht benutzt, ist wohl nur für Sensoren interessant die mehr als 2 Werte übertragen. Negative Temperaturen können mit diesem Programm noch nicht dargestellt werden da ich in diesem Winter noch nicht die Zeit hatte mir das Sendeprotokoll in „Rohform“ anzusehen um herauszufinden wie der Wert „Drei“ ist wenn negative Temperaturen übertragen werden. print"#ON_LCD#"; print"#INIT#"; print"#CLR#"; print"#OFF#"; Baud 1 'Umstellung der Schnittstelle auf 19200 if Rxd then gosub empfang print"#OFF#"; #Empfang 'Auslesen der empfangenen Daten von den Temperatursensoren get eins:get zwei:get drei: get vier:get fuenf:get sechs:get sieben:get acht 'Startzeichen Abfragen If (eins=&h2) then goto start return #start 'Sensor identifizieren If (zwei=&h98) then gosub Gewaechshaus return #Gewaechshaus 'Temperaturwert für den jeweiligen Sensor aufbereiten If (drei=&h80) then gosub Abzug If (drei=&h81) then gosub kabzug If (drei=&h82) then gosub plus If (drei=&h83) then gosub plusplus 'Feuchte aufbereiten feuchteinnen=fuenf and &h7F 'Temperatur mit Kommastelle aufbereiten Tempinnen=wert/10 Tempinnenlo=wert mod 10 return 'Wert aufbereiten Funksensor wenn drei =128 ist #Abzug wert=(vier and &h7f) return 'Wert aufbereiten Funksensor wenn drei =129 ist #kabzug wert=vier return 'Wert aufbereiten Funksensor wenn drei =130 ist #plus wert=(vier and &h7f)+&h100 return 'Wert aufbereiten Funksensor wenn drei =131 ist #plusplus wert=(vier and &h7f)+&h180 return 'Programmteil zur Anzeige der Messwerte auf dem LCD-Display 4*16 #Innenwerte print"#OFF#"; print"#ON_LCD#"; print"#CLR#"; print"#L101#"; Print "Innentemperatur" print"#L201#"; print Tempinnen; 'AUSGABE GANZE Zahl print"."; 'AUSGABE DEZIMALPUNKT print Tempinnenlo; 'AUSGABE NACHKOMMA STELLEN print" C"; print"#L117#"; Print "Innenfeuchte" print"#L217#"; print feuchteinnen print " %rH" print"#OFF#"; gosub keydecode If keycode=11 then goto Messwerte pause 10 goto innenwerte |
| Antwort schreiben |