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

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

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 Johannes, > > ich bin ein wenig genervt, weil ich das Ganze schon mal eingegeben habe, durch Verbindungsverlust > beim Senden aber verloren ging. Also nocheinmal: > > Was mir zu Deinen Zeilen einfällt: > > 1) 4 Longwerte => 4 x 4Byte = 16 Byte !? Oder sendest Du die Zahlen als String? Wohl JA. > > 2) Zeichen dürften Dir eigentlich nur verloren gehen, wenn die Anzahl Byte 64 übersteigt. Im Handbuch > steht über die serielle Schnittstelle folgendes: > "Das Betriebssystem implementiert für beide seriellen Schnittstellen (Anm: hwcom + swcom) standard- > mäßig je einen Empfangspuffer von 64 Byte. In Applikationen, in denen größere Datenblöcke zu > empfangen sind, sollte ein erweiterter Empfangspuffer reserviert werden." > Dieses Reservieren wird mit Hilfe folgender Funktion durchgeführt: > <b>function</b> setbuf ( <b>byte</b> buf[], <b>int</b> length ) > > Du musst also eine globale/statische Variable mit ausreichend Platz definieren und der Funktion > übergeben. (Hab ich selbst allerdings noch nicht ausprobiert.) > > Wie stellst Du eigentlich sicher, dass bei der Übertragung kein Fehler aufgetreten ist? Und was > machst Du falls dies passiert? Also ein gewisses Handshaking mußt Du doch sowieso vornehmen! > > > Hier noch ein Tip: > ============= > Beim Senden von Daten über die serielle Schnittstelle sind einige Fußangeln zu beachten. Sendest > Du kurz hintereinander einzelne Strings, dann kommt am anderen Ende nur "MIST" an! > > Also, wenn Du z.B. folgendes machst: > <code> > hwcom.print("Hallo "); > hwcom.print("Du "); > hwcom.print("Da!"); > hwcom.ret(); > </code> > dann kommt am anderen Ende nur folgendes an: > "HaDa!Da!" > Dies ist abhängig von der eingestellten Übertragungsrate und dem Zufall. > > Eigentlich dürfte dies nicht passieren, da in den Routinen im Modul "hwcom" (Version 1.3) > <b>wait</b>-Aufrufe vorhanden sind. Allerdings werden diese anscheinend nicht ausgeführt!! > (Dies hat wohl noch keiner gemerkt. Zu diesem Thema werde ich gleich noch einen neuen Thread > aufmachen.) > Also mußt Du die wait-Aufrufe selbst einfügen: > <code> > hwcom.print("Hallo "); > wait hwcom.ready(); > hwcom.print("Du "); > wait hwcom.ready(); > hwcom.print("Da!"); > wait hwcom.ready(); > hwcom.ret(); > wait hwcom.ready(); > </code> > Kann allerdings sein, daß dieses Problem mit einem älteren OS und älteren Modulen noch nicht auftritt. > Probiers mal aus. > > Bei Verwendung einer String-Variablen würde allerdings auch eine funktionierende <b>send</b>- > Funktion nichts helfen: > <code> > string s; // globale Stringvariable > > s = "Hallo "; > hwcom.send(s, str.length(s)); > s = "Du "; > hwcom.send(s, str.length(s)); > s = "Da!"; > hwcom.send(s, str.length(s)); > hwcom.ret(); > </code> > > Hier ist das Problem, das die <b>send</b>-Funktion die Zeichen aus der Varialben im Hintergrund > sendet. Ist noch nicht alles gesendet und wird der Variablen ein neuer Wert zugewiesen, dann > passiert wieder unvorhergesehenes. > > Ich hoffe dies hat Dir ein wenig weitergeholfen, > > Gruß > Thomas > > > > Moin, > > ich habe folgendes Problem. Ich möchte über die serielle Schnittstelle mit einem Visual Basic > > Programm kommunizieren. Zu einem Datenpacket sollen 4 Longwerte plus einem Command (String) > > gehören. Da die vier Longwerte nicht in einen String von 30 Zeichen passen, sende ich 4 Mal über > > die Schnittstelle. Auf dem Rechner bzw. auf der CC2 werden die vier Werte dann entgegengenommen > > zusammen weiterverarbeitet. > > > > Das Problem ist nun, dass das Visual Basic programm beim Senden die vier Werte zu schnell > > hintereinander übermittelt. Mein Programm kommt da nicht hinterher, einen Wert abzuspeichern, da > > kommt schon der nächste. Aus diesem Grund habe ich selbst eine Art Handshake programmiert. Dabei > > wird nach dem Empfang eines Wertes ein ":" zum Sender (PC) zurückgesendet, und erst wenn dieser > > es empfängt, sendet er den nächsten Wert. > > > > Leider ist dieses Verfahren zu langsam, da ich relativ viel übertragen möchte. Für ein Datenpacket braucht er > > über eine Sekunde. Habt Ihr eine Idee, wie ich das lösen könnte? > > Ich habe mir jetzt überlegt, dieses RTS zu verwenden. Allerdings verstehe ich nicht > > ganz (die Anleitung hab ich gelesen! :-) ), wie das mit der CC2 funktionieren soll. > > > > Ist es aufwendig, so ein RTS-Handshake zu realisieren? Wäre schön, wenn ihr mir da helfen könntet. > > Ich habe nämlich das Gefühl, dass ich sonst zu viele Resourcen verschwende, wenn ich bei meinem > > eigenen Handshake bleibe. > > > > Gruß > > Johannes
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB