- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 11

Thema: Arduino mit Perl steuern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Einstellung des Ports sollten sein:
    -kein Handshake
    -kein Parity
    -1 Stopbit
    -8 Databits

    (Klappt bei mir in meinem C#-Programm)

    Der Port kann imho nicht gleichzeitig vom SerialMonitor und deinem Perlprogramm benutzt werden.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    27.09.2014
    Beiträge
    5
    Zitat Zitat von Sisor Beitrag anzeigen
    Einstellung des Ports sollten sein:
    -kein Handshake
    -kein Parity
    -1 Stopbit
    -8 Databits

    (Klappt bei mir in meinem C#-Programm)

    Der Port kann imho nicht gleichzeitig vom SerialMonitor und deinem Perlprogramm benutzt werden.
    Genau die Einstellungen am Port habe ich.
    Das mit dem gleichzeitigem Nutzen eines Ports ist soweit auch klar.

    Woran kann es den noch liegen, das ich nichts "senden" kann an's Arduino?

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Aus deinem Perl-Quelltext:
    $ob->write_settings
    Ist das nicht eine Methode? Dann muß es heißen:
    $ob->write_settings()

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    27.09.2014
    Beiträge
    5
    Zitat Zitat von Sisor Beitrag anzeigen
    Aus deinem Perl-Quelltext:
    $ob->write_settings
    Ist das nicht eine Methode? Dann muß es heißen:
    $ob->write_settings()
    Hm, bis jetzt hat es keine Probleme gemacht dabei, hast aber Recht. Hilft mir aber bei meinem eigentlichem Problem nicht weiter ...

    Wärst Du so nett und könntest Deinen C#-Programm mal uppen?

    Gruß.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ok. Hier mein C#-Arduino-Kommunikations-Programm.
    -Es ist zugeschitten auf das oben gepostete Arduino-Programm.
    -Es ist ein einfaches Konsolenprogramm, das sich den Arduino-Port selbst sucht.
    -Im Projektmappenexplorer von Visual-Studio:
    • Rechtsklick auf das Projekt im Projektexplorer
    • Hinzufügen -> Verweis
    • Haken bei System.Management hinzufügen (Framework)




    --- Hauptprogramm ---
    Code:
    using System;
    using System.IO.Ports;
    using System.Linq;
    using System.Threading;
    
    namespace ConnectToArduino
    {
        class Program
        {
            static void Main(string[] args)
            {
                #region --- Start ---
                ConnectionManager manager = new ConnectionManager();
                SerialPort arduinoPort;
                if (manager.SerialPorts.Count > 0)
                {
                    arduinoPort = manager.SerialPorts.ElementAt(0).Value;
                    Console.WriteLine("Arduino found: {0}\n", manager.SerialPorts.ElementAt(0).Key);
                }
                else
                {
                    Console.WriteLine("No Arduino found!");
                    Console.WriteLine("<Press Key to exit program>");
                    Console.ReadKey();
                    return;
                }
                try
                {
                    arduinoPort.Open();
                }
                catch (Exception)
                {
                    Console.WriteLine("Port already open!");
                    Console.WriteLine("<Press Key to exit program>");
                    Console.ReadKey();
                    return;
                }
                #endregion
    
    
                #region --- Send and Receive ---
                arduinoPort.Write("1");
                Thread.Sleep(100);
                Console.WriteLine("Response from Arduino after sending \"1\": {0}", arduinoPort.ReadLine());
                Thread.Sleep(1000);
    
                arduinoPort.Write("0");
                Thread.Sleep(100);
                Console.WriteLine("Response from Arduino after sending \"0\": {0}", arduinoPort.ReadLine());
                Console.WriteLine("<Press Key to exit program>");
                Console.ReadKey();
                #endregion
    
    
                #region --- End Program ---
                try { arduinoPort.Close(); }
                catch (Exception){ return; }
                #endregion
            }
        }
    }
    --- ConnectionManager ---
    Code:
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.IO.Ports;
    using System.Linq;
    using System.Management;
    
    namespace ConnectToArduino
    {
        public sealed class ConnectionManager
        {
            public Dictionary<string, SerialPort> SerialPorts { get; private set; }
    
            public ConnectionManager()
            {
                FindArduinoDevices();
            }
    
            private void FindArduinoDevices()
            {
                var dict = new Dictionary<string, SerialPort>();
                try
                {
                    foreach (ManagementObject device in
                        new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_SerialPort").Get())
                    {
                        if (!device["PNPDeviceID"].ToString().Contains("VID_2341")) continue;
                        var port = new SerialPort();
                        var config = device.GetRelated("Win32_SerialPortConfiguration")
                                           .Cast<ManagementObject>().ToList().FirstOrDefault();
                        port.PortName = device["DeviceID"].ToString();
                        port.BaudRate = (config != null)
                                            ? int.Parse(config["BaudRate"].ToString())
                                            : int.Parse(device["MaxBaudRate"].ToString());
                        dict.Add(device["Description"].ToString(), port);
                    }
                    SerialPorts = dict;
                }
                catch (ManagementException mex)
                {
                    Debug.WriteLine(@"An error occurred while querying for WMI data: " + mex.Message);
                }
            }
        }
    }
    Geändert von Sisor (28.09.2014 um 20:38 Uhr)

  6. #6
    Hallo,

    ist der Thread hier beendet? Ich kenn mich in den Foren noch nicht so gut aus. Ich hätte da vielleicht eine Antwort,
    auf jeden Fall aber ein Problem mit dem Arduino und Perl.

    Gruß Jürgen

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    27.09.2014
    Beiträge
    5
    Hallo,

    der Thread und auch das Problem besteht noch.
    Leider habe ich auch bis jetzt keine Zeit dafür gehabt.

    Gruß.

Ähnliche Themen

  1. Arduino mit IR (fern)steuern
    Von invisible09 im Forum Arduino -Plattform
    Antworten: 2
    Letzter Beitrag: 30.01.2013, 08:32
  2. Modellbau Fhrtenregler mit Arduino steuern
    Von Sebastian Meyer im Forum Arduino -Plattform
    Antworten: 12
    Letzter Beitrag: 04.03.2012, 19:59
  3. [ERLEDIGT] [ARDUINO] 2 Motoren + Servo mit dem Arduino Uno steuern
    Von Torrentula im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 31.08.2011, 16:31
  4. PNP mit Arduino steuern
    Von Arduino99 im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 25.12.2009, 11:13
  5. LPT & COM mit PERL ansprechen
    Von Free Faq im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 31.08.2005, 22:23

Berechtigungen

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

12V Akku bauen