Danke erstmal für Eure Kommentare und das Interesse.
Nun zu Dir lokirobotics:
Protokoll:
Das mit dem MSB ist eine gute Idee. Das sollten wir in späteren Version implementieren.
Auch eine EmpfängerID einzuführen, wäre eine Überlegung. Im Moment liegt aber die Priorität darin, einen Roboter ordentlich Steuern und Simulieren
zu können. Natürlich ist eine Multirobot Umgebung interessant und da soll die Reise auch irgendwann mal hingehen.
Das ist richtig, dass es im Moment noch keine "Management" Befehle gibt. Da haben wir natürlich auch schon dran gedacht,
aber in dem kurzen Zeitraum konnten wir nur grundlegende Befehle implementieren, die wir brauchten, um unseren Roboter
erfolgreich präsentieren zu können. (Vielleicht hat der eine oder andere gemerkt, dass die Befehle sehr stark den Arduino Befehlen ähneln.)
Der nächste Befehl sollte ein Handshake Befehl werden zwischen externem Gerät und Mikrocontroller. Dafür war die BefehlsID 255 vorgesehen.
(Durch das MSB wird es dann wahrscheinlich die 127)
Der Mikrocontroller soll dabei seine Firmware Version senden, so dass das externe Gerät erkennen kann, welche Befehle überhaupt existieren.
Über I2C Befehle haben wir auch schon nachgedacht, nur macht es das Ganze auf der C# Seite doch recht kompliziert. Man muss ja dann wissen,
welche Mikrocontroller noch am Bus hängen und über welche Firmware diese verfügen etc.
C#
Die Eventnamen sollten wir vielleicht noch ändern, damit es keine Verwirrung gibt.
Zum "Micro" : Programmierer sind ein wenig faul, deshalb haben wir so kurze Namen wie möglich verwendet
Aber wie Du richtig erkannt hast, repräsentiert das Micro Object einen Mikrocontroller.
Um einen Mikrocontroller steuern zu können braucht man im Moment mindestens 3 Objekte. (Robot, Micro, Connection)
Beispiel:
Code:
Robot robot = new Robot();
ConnectionSerial connection = new ConnectionSerial();
connection.Port = "COMX";
robot.Connection = connection; // Dem Roboter die Verbindung zuweisen
MicroAtmega8 micro = new MicroAtmega8();
robot.Micro = micro; // Dem Roboter den Mikro zuweisen
connection.Connect(); // Bei erfolgreicher Verbindung werden alle weiteren Objekte initialisiert (Stream, Command)
// Jetzt kann man Befehle an den Mikro senden, zum Beispiel PinMode
robot.Command.PinMode(0, 4, Constants.INPUT); // SenderId, PinNr, Input/Output (0/1)
robot.Command.OnPinMode += new EventHandler<EventArgs<PinModeData>>(Command_OnPinMode); // Für Antwort registrieren
Wir sind grad dabei, den Sourcecode mit den Lizenzen zu versehen und alle kleinen Fehler auszumerzen. Er wird sehr bald bei SourceForge
zur Verfügung stehen.
Viele Grüße
redreggae
Lesezeichen