http://www.marvins-lab.roboterbastle...cpmessage.html
Die Seite müsste man jetzt glaub ich ein bisschen überarbeiten.
Das du eigendlich zugriff auf die Server Statistiken für die Seite ?
Würde mich mal Intersieren was da so los ist.
Das Dokumentieren macht keine Spass drum höre ich jetzt auf mal sehen vielleicht schreibe ich jetzt noch ein bisschen mehr code.Code:Grundsätzlich gelten Natürlich die Defintionen und Regeln für das Protokoll so Wie es Marvin und PicNick es definiert haben mein Definition sind nur erweiterung damit die Schnistelle EasyToUse wird bzw bleibt. Und die Komponenten so einfach sein Können. Da PickNick zur Zeit in anderen Projekten gebunden ist kann auch nicht mit Ihm die Erweiterung abstimmen aber ich denke er liest mit und würde sich schon bitter beschweren wenn so sehr aus dem Runder läuft. Haupt unterschied zwischen meiner Implementierung des TCP Stack's (heist das so?) Und dem von PickNick ist der das PickNick eine TCP verbindung für jeden Client hält. Und ich auf MultiCast als Übertragungsweg setze. Damit gilt den rn_server brauche ich nur einmal im Netz und die RNComNetworkLayer muß auf jeden Rechner der am RNCom-Netz teilnehmen möchte. Auch die Implemtierung des jeweiligen Client Interfaces ist unterschiedlich. Ich versuche das die Protokoll im Plemtierung dem User so weit wie Möglich abzunehmen. Die RnRegist.dll enthält viele Hilfst funktionen aber Letzlich ist ein Relativ hohes verständnis des Protokols notwenig um es Interpretieren zu können. Ich will nicht verschweigen das meine Implemetierung ein gefahr bringt nämlich die Sollte sich massiv was am Protokoll ändern Ändert sie das Client Interface. RnRegist.dll ist in Dot-net Implemetiert und stehn so mit erst in Programmier Sprachen zu verfügung die das auch können. Meine Implemtierung ist unter COM das heist das es aus fast alle Sprachen zu erreichen ist. Was besser oder Schlechter ist kann und will ich nicht sagen. Deshalb hier eine Auflistung der Unterschiede zwischen beiden Ansetzen: Unterschiede: RN_SERVER RNComNetworkLayer Netzwerkserver und RS232 Reiner Netzwerk Server Einmal im Netz Auf jedem Rechner der mit dem RN-Com Netz arbeiten soll TCP Verbindung zu Jedem Client Nur eine TCP (Multicast) verbindung. COM für jeden Client. Alles muß zu allen gesendet werden Ein mal senden den rest macht das netz Client Interface RnRegist.dll RNProtClient2.dll Um nun von einem Teil netz in das andere zu kommen braucht man keine besonderheiten sonder muß nur Irgendwo den Übergang definieren. In dem man in der RNComNetwork.ini StartTCPConnect=1 RN_ServerIP=192.168.2.10 die Obigen werte anpasst. Im RN_SERVER wir immer nur 1 Client angezeigt nämlich der Networklayer. Da PickNick zur Zeit mehr als 1 Client am TCP Prot nicht darstellen kann. Da aber eh alles an alle geschickt wird ist das kein Problem. Da ich auch eine Weile gebraucht habe bis ich das Protokoll geblick habe folge hier jetzt die Zusammenfassung nach meine Verständnis mit meinen erweiterungen. Zur Darstellung: <00> Bedeutet 1 Byte mit dem Wert 0 die Darstellung ist HEX also <FF> für den wert 255. Der TCPTeil: POS Wert Bedeutung 0 beliebig Lowbyte der länge des TCP Telegramms 1 beliebig HighByte der Länge des TCP Telegramms Damit ergibt sich eine Maximal länge des Telegrams von 65535 Bytes aber in meinen Componeten ist bei 10240 ist Schluß das liegt an dem TCP Stack von window mehr Byte kann ich nicht auf einmal senden. 2 beliebig Class an die Gesendet werden soll. Der wert 4 = AVR an Com1 es wird da von Ausgangen das es nur eine Serialen übergang zum Microcontroller gibt. Bis hier Standart defintion RNCom. Meine erweiterung 100,101,102 Sind PC Programme also <64>,<65>,<66> 3 beliebig ID des Programmes 1 - 255 die 0 steht für Broadcast an alle oder alle der selben Klasse jenach dem was in der Class drin steht 4 beliebig Absender Class also im Normalfall 100,101,103 5 beliebig Absender ID ab hier Folgen die Daten 6 Abhängig davon was in der Absender klasse steht Ist der Absender der Class 10X dann muß Hier <01> Kommen Für ein KeyValue String (0 Bytes nicht zulässig). Meine erweiterung ist hier eine <02> Ist das Nachfolgende Binärdaten also 0 Bytes zulässig. Format anwendungs spezifisch. Ist die Absender Class <82> dann ist in Byte 6 und 7 der wert des AD-Wandlers des AVR's die ID gibt an welcher es war da die Max auf lösung des AVR Ad's 10 Byte sind also max 1023 werden hier zwei byte benötigt Meine erweiterung: Absender Class <83> ist das Byte nummer 6 der wert der IO Port's in ID steht welcher. Zusammen Fassung der Klassen: Geräte auf der Roboter Seite: <01>(01) Heartbeat nur Zwischen PC und Roboter <05>(02) Next nur Zwischen PC und Roboter Nächste Adresse im Roboter <09>(09) IAM nur Zwischen PC und Roboter Ich bin ein ? <0D>(13) ASK nur Zwischen PC und Roboter (Habe ich auch noch net geblickt) <11>(17) UART vom PC nach COM1 ohne Interpreation des Inhalts (Bypass) <15>(21) VAL Meßwert <19>(25) Interne sachen von Picknick vielleicht klärt uns irgend wann mal auf <1D>(29) Interne sachen von Picknick vielleicht klärt uns irgend wann mal auf <42>(66) PCF Expander <53>(83) SERVO (RNSNET) <62>(98) RNBFRA 1.2 <72>(114) RN-Control <82>(130) AD-Wandler <83>(131) I/O Port <84>(132) Schrittmotor <85>(133) Getriebemotor <86>(134) Roboterlage(Kompass) <FE>(254) IN/OUT PUT oder STD oder Console Fenster Klasse(Dezimal) Bedeutung <01>(01) RN-SERVER System Class <42>(66) PCF Expander (Hier fehlt mir noch der Daten Aufbau) <53>(83) SERVO (RNSNET) 600 - 2000 µS 2 Bytes also werte zwischen 0-65535 wo bei die Forderen werte wirklich gehen <62>(98) RNBFRA 1.2 <64>(100) PC zu PC im Byte 7 (Position 6) Steht welcher Typ von Daten <01> KeyValue <02> Binär <65>(101) PC zu PC im Byte 7 (Position 6) Steht welcher Typ von Daten <01> KeyValue <02> Binär <66>(102) PC zu PC im Byte 7 (Position 6) Steht welcher Typ von Daten <01> KeyValue <02> Binär <82>(130) AD-Wandler im Roboter (es kann maximal 63 stück geben) Auflösung 2Byte also 0 - 65535 Auf Grund der Adressungsmethode auf dem MC <83>(131) I/O Port (es kann maximal 63 stück geben) Auflösung 1 Byte also 0-255 Auf Grund der Adressungsmethode auf dem MC <84>(132) Schrittmotor (Hier fehlt mir noch der Daten Aufbau) <85>(133) Getriebemotor (Hier fehlt mir noch der Daten Aufbau) <86>(134) Roboterlage (Kompass) 2,4,6 Byte 2 Byte muß 6 können Die ersten 2 Himmelesrichtung 0-3600 (wert dur 10 teilen) Die zweiten 2 Kippwinkel rechts/Links Kippwinkel = 0 Lage normal Kippwinkel = 900 Roboter liegt auf der Linken seite Kippwinkel = 1800 Roboter liegt auf auf dem Kopf Kippwinkel = 2700 Roboter liegt auf dr Rechten Seite Die dritten 2 Kippwinkel Vorne/Hinten Kippwinkel = 0 Lage normal Kippwinkel = 900 Roboter Steht auf der Nase Kippwinkel = 1800 Roboter liegt auf auf dem Kopf Kippwinkel = 2700 Roboter Sitze auf dem Hintern <FE>(254) IN/OUT PUT oder STD oder Console Fenster Ist für die Ausgabe bzw. eingaben gemacht (Display und Tastatur) Die länge ist nicht definert für die Darstellung von Buchstaben gilt Der DOS Zeichensatz. Hier mit können auch einfacher Taster Abgebildet werden Denen kann man ja einfach einen Buchstaben auf der MC Seite zu weissen. KeyValue: Erweiterung der Defintion: \ Ist das Escape Zeichen für Steuerzeichen in Halb der KeyValue String's NAME=Michael\,Nenninger Der Parameter Name hat den Wert Michael,Nenninger FRAGE=3\=3 Der Parameter Frage hat den Wert 3=3 FRAGE=3\\3 Der Parameter Frage hat den Wert 3\3 Beispiele: Init PC <-> Roboter: PC hält den Comport offen Roboter muß sich melden. Nach dem Ersten Heartbeat "Scannt" der PC die Angemeldet Hardwardware Aufpassen Alle Geräte die Am MC Dreckt sind müssen eine 1 im Letzten Bit der adresse haben. siehe https://www.roboternetz.de/wissen/in...oller/PC#Pfade Aufgrund desen würde im Unteren Beispie der IO Port am I²C hängen Darstellung für die Adresse Auf dem MC Die Letzen 2 Bit's sind das Wo ist das Letzte Bit 0 dann ist es Ic2 Glütige Adresse für Sachen auf an / auf dem MC selbst (63): 76543210 00000001 00100001 00101001 00100101 00101101 00111101 11111101 Gültige Adresse für I²C : 76543210 00000000 00000010 10001010 11111110 Daten was geht wirklich über V24 Richtung Bedeutung <01><00><00><00> <A9><01><00><00><00><01><AA> Robi -PC Heartbeat <05><00><09><00><00> <A9><05><00><09><00><00><0C><AA> PC - Robi Next Gib mir Mal den Typ des gerätest 0 <09><00><25><00><01><82><00> <A9><09><00><25><00><01><82><00><AF><AA> Robi -PC IAM Ich bin ein ADC habe die Adresse <25> und es gibt noch mehr Geräte nächste Adresse ist die 1 <05><00><09><00><01> <A9><05><00><09><00><01><0D><AA> PC - Robi Next Gib mir Mal den Typ des gerätest 1 <09><00><29><00><02><82><01> <A9><09><00><29><00><02><82><01><A1><AA> Robi -PC IAM Ich bin ein ADC habe die Adresse <29> und es gibt noch mehr Geräte nächste Adresse ist die 2 <05><00><09><00><02> <A9><05><00><09><00><02><0E><AA> PC - Robi Next Gib mir Mal den Typ des gerätest 2 <09><00><30><00><03><83><00> <A9><09><00><30><00><03><83><00><B9><AA> Robi -PC IAM Ich bin ein IO Port habe die Adresse <30> und es gibt noch mehr Geräte nächste Adresse ist die 3 <05><00><09><00><03> <A9><05><00><09><00><03><0F><AA> PC - Robi Next Gib mir Mal den Typ des gerätest 3 <09><00><00><00><FF><62><00> <A9><09><00><00><00><FF><62><00><94><AA> Robi -PC IAM Ich bin ein RNBFRA 1.2 habe die Adresse <00> und es Gibt keine Weiteren geräte Mehr
Gruß







Zitieren

Lesezeichen