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

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
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0, OSOPT V3.1
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)