Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Josef, > > Zuerst: Lege Dich bitte auf einen Nickname fest. Vorzugsweise mehr als zwei Buchstaben. ;-) > > > ich möchte mir auch eine Homepage wie André H. machen, damit ich auch von überall meine Heizung > > beobachten kann. (In der Arbeit bei Bekannten, im Urlaub usw.) > > Soweit ich es richtig verstanden habe brauche ich ein Web-Server wie z.B. den XPORT, die kann ich ja bei cctools Ordern. > > > > > > Ich habe momentan eine DSL-Flaterate der Telekom. > > Was brauche ich alles damit ich so eine Homepage realisieren kann??? > > Es gibt mehrere Möglichkeiten, dies zu realisieren, welche auch > unterschiedliche Anforderungen stellen. > > Bei allen Möglichkeiten, bei denen kein lokaler Rechner involviert sein soll, ist > ein XPort notwendig. (oder etwas vergleichbares) > > > > Ich zähle jetzt mal die Möglichkeiten auf: > > 1. Stand-Alone-Webserver > Hier würde die CC2 zusammen mit dem XPort als HTTP-Webserver fungieren. > Einen extra Webspace benötigst Du hier nicht unbedingt. > Alles was Du benötigst wäre eine always-on-Verbindung zum Internet. > D.h. die Verbindung geht über einen NAT-Router, der automatisch die Verbindung > wieder aufbaut, sobald diese verlorengeht. (wg. Zwangstrennung etc.) > Da wahrscheinlich nicht jeder, wie ich einen 64er-IP-Block mit festen IPs hat ;-), > mußt Du mit der dynamisch zugewiesenen IP zurechtkommen. > Das hieße in Deinem Fall, daß Du unbedingt einen DYNDNS-Account benötigst > und Dein Router eine entsprechende Funktion bietet. > Im Router selbst muß noch eine Portweiterleitung zum XPort eingerichtet werden. > Diese Möglichkeit hat allerdings einen kleinen Schönheitsfehler. > Momentan lassen sich über die CC2 (ohne größere Mühen) keine Bilder wiedergeben, > so daß sich die Ausgabe auf die Möglichkeiten der HTML-Syntax begrenzt. > Prinzipiell ist es möglich, aber zu erklären, was man hierfür anstellen muß, > würde viele viele Zeilen benötigen. ;-) > Wie man die CC2 samt XPort zu einem Webserver macht, findest Du, wenn Du im Forum > nach den Begriffen "CC2" und "Webserver" suchst. > > > > 2. Stand-Alone-Webserver zusammen mit einem nicht scriptfähigen Webspace > Dies ist prinzipiell identisch mit der ersten Möglichkeit. > Jedoch würde man Bilder und Grafiken auf einen externen Webspace auslagern > und entsprechen in der HTML-Ausgabe der CC2 als externe Grafiken einbinden. > Dies ist z.B. sinnvoll, wenn lediglich ein reiner WEB-Space ohne irgendeine > Möglichkeit für eine Scriptsprache besteht. > Dies ist meist der Fall, wenn der Webspace vom ISP zum Internetzugang gestellt wird. > > > > 3. Senden von Daten an ein PHP-Script, gesteuert von der CC2. > Hier würde man zyklisch alle nötigen Daten zu einem PHP-Script senden, > welches diese verarbeitet und lokal auf dem Webserver speichert. > Ein zweites Script übernimmt die Anzeige, wenn die Homepage aufgerufen wird. > Das Senden der Daten würde man mit Hilfe der Modem-Funktionen des XPorts realisieren. > Man muß hier ein ein HTTP-Post zum Senden der Daten verwenden. > Alternativ ginge dies auch mit einem HTTP-GET und der Übergabe der Daten > über die Adresse. Das wäre zwar einfacher, ist aber auch unsicherer. > Ich habe diese Möglichkeit noch nicht getestet, habe dies aber vor. > Funktionieren wird das auf jeden Fall. Nur Quellcode kann ich hierzu noch nicht bieten. > Der Vorteil dieser Möglichkeit wäre auf jeden Fall, daß man keine feste IP und > auch keinen DYNDNS-Service benötigt. > > > > 4. Anfordern der Daten bei Bedarf über eine Socksverbindung. > Das ist die Möglichkeit, die ich favorisieren würde. > Man benötigt hier, wie bei der dritten Möglichkeit, auch einen PHP-fähigen Webspace. > Zudem muß die Möglichkeit bestehen, Socks-Verbindungen nach außen aufbauen zu können. > Das könnte bei manchem Anbieter, besonders bei den Billiganbietern, gesperrt sein. > Das kann man nur testen. > > Vom prinzipiellen Aufbau sieht diese Lösung so aus: > Wird der Anlagenstatus angezeigt, erfolgt über dem Webserver eine Socksverbindung > zum XPort. Hier wird auf jeden Fall eine feste IP oder ein DYNDNS-Account benötigt. > (Alternativ könnte man zyklisch mit Kombination der dritten Möglichkeit dem Webserver > die eigene IP mitteilen, und so den DYNDNS-Service sparen) > Die Socksverbindung ist prinzipiell nichts anderes, als eine transparente serielle Datenverbindung, > wie sie auch bei der RS232 benutzt wird. > Es gibt zwar ein paar Einschränkungen, aber die fallen hier nicht ins Gewicht. > Um nun Die Daten anfordern zu können, oder evtl. auch Kommandos zu senden, > sollte man einen einfachen Passwortschutz implementieren. > Ich habe das bei mir derzeit noch nicht gemacht, da ich den XPort nur für die Anbindung > an meinen internen Webserver (auch wenn dieser von außen erreichbar ist) testweise nutze. > Die Übermittlung der Daten auf meine öffentlich zugängliche Statusseite erfolgt nach wie vor > mit Hilfe eines kleinen VB-Programm, welches an einem meiner Rechner auch die Visualisierung > und Bedienung meiner Regelung ermöglicht. > Erst wenn ich zeitlich dazu komme, ein komplettes Frontend inkl. Bedienmöglichkeit > zu erstellen, werde ich den XPort fest anschließen. > > Aber nun zum wichtigsten, den Quellcodes. ;-) > Ich habe derzeit das Script auf zwei PHP-Dateien aufgeteilt. > Die eingelesenen Daten werden zusätzlich zur Abfrage auf dem Server zwischengespeichert. > Denn ich habe die Abfrage auf einmal alle 15sek. begrenzt. > Somit wird nicht unnötig oft auf die CC2 zugegriffen, wenn mehrere innerhalb weniger > Sekunden das Anlagenschema abrufen. > Die eine Datei heißt xport.php und übernimmt die Kommunikation und den 15sek Timeout. > Die gelesenen Daten werden immer in eine Datei geschrieben. > Die andere Datei ist die index.php und ist für das Erstellen des Schemas notwendig. > Die Daten werde immer aus der von xport.php erstellten Datei gelesen. > Dies habe ich momentan so gelöst, da ich derzeit mehrer Möglichkeiten habe, > die Daten bereit zu stellen, aber alles über eine Datei angezeigt werden soll, egal, > wie die Daten auf den Webserver (oder meinen lokalen Server) gelangen. > (Mein VB-Programm sendet die Daten z.B. an ein PHP-Script mittels HTTP-Post > an den Webserver, aber schreibt auf meinem lokalen server direkt in die Datei.) > > Hier nun die xport.php: > <php> > <?php > > //Prüfen ob Abfrage notwendig (max. alle 15sek.) > $dataf=fopen("system.dat","r"); > $zeit=explode(",",fgets($dataf,256)); > fclose($dataf); > $uhrzeit=explode(":",$zeit[4]); > $timestamp=mktime($uhrzeit[0], $uhrzeit[1], $uhrzeit[2], $zeit[1], $zeit[2], $zeit[0]); > > if(time()-$timestamp>=15) //15 Sekunden > { > $fp = @fsockopen ("Adresse des XPorts", 10001, $errno, $errstr, 1); > //Die Adresse kann auch die Domain des Dyndns-Accounts sein > $sort=array(3,0,1,2,9,10,12,4,5,6,8,7,11,13,14,23,22,20,21,24,16); > //Dies ist zum Sortieren der Temperaturwerte, da ich diese in > // einer anderen Reihenfolge ablege, als ich sie sende > > if (!$fp) > { > echo "$errstr ($errno) - No connection to XPort<br>\n"; > } > else > {//Bei erfolgreicher Verbindung: > stream_set_timeout($fp, 1);// Timeout: 1 Sekunde > $Data=""; > fputs($fp, "W");// W zum Anfordern der Daten senden > // hier kann eine Passwortabfrage eingefügt werden > while(!$info['timed_out']) > {// Solange es zu keinem Time-Out kommt ... > $in=fread($fp, 512); //Daten lesen > $Data.=$in; > if(substr($in,-3)==".\r\n") break; > // Ein Punkt + CR + LF signalisiert das Datenende > $info = stream_get_meta_data($fp); > } > fclose($fp); > if(!$info['timed_out']) > {// Wenn der Datensatz komplett empfangen wurde... > $Data=substr($Data,strpos($Data,"VAL")+3); > //Ein Datensatz beginnt bei mir mit den drei Buchstaben VAL > //Die restlichen Daten sind binär: > $TempCnt=ord(substr($Data,0,1)); > // Das erste Byte nach VAL gibt die Anzahl der Temperaturwerte wieder. > // Ein Temperaturwert besteht aus zwei Byte (LSB first) > $SWCnt=ord(substr($Data,($TempCnt*2)+1,1)); > // Das zweite Byte enthät die Anzahl der Schaltzustände. > > for($i=0;$i<$TempCnt;$i++) > {// Hier werden die Temperaturwerte zu Klartext zusammengesetzt > $x= ord(substr($Data,($i*2)+2,1))*256 + ord(substr($Data,($i*2)+1,1)); > if($x>=32768) $x=$x-65536; > $Temp[$i]=number_format(($x/10), 1, ',', '')."°C"; > } > for($i=0;$i<$SWCnt;$i++) > {//und hier die Schaltzustände > if($i<10) > $SW[$i]=substr($Data,($i+($TempCnt*2)+2),1); > else // hier werden die beiden IWP-Werte als String 0 bis 100 gespeichert > $SW[$i]=ord(substr($Data,($i+($TempCnt*2)+2),1)); > } > > // Ab hier werden die Daten für die Ausgabe in die Datei zusammengesetzt. > // Die Werte werden durch Semikolon getrennt. > $data=""; > for($i=0;$i<$TempCnt;$i++) > { > $data.=$Temp[$sort[$i]].";"; > } > > $channels=""; > for($i=0;$i<$SWCnt-2;$i++) > { > $channels.=$SW[$i].";"; > } > $IWP=$SW[10]."%;".$SW[11]."%"; > > //Datei schreiben: > $dfile=fopen("system.dat","w"); > fputs($dfile,strftime("%Y,%m,%d,%w,%H:%M:%S")."\r\n");//Zeit > fputs($dfile,$data."\r\n");//Temperaturwerte > fputs($dfile,$channels."\r\n");//Schaltzustände > fputs($dfile,$IWP."\r\n");//Geregelte Pumpen > fclose($dfile); > } > > } > } > ?> > </php> > > Als nächstes kommt die index.php. > Diese entspricht außer dem include() für xport.php dem öffentlich zugänglichen Anlagenschema. > Das Positionieren der Werte wird mittels CSS gemacht. > Eingeschaltete Pumpen und Ventile sind Grafiken, die mit CSS einfach über > dem Hintergrund überlagert werden. > Genauso auch die Darstellung der Rohre, durch die gerade der Solarkreis fließt. > <php> > <?php > include("xport.php"); > > $dow=array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); > $monat=array("","Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"); > $data=fopen("system.dat","r"); > > $zeit=explode(",",fgets($data,256)); > // $Stand=$dow[$zeit[3]-1].", ".$zeit[2].".".$monat[$zeit[1]]." ".$zeit[0]." - ".$zeit[4]; > $Stand=$dow[$zeit[3]].", ".$zeit[2].".".$monat[$zeit[1]*1]." ".$zeit[0]." - ".$zeit[4]; > > $Temp=explode(";",fgets($data,256)); > $TempCNT=count($Temp); > for($i=0;$i<$TempCNT;$i++) > { > if($Temp[$i]=="-3100,0°C") $Temp[$i]="err U "; > else if($Temp[$i]=="-3200,0°C") $Temp[$i]="err K "; > } > > $channel=explode(";",fgets($data,256)); > > $IWP=explode(";",fgets($data,256)); > // if(strlen(trim($channel[10]))>=2) $IWP[0]=$channel[10]; > fclose($data); > > ?><html> > <head> > <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> > <title>Solaranlage</title> > <script type="text/javascript"> > window.setTimeout("window.location.href = 'index.php';",15000); > </script> > > <style type="text/css"> > <!-- > body { } > #schema{ position:relative;z-index:3;} > #tkol { position:absolute; top:6px; left:791px; width:57px; height:50px; z-index:2; text-align:right; } > #tkol2 { position:absolute; top:51px; left:722px; width:57px; height:50px; z-index:2; text-align:right; } > #tkolv { position:absolute; top:131px; left:687px; width:57px; height:50px; z-index:2; text-align:right; } > #ta { position:absolute; top:51px; left:437px; width:57px; height:50px; z-index:2; text-align:right; } > #tkes { position:absolute; top:192px; left:178px; width:57px; height:50px; z-index:2; text-align:right; } > #tabg { position:absolute; top:76px; left:178px; width:57px; height:50px; z-index:2; text-align:right; } > #tbwo { position:absolute; top:266px; left:762px; width:57px; height:50px; z-index:2; text-align:right; } > #tbwu { position:absolute; top:397px; left:762px; width:57px; height:50px; z-index:2; text-align:right; } > #tpo { position:absolute; top:201px; left:447px; width:57px; height:50px; z-index:2; text-align:right; } > #tpmo { position:absolute; top:266px; left:447px; width:57px; height:50px; z-index:2; text-align:right; } > #tpmu { position:absolute; top:326px; left:447px; width:57px; height:50px; z-index:2; text-align:right; } > #tpu { position:absolute; top:421px; left:447px; width:57px; height:50px; z-index:2; text-align:right; } > #tbwr { position:absolute; top:501px; left:477px; width:57px; height:50px; z-index:2; text-align:right; } > #thk1 { position:absolute; top:161px; left:342px; width:57px; height:50px; z-index:2; text-align:right; } > #thk2 { position:absolute; top:161px; left:272px; width:57px; height:50px; z-index:2; text-align:right; } > #tmotv { position:absolute; top:402px; left:45px; width:57px; height:50px; z-index:2; text-align:right; } > #tmotr { position:absolute; top:430px; left:45px; width:57px; height:50px; z-index:2; text-align:right; } > #thkav { position:absolute; top:337px; left:36px; width:57px; height:50px; z-index:2; text-align:right; } > #thkam { position:absolute; top:463px; left:8px; width:57px; height:50px; z-index:2; text-align:right; } > #thkaa { position:absolute; top:493px; left:155px; width:57px; height:50px; z-index:2; text-align:right; } > #thkaae{ position:absolute; top:430px; left:117px; width:57px; height:50px; z-index:2; text-align:right; } > #iwp0 { position:absolute; top:227px; left:587px; width:57px; height:50px; z-index:2; text-align:right; } > #iwp1 { position:absolute; top:432px; left:250px; width:57px; height:50px; z-index:2; text-align:right; } > #vkbw { position:absolute; top:452px; left:656px; z-index:2; } > #vkpuf { position:absolute; top:447px; left:621px; z-index:2; } > #vhk1 { position:absolute; top:265px; left:286px; z-index:2; } > #vhk2 { position:absolute; top:346px; left:319px; z-index:2; } > #vbwr { position:absolute; top:400px; left:417px; z-index:2; } > <?php > if($channel[0]==1) > { > ?>#pkol { position:absolute; top:222px; left:647px; z-index:2; } > #pipesv0 { position:absolute; top:6px; left:792px; z-index:2; } > #pipesv1 { position:absolute; top:97px; left:692px; z-index:2; } > #pipesv2 { position:absolute; top:99px; left:692px; z-index:2; } > > #pipesr0 { position:absolute; top:89px; left:646px; z-index:2; } > #pipesr1 { position:absolute; top:91px; left:667px; z-index:2; } > #pipesr2 { position:absolute; top:244px; left:667px; z-index:2; } > <?php > if($channel[1]==1) > {?>#pipesv3 { position:absolute; top:357px; left:694px; z-index:2; } > #pipesr3 { position:absolute; top:442px; left:678px; z-index:2; } > <?php > } > else > {?>#pipesv3 { position:absolute; top:357px; left:669px; z-index:2; } > #pipesv3a { position:absolute; top:357px; left:647px; z-index:2; } > #pipesr3 { position:absolute; top:442px; left:642px; z-index:2; } > <?php > if($channel[3]==1) > {?>#pipesv4 { position:absolute; top:247px; left:647px; z-index:2; } > #pipesv5 { position:absolute; top:247px; left:597px; z-index:2; } > #pipesr4 { position:absolute; top:272px; left:632px; z-index:2; } > #pipesr5 { position:absolute; top:272px; left:597px; z-index:2; } > <?php > } > else > {?>#pipesv4 { position:absolute; top:359px; left:647px; z-index:2; } > #pipesv5 { position:absolute; top:417px; left:597px; z-index:2; } > #pipesr4 { position:absolute; top:442px; left:597px; z-index:2; } > <?php > } > } > } > > if($channel[5]==1) > { > echo "#pbw { position:absolute; top:507px; left:572px; z-index:2; } > "; > } > if($channel[6]==1) > { > echo "#pkes { position:absolute; top:266px; left:182px; z-index:2; } > "; > } > if($channel[8]==1) > { > echo "#phk1 { position:absolute; top:197px; left:357px; z-index:2; } > "; > } > if($channel[9]==1) > { > echo "#phk2 { position:absolute; top:197px; left:287px; z-index:2; } > "; > } > if($channel[10]==1) > { > echo "#phka { position:absolute; top:431px; left:237px; z-index:2; } > "; > } > ?>#stand { position:absolute; top:510px; left:20px; z-index:2; } > --> > </style> > > </head> > <body bgcolor="#FFFFCC"> > <br> > <font face="Balloon XBd BT,Arial" size="6" color="#FF9900"><b>Heizung / Solaranlage / PÖL-Blockheizkraftwerk</b></font> > > <div id="schema"> > <img src="schema.gif" border=0> > <font face="courier new" size=2><b> > <div id="tkol"><?php echo $Temp[1];?></div> > <div id="tkol2"><?php echo $Temp[14];?></div> > <div id="tkolv"><?php echo $Temp[2];?></div> > <div id="ta"><?php echo $Temp[0];?></div> > <div id="tkes"><?php echo $Temp[3];?></div> > <div id="tabg"><?php echo $Temp[13];?></div> > <div id="tbwo"><?php echo $Temp[4];?></div> > <div id="tbwu"><?php echo $Temp[5];?></div> > <div id="tpo"><?php echo $Temp[7];?></div> > <div id="tpmo"><?php echo $Temp[8];?></div> > <div id="tpmu"><?php echo $Temp[9];?></div> > <div id="tpu"><?php echo $Temp[10];?></div> > <div id="tbwr"><?php echo $Temp[6];?></div> > <div id="thk1"><?php echo $Temp[11];?></div> > <div id="thk2"><?php echo $Temp[12];?></div> > <font size=1> > <div id="tmotv"><?php echo $Temp[15];?></div> > <div id="tmotr"><?php echo $Temp[16];?></div> > <div id="thkaae"><?php echo $Temp[20];?></div> > </font> > <div id="thkav"><?php echo $Temp[17];?></div> > <div id="thkam"><?php echo $Temp[18];?></div> > <div id="thkaa"><?php echo $Temp[19];?></div> > </b></font> > <font face="arial" size=1> > <div id="iwp0"><?php echo $IWP[0];?></div> > <div id="iwp1"><?php echo $IWP[1];?></div> > </font> > > <div id="vkbw"><?php > if($channel[1]==1) > {?><img src="vkbw_on.gif"><?php > } > else > {?><img src="vkbw_off.gif"><?php > } > ?></div> > <div id="vkpuf"><?php > if($channel[3]==1) > {?><img src="vkpuf_on.gif"><?php > } > else > {?><img src="vkpuf_off.gif"><?php > } > ?></div> > <div id="vhk1"><?php > if($channel[2]==1) > {?><img src="vfb_on.gif"><?php > } > else > {?><img src="vfb_off.gif"><?php > } > ?></div> > <div id="vhk2"><?php > if($channel[4]==1) > {?><img src="vhk2r_on.gif"><?php > } > else > {?><img src="vhk2r_off.gif"><?php > } > ?></div> > <div id="vbwr"><?php > if($channel[7]==1) > {?><img src="vbwr_on.gif"><?php > } > else > {?><img src="vbwr_off.gif"><?php > } > ?></div> > <?php > if($channel[0]==1) > {?> > <div id="pkol"><img src="pkol_on.gif"></div> > <div id="pipesv0"><img src="pipe_red.gif" width=2 height=91></div> > <div id="pipesv1"><img src="pipe_red.gif" width=102 height=2></div> > <div id="pipesv2"><img src="pipe_red.gif" width=2 height=260></div> > <div id="pipesr0"><img src="pipe_blue.gif" width=23 height=2></div> > <div id="pipesr1"><img src="pipe_blue.gif" width=2 height=133></div> > <div id="pipesr2"><img src="pipe_blue.gif" width=2 height=190></div> > <?php > if($channel[1]==1) > {?> > <div id="pipesv3"><img src="pipe_red.gif" width=70 height=2></div> > <div id="pipesr3"><img src="pipe_blue.gif" width=86 height=2></div> > <?php > } > else > {?> > <div id="pipesv3"><img src="pipe_red.gif" width=23 height=2></div> > <div id="pipesv3a"><img src="pipe_red.gif" width=20 height=2></div> > <div id="pipesr3"><img src="pipe_blue.gif" width=16 height=2></div> > <?php > if($channel[3]==1) > {?> > <div id="pipesv4"><img src="pipe_red.gif" width=2 height=110></div> > <div id="pipesv5"><img src="pipe_red.gif" width=50 height=2></div> > <div id="pipesr4"><img src="pipe_blue.gif" width=2 height=161></div> > <div id="pipesr5"><img src="pipe_blue.gif" width=35 height=2></div> > <?php > } > else > {?> > <div id="pipesv4"><img src="pipe_red.gif" width=2 height=60></div> > <div id="pipesv5"><img src="pipe_red.gif" width=50 height=2></div> > <div id="pipesr4"><img src="pipe_blue.gif" width=26 height=2></div> > <?php > } > } > } > if($channel[5]==1) > {?> > <div id="pbw"><img src="pbw_on.gif"></div> > <?php > } > if($channel[6]==1) > {?> > <div id="pkes"><img src="pkes_on.gif"></div> > <?php > } > if($channel[8]==1) > {?> > <div id="phk1"><img src="phk_on.gif"></div> > <?php > } > if($channel[9]==1) > {?> > <div id="phk2"><img src="phk_on.gif"></div> > <?php > } > if($channel[10]==1) > {?> > <div id="phka"><img src="pkes_on.gif"></div> > <?php > } > ?> > <div id="stand"><font face="Arial" size=2><b>Stand: <?php echo " $Stand";?></b><br> > powered by C-Control II & XPort</font></div> > </div> > </body> > </html> > </php> > Es kann sein, daß hier noch die ein oder andere Jugendsünde zu finden ist, da > ich die Scripte schnell geschrieben habe, ohne zu prüfen, ob's auch einfacher geht. ;-) > > Hier noch ein Code-Ausschnitt meiner COM-Routine in der CC2. > <code>... > if x=='W' // Web/XPort > { //Wenn ein "W" empfangen wird > hwcom.print("VAL"); > hwcom.put(25);//Anzahl Temp-Werte > sendint(temp.value,25*2); > hwcom.put(12);//Anzahl Temp-Werte > printSW(schalt.IWP); > printSW(schalt.states[konst.Vkol]); > printSW(schalt.states[konst.VHK1v]); > printSW(schalt.states[konst.Vpuf]); > printSW(schalt.states[konst.VHK2r]); > printSW(schalt.states[konst.PBW]); > printSW(schalt.states[konst.PKes]); > printSW(schalt.states[konst.VBWr]); > printSW(schalt.states[konst.PHK1]); > printSW(schalt.states[konst.PHK2]); > hwcom.send(schalt.IWP,2); > hwcom.print(".\r\n"); > } > ... > </code> > Die Funktion sendint() dient zum direkten Senden von Integerarrays > und ist nichts anderes als die hwcom.send()-Funktion, nur daß hier > ein Integerarray erwartet wird. Bei length muß man dies berücksichtigen. > Darum das "mal 2". > <code> > //---------------------------------------- > function sendint ( int buf[], int length )//length*2! > //---------------------------------------- > { > capture; > wait hwcom.ready(); > inline vmcodes.VM_LOAD_LOCAL_INT; > inline -8; > inline vmcodes.VM_LOAD_LOCAL_INT; > inline -6; > inline vmcodes.VM_HWCOM | (vmcodes.HWCOM_SEND << 8); > release; > } > </code> > Die Funktion printSW() soll lediglich aus false und true die ASCII-Zeichen für > 0 und 1 ausgeben: > <code>function printSW(byte x) > { > if x hwcom.put('1'); else hwcom.put('0'); > } > </code> > > So ich glaube, das sollte hier schon weiterhelfen. > Lesestoff für einige sollte das auf jeden Fall sein. ;-) > > MfG André H. > > PS: Beim Antworten auf dieses Posting bitte nicht alles als Zitat mitführen. ;-) > Sonst bekommen manche noch beim vielen Scrollen einen Muskelkater im Finger. *grins*