Re: xport an i2ccom Kategorie: I²C-Bus (von André H. - 18.05.2007 10:41) | ||
Als Antwort auf xport an i2ccom von Frank - 16.05.2007 21:34 | ||
| ||
Hallo Frank, > Leider sind die Ports meiner Station alle belegt. So kam ich auf die Idee den xport an den i2ccom Baustein zuhängen. > Beider Teile laufen einzeln problemlos. Eine Datenübertragung zwischen i2ccom und xport bekomme ich aber nicht hin. > Mein Testaufbau ist folgender: > 1.PC -(Lan)- Xport -(RS232)- i2ccom -(i2c)- Station -(hwcom)- 2.PC > Mit dem Hyperterminal verschickte ich zum Test Textdokumente. > Die Verbindung xport i2ccom erfolgt mit: 9600Baud 8n1 Handshake > Auf dem Empfangspc kommt aber immer nur eine Art "ö" an. Die Richtung in der ich die Daten sende ist dabei gegal. > Auf der C-Control läuft dabei das Programm i2ccom_TL16C750.c2p aus dem Modul i2ccom. Prinzipiell ist das möglich, wenn das HW-Handshake benutzt wird. Allerdings sollte man nicht 9600 Baud benutzen. Der I²C-Bus schaufelt die Daten schneller zum I2C-COM, als dieser sie senden kann. Nutze bitte zusammen mit dem XPort eine Baudrate von 57.600 Baud, oder höher. Um die sowieso schon gro�en Latenzzeiten im LAN (gegenüber RS232) nich noch weiter unnötig zu vergrö�ern, sollte man zwischen XPort und RS232(CC2 bzw. I2C-COM) eine möglichst hohe Baudrate wählen. Beachte auch, da� das I2C-COM "nur" einen FIFO von 64Byte hat. Diesen kann man leider nicht, wie bei den Schnittstellen der CC2 selbst, vergrö�ern. Wenn beim Senden undefinierte Zeichen und auch eine falsche Anzahl angezeigt werden, liegt das meist daran, da� die an der RS232 kommunizierenden Komponenten nicht auf die gleiche Baudrate eingestellt sind. Anbei poste ich mal das Webserver-Testprogramm für das I2C-COM umgeschieben und getestet . > Beim Start dieses Programms kommt der Vorspann "CCTools I2C-COM" usw. beim 1. PC an. > Allerdings etwas verändert. z.B. Aus "André Helbig" wird "Andri Helbig" > Benutzen i2ccom und xport einen verschiedenen Zeichencode? Ist eine Verbindung i2ccom xport überhaupt möglich? Diese benutzen keine "Zeichencodes". Die Daten werden Transparent übertragen. Wenn hier (Sonder-)Zeichen falsch dargestellt werden - das "é" ist ein Sonderzeichen - liegt das meistens an einer falschen Schriftart oder Terminal-Emulation im verwendeten Terminalprogramm. Verwende bitte die ANSI-Emulation und die Schriftart "Courier New" in Deinem Terminalprogramm. MfG André H. const edipAddr=32; byte /*fifo[512],*/dummy[64]; type togglebuffer { byte buffer[256]; } togglebuffer out[2]; const tbuffersize=64; system.TIME Zeit; int pos; byte tog; function sendbuffer() { if pos { string t; str.clear(t); str.putintf(t,pos,-2); str.putchar(t,'n'); i2ccom.print2(1,t); out[tog].buffer[pos]='n'; i2ccom.send(1,out[tog].buffer,pos+1); tog=(tog+1) and 1; pos=0; } } function print2(byte s[]) { if pos+s[31]>tbuffersize { string t; str.clear(t); str.putintf(t,pos,-2); str.putchar(t,'n'); i2ccom.print2(1,t); out[tog].buffer[pos]='n'; i2ccom.send(1,out[tog].buffer,pos+1); tog=(tog+1) and 1; pos=0; } mem.copypos(out[tog].buffer,pos,s,0,s[31]); pos=pos+s[31]; } function print(string s) { print2(s); /* string t; str.clear(t); str.putintf(t,str.length(s),-2); str.putchar(t,'n'); i2ccom.print2(t); i2ccom.print2(s); i2ccom.put('n'); */ } function slenset(byte s[], byte len) { s[31]=len; } function table() {string s; print("<table>n<tr><td>Zeit:</td>n<td"); system.gettime(Zeit); str.clear(s); str.putchar(s,'>'); str.putintf(s,Zeit.hour,2); str.putchar(s,':'); str.putintf(s,Zeit.minute,2); str.putchar(s,':'); str.putintf(s,Zeit.second,2); print2(s); print("</td></tr>n<tr><td>Datum:</td>"); print("n<td>"); str.clear(s); str.putintf(s,system.day(),2); str.putchar(s,'.'); str.putintf(s,system.month(),2); str.putchar(s,':'); str.putintf(s,system.year(),4); print2(s); print("</td></tr>n</table>n"); } //---------------------------------------- function inputstr(byte s[]) returns int //---------------------------------------- {byte i,x; i=0; x=255; for i=0 ... 29 { wait i2ccom.rxd(1); x=i2ccom.get(1); if x==10 or x==13 break; s[i]=x; } if x==13 i2ccom.get(1); s[31]=i; mem.fillpos(s,i,30-i,0); return i; } string s;byte x; thread main { i2ccom.setDataPCF(7); i2ccom.defineCOM(1,6,0); i2ccom.initCOM(1,1,1); i2ccom.setspeed(1,8); // i2ccom.setbuf(fifo,512); edip.FF(edipAddr); loop { i2ccom.flush(1); x=inputstr(s); // edip.FF(edipAddr); // edip.println(edipAddr,s); if strx.comp(s,"GET / HTTP/1.0") or strx.comp(s,"GET / HTTP/1.1") or strx.comp(s,"GET /index.html HTTP/1.1") { i2ccom.print(1,"HTTP/1.1 200 OKn"); i2ccom.print(1,"Server: C-Control IIn"); i2ccom.print(1,"Transfer-Encoding: chunkedn"); i2ccom.print(1,"Content-Type: text/htmlnn"); print("<html>n<body>n"); print("<b>C-Control II</b> im Web<br>"); print("n<font color=red>Es geht!!"); print("</font><br><br><br>n"); table(); print("<a href="/">aktualisieren</a>n"); print("<br><a href="/beep">beep</a>n"); print("</body>n</html>rn"); sendbuffer(); i2ccom.print(1,"0nn"); } else if strx.comp(s,"GET /beep HTTP/1.0") or strx.comp(s,"GET /beep HTTP/1.1") { plm.beep(8); i2ccom.print(1,"HTTP/1.1 200 OKn"); i2ccom.print(1,"Server: C-Control IIn"); i2ccom.print(1,"Transfer-Encoding: chunkedn"); i2ccom.print(1,"Content-Type: text/htmlnn"); print("<html>n<body>n"); print("<b>C-Control II</b> im Web<br>"); print("n<font color=red>Es geht!!"); print("</font><br><br><br>n"); print("Es piept ;-)<br><br>n"); print("<a href="/beep">nochmal</a>n"); print("<a href="/">zurück</a>n"); print("</body>n</html>nrnrn"); sendbuffer(); i2ccom.print(1,"0nn"); plm.beep(-1); } else if strx.comp(s,"GET /host HTTP/1.1") { i2ccom.print(1,"HTTP/1.1 200 OKn"); i2ccom.print(1,"Server: C-Control IIn"); i2ccom.print(1,"Transfer-Encoding: chunkedn"); i2ccom.print(1,"Content-Type: text/htmlnn"); print("<html>n<body>n"); print("<b>Hostmodus wird eingeleitet!"); print("</b><br>n<br><br><br>n"); print("</body>n</html>nrnrn"); sendbuffer(); i2ccom.print(1,"0nn"); i2ccom.put(1,0); sleep 1000; while i2ccom.rxd(1) { i2ccom.receive(1,s,30,0); sleep 10; } quit 2; } else { i2ccom.print(1,"HTTP/1.0 404 Not Foundn"); i2ccom.print(1,"Server: C-Control IIn"); i2ccom.print(1,"Content-Length: 10n"); i2ccom.print(1,"Content-Language: den"); i2ccom.print(1,"Content-Type: text/htmln"); i2ccom.print(1,"Connection: closenn"); i2ccom.print(1,"404 Not Foundn"); } i2ccom.put(1,0); while i2ccom.rxd(1) { i2ccom.receive(1,s,30,0); // str.clear(s); // slenset(s,i2ccom.receive(s,30,0)); // edip.print(edipAddr,s); // sleep 200; } } } Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: xport an i2ccom (von Frank - 21.05.2007 23:10) |