Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 30

Thema: Roboter Steuerung in Visual C#

  1. #1
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52

    Roboter Steuerung in Visual C#

    Hi,

    Wir haben begonnen Visual C# zu programmieren um damit dann eine Roboterspinne anzusteuern.
    Jetzt zu meiner Frage: (es werden evtl. noch weitere folgen :P)

    Am Anfang gibt es eine Funktion um den Seriellen Port zu öffnen um damit mit dem Servocontroller Board zu kommunizieren.
    Ich möchte jetzt gerne eine Funktion sprich if-Abfrage einbauen bei der eine MsgBox angezeigt wird wenn der Serial Anschluss nicht belegt ist, also wenn der USB zu Seriell Adapter nicht angeschlossen ist.

    Code:
    if(_port.PortName="COM4" != )
                {
                    MessageBox.Show("Bitte Seriell Adapter anschliessen");
                }
                ARANEA.ConnectionProperties config = ARANEA.ConnectionProperties.getInstance();
                _port = new SerialPort();
                _port.PortName = "COM4";
                _port.BaudRate = 9600;
                _port.Handshake = Handshake.None;
                _port.Parity = Parity.None;
                _port.StopBits = StopBits.One;
                _port.DataBits = 8;
    Wie könnte hier nun die If-Abfrage aussehen? damit dies geprüft wird?

    MFG

    Kevin Haag
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.06.2004
    Beiträge
    101
    Ich lehn mich jetzt mal aus dem Fenster und empfehle einen Blick in die Doku der Klasse SerialPort. Hier wird beschrieben, wie man prüfen kann, ob eine Verbindung zu einem externen Gerät besteht:

    Code:
    sp = new SerialPort();
    sp.Open();
    
    /* ... hier sonstiger code */
    
    if(sp.IsOpen)
    {
       // Der Port ist geöffnet
    }
    Ansonsten besuch mal diese Seite: http://www.mycsharp.de/wbb2/thread.php?threadid=15117

  3. #3
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Hi,
    Danke dir für die Antwort, aber ich konnte dies nun folgendermasen lösen
    Code:
    if(!_port.IsOpen)
    {
     MessageBox.Show(Bitte Seriel Adapter anschliessen)
    }
    Wir sind nun ein grosses Stück weitergekommen da wir gestern gemerkt haben das die Servoboard nicht kaskadierbar sind. D.h. es können nicht alle Servos auf den 3 verschiedenen Servoboard einzeln angesteurt werden
    naja Shit happens...
    Wir haben nun einen neuen Controller bestellt dieser kann nun 16 verschiedene Servos ansteueren.

    Jetzt habe ich noch einen weitere Frage:
    Der VLC Player kann ja ein Aufnahmegerät öffnen. Wir haben nun im Kopf des Roboters eine Kamera eingebaut die die Video Signale Kabellos zu einem Empfänger schickt dieser widerum leitet das Signal weiter an einen Video zu USB Konverter. Diesen kann ich mit dem VLC Player öffnen und mir das Bild der Kamera anschauen. Gibt es nun auch eine Möglichkeit denn VLC Player in C# zu integrieren? Damit ich das Kamerabild in die GUI einbinen kann?

    MFG
    Kevin Haag
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  4. #4
    Registrierter Benutzer
    Registriert seit
    24.06.2004
    Beiträge
    101
    Es gibt ne API für das Ansteuern des VLC in .NET, allerdings keine Ahnung, ob das auch das liefert, was du brauchst. Schau es dir halt mal an:

    http://wiki.videolan.org/.Net_Interface_to_VLC

  5. #5
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Hi,

    Sorry das ich erst jetzt zurück schreibe. Aber danke dir für deinen Tipp ich konnte es zwar noch nicht programmieren da mir die Zeit fehlte :P

    Jetzt habe ich noch eine Frage:

    Die Spinne wird jetzt mittels Command Buttons gesteuert, sprich man drückt auf forward und dann wird die funktion legMoveForward() ausgelöst.
    Ich habe mich nun gefragt ob es möglich ist den Joystick so in das Programm einzubinden das wenn der Joystick vorne ist die Funktion legMoveForward(), oder wenn er hinten ist legMoveBack() etc., ausgelöst werden kann?
    Wenn ja, kennt jemand einen Tutorial oder kann es mir beschreiben?

    Ich habe schon bei MSND etwas über die Joystick einbindung gelesen wurde aber leider nicht schlau daraus

    Mit freundlichen Grüssen

    Kevin Haag
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  6. #6
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    hast du das schon gesehen (1. google hit mit "c# joystick")
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  7. #7
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Das sieht schon gut aus ist aber mit DirectX gelöst, soviel ich verstanden habe. Gibt es da auch eine Lösung ohne?
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  8. #8
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Da kenn ich mich zu wenig aus. Kommt eine DirectX-Lösung nicht in Frage?
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  9. #9
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Ich habe eben noch nie damit gearbeitet und die Präsentation ist schon am 3.Dezember. Aber ich werde das Beispiel mal genau studieren. Vielleicht hat ja noch jemand eine weitere Idee.
    Ich habe da mal was über die Funktion joyGetPos() gelesen, aber kein gutes Beispiel in C# dafür gefunden, weiss da jemand etwas darüber?
    Geändert von linuxjohnny (07-11-2008 um 05:23 Uhr)
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  10. #10
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    So ich habe eine "Lösung" mit Directx gefunden.

    Ich habe auch den Source code zu Hand als Klasse nur weiss ich nicht wie man eine Klasse in C# .net einbinden kann

    Ich habe es folgendermasen versucht:
    Code:
    private ProjektSpinne.joystick jst;
    Aber da sagt der Compiler:
    Code:
    Fehler	1	Der Typ- oder Namespacename "ProjektSpinne" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)	C:\Dokumente und Einstellungen\Kevin Haag\Eigene Dateien\Projekt Spinne\Software\Spinne\16.08.08 Spinne\Hauptfenster.cs	10	17	ProjektSpinne
    Könnt Ihr mir weiterhelfen?

    MFG
    Kevin Haag
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  11. #11
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Ok jetzt habe ich das ganze Projekt ein bisschen aufgeräumt und das Projekt JoystickInterface zu meinem hinzugefügt. In diesem Projekt gibt es nun eine Datei Namens joystick.cs, wie kann ich diese nun im Projekt ProjektSpinne einbinden?

    [CODE]Fehler 1 Der Typ- oder Namespacename "JoystickInterface" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Dokumente und Einstellungen\Kevin Haag\Eigene Dateien\Projekt Spinne\Software\Spinne\ProjektSpinne\Hauptfenster. cs 10 17 ProjektSpinne[\CODE]
    Geändert von linuxjohnny (08-11-2008 um 12:59 Uhr)
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  12. #12
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Annahmen:
    IDE=VisualStudio
    Workspace enthält dein Projekt und das Joystick-Projekt

    Du musst nun bei deinem Projekt mit "Verweis hinzufügen" einen Verweis auf das Joystick-Projekt angeben. (siehe http://msdn.microsoft.com/de-de/libr...ky(VS.80).aspx für Details)

    Dann sollte der Namespace JoystickInterface gefunden werden und du kannst die Joystick-Lib verwenden.

    HTH jeebee

    PS: was ich noch zu joyGetPos() gefunden habe:
    http://docs.taoframework.com/Tao.Pla...ows.Winmm.html
    http://docs.taoframework.com/Tao.Pla...joyGetPos.html
    Geändert von jeebee (08-11-2008 um 13:20 Uhr) Grund: typos
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  13. #13
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Danke dir für den Tipp damit konnte ich die Klasse eintragen.
    Jetzt habe ich nur noch ein Verständnis Problem wegen der Obiektorientierung, und zwar:

    Ich binde die Klasse oben im Programm ein:
    Code:
    private JoystickInterface.Joystick jst;
    Was bedeutet hirbei das "jst", damit muss ich doch Objekte erzeugen :S leider weiss ich nicht genau wie und für was. Könntest du mir das Vielleicht "Kurz" erleutern?

    MFG
    Kevin Haag
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  14. #14
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Oder besser frage ich anders. Wenn ich die Klasse eingebunden habe, wie kann ich dann auf ihre Funktionen zugreifen?
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  15. #15
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Zitat Zitat von linuxjohnny Beitrag anzeigen
    Oder besser frage ich anders. Wenn ich die Klasse eingebunden habe, wie kann ich dann auf ihre Funktionen zugreifen?
    Normalerweise legst du eine Instanz der Klasse an und rufst dann die jeweiligen Methoden auf, es sei denn die Klasse ist static, dann musst du keine Instanz anlegen sondern kannst direkt über klasse.methode() auf die Methode zugreifen.


    Zur Zeile
    Code:
    private JoystickInterface.Joystick jst;
    : wo steht die in deinem Programm? Innerhalb einer Klasse? Kannst du mal ein bisschen Code posten?
    Ein gebrechlich Wesen ist der X-Server.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •