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 ! > Hi André, > > erst mal vielen Dank für die Antwort. > Bin leider nicht sonderlich bewandert mit programmieren, und ist das erste Projekt > mit der C-Control. > > Der Grund warum ich nicht mit hwcom.receive() gearbeitet habe ist, daß es damit nicht funktioniert. > soll heissen das Programm bleibt einfach stehen. Deshalb greife ich direkt auf den Ringpuffer zu. > Das funktioniert auch (Messwerte korrekt) , leider halt in unregelmässigen Abständen alle auf Null. > > Habe Deinen Code grade eben mal aufgespielt, und leider bleibt das Programm auch hier stehen. > Soll heissen "Yoko2CAN" wird auf dem Display ausgegeben und dann ist Schluss. > > Hast Du vielleicht eine Idee was falsch sein könnte? > > Gruss > > Stefan > > > > > > > Hallo Stefan, > > > > Zuerst: Ein kleines "Hallo" oder ähnliches am Anfang eines Postings kann nicht schaden. > > Auch ein kleines MfG oder ähnliches am Ende wäre nicht schlecht. > > Dann gibt's meistens auch schneller antworten und es gehört auch zur Netiquette(siehe Info). > > Und benutze bitte die Code-Tags für Quellcode, damit dieser richtig dargestellt wird > > und besser lesbar ist. > > > > Nun zu Deinem Problem. > > > > > Habe ein kleines grosses Problem. Ich setze mit der CC2-Unit RS232 Messwerte eines > > > Datenloggers auf CAN Bus um. > > > Hierzu sendet die CC2 zyklisch eine Anfrage an den Logger , dieser antwortet, die Daten aus dem > > > Buffer werden in CAN Botschaften verpackt und auf den Bus gelegt. > > > Soweit alles schön und gut, aber leider habe ich in unregelmaessigen Abstaenden auf allen > > > gemessenen Kanälen Nullen , die definitiv nicht vom Messgerät kommen. > > > Vieleicht hat ja jemand eine Idee was ich falsch gemacht habe. Evtl. das mit dem Flush des > > > Empfangsbuffers?? > > > > Du machst einen grundlegenden Fehler ! > > Ich kann in Deinen Routinen keinerlei hwcom.get() oder hwcom.receive() erkennen, > > sondern Du greifst auf den erweiterten Datenpuffer, den Du mit hwcom.setbuf() zugewiesen hast, zu. > > Das kann nur Schief gehen. > > Auf diesen Puffer darf man nicht direkt aus C2 zugreifen, da es sich um einen Ringpuffer handelt. > > Außerdem solltest Du ein wenig mehr mit Arrays arbeiten. Dann wird der Thread um einiges kleiner: > > > > z.B.:<code> > > function cpy(long src[], byte data[], byte offset) > > {byte i,x; > > for i=offset ... offset+3 > > { x=(i-offset) shl 1; > > data[x] =src[i] shr 8; > > data[x+1]=src[i]; > > } > > } > > > > thread main > > { > > lcdext.init(); > > lcdext.clear(); > > lcdext.line(1); > > lcdext.print("Warten auf YOKO"); > > sleep 15000; > > > > byte s[250], in[250],i; > > long b,k[31]; > > > > byte data_t[7]; > > byte data_u[7]; > > byte data_v[7]; > > byte data_w[7]; > > byte data_x[7]; > > byte data_y[7]; > > byte data_z[7]; > > byte data_s[7]; > > > > hwcom.init (); > > hwcom.setspeed (5); > > hwcom.setbuf(s,250); > > can.init(can.SPEED_125,0x0000,0x0000); > > loop > > { > > hwcom.flush(); > > hwcom.print("TS0"); > > hwcom.put(10); > > hwcom.put(27); > > hwcom.put('T'); > > hwcom.put(10); > > hwcom.print("FM1,001,030"); > > hwcom.put(10); > > lcdext.clear(); > > lcdext.line(1); > > lcdext.print("Yoko2CAN"); > > wait hwcom.rxd(); > > hwcom.receive(in,250,500); > > > > for i= 1 ...30 > > { > > k[i]=mem.getlong(s,i*6 + 12); > > } > > > > lcdext.line(2); > > lcdext.print("Running"); > > > > cpy(k,data_s,1); > > cpy(k,data_t,5); > > cpy(k,data_u,9); > > cpy(k,data_v,13); > > cpy(k,data_w,17); > > cpy(k,data_x,21); > > cpy(k,data_y,25); > > > > data_z[0]=k[29] shr 8; > > data_z[1]=k[29]; > > data_z[2]=k[30] shr 8; > > data_z[3]=k[30]; > > > > can.send(1,400,data_s,8); > > can.send(2,401,data_t,8); > > can.send(3,402,data_u,8); > > can.send(4,403,data_v,8); > > can.send(5,404,data_w,8); > > can.send(6,405,data_x,8); > > can.send(7,406,data_y,8); > > can.send(8,407,data_z,4); > > > > sleep 800; > > } > > }</code> > > > > > > MfG André H. > >