- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 7 von 7

Thema: Merkwürdige Nachrichten auf dem Seriellen Bus.

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    05.05.2014
    Beiträge
    30

    Unglücklich Merkwürdige Nachrichten auf dem Seriellen Bus.

    Anzeige

    E-Bike
    Grüße,

    ich habe folgendes Problem:

    ich habe ein Programm geschrieben, welches sich mit dem Arduino über die Serielle Schnittstelle verbindet.

    Die Baudrate ist bei beiden auf 9600 fest gelegt worden.

    Immer wenn mein Programm sich verbindet wird es mit folgender Nachricht voll getextet:

    Code:
    VMDPR_|0:32:|||_VMDPR
    VMDPR_|0:32:|||_VMDPR
    VMDPR_|0:32:|||_VMDPR
    VMDPR_|0:32:|||_VMDPR
    VMDPR_|0:32:|||_VMDPR
    VMDPR_|0:32:|||_VMDPR
    VMDPR_|0:32:|||_VMDPR
    VMDPR_|0:32:|||_VMDPR
    ...
    Dadurch werden Antworten oder Nachrichten einfach verschluckt.

    Im Debugger von Arduino hingegen habe ich das Problem nicht.

    Wie kann ich diese Nachrichten ausschalten?
    Weswegen kommen die?

    Programm - C# :
    Code:
    port = new SerialPort(comPort, 9600, Parity.None, 8, StopBits.One);
    port.Open();
    Arduino - C++ :
    Code:
    void setup() {
        Serial.begin(9600);
        pinMode(LED_BUILTIN, OUTPUT);
        PORTB |= 0x20;
    }

    Mfg.
    Geändert von radbruch (29.08.2022 um 20:00 Uhr) Grund: Code-Tag eingefügt

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Hallo,

    bist du sicher, dass deine Baudraten und auch andere Schnittstellenkonfigurationen auf beiden Seiten gleich sind?

    Viele Grüße
    Andreas

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    05.05.2014
    Beiträge
    30
    Wie soll ich das den feststellen?

    ich habe die ja angegeben, kann die von der Realität abweichen?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    899
    Theoretisch kann sie das: wenn z.B. der im Code kompilierte Takt nicht mit dem Takt des Controllers übereinstimmt.
    Aber das muss nicht der Fehler sein - insofern wäre es nett, etwas mehr zu schreiben. also: welches Gerät Du wie genau mit dem PC verbindest und insbesondere auch die Codeteile des eigentlichen Sendens und Deine Implementierung der Empfangsroutine in C#.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    05.05.2014
    Beiträge
    30
    Es handelt sich um ein Arduino Uno, der über die USB Schnittstelle mit dem Computer verbunden ist.

    Arduino :
    Code:
    int serialComunication() {
    	if (Serial.available())
    	{
    		String comand = Serial.readStringUntil(';');
    		Serial.println();
    		if (comand == "Test")
    		{
    			Serial.println("Test:ok");
    		}
    		else if (comand.startsWith("Comand:") == 1)
    		{
    			String t = comand.substring(7);
    			Serial.println(t + ":ok");
    			return stoi(t);
    		}
    		else
    		{
    			Serial.println(comand);
    		}
    	}
    	return -1;
    }
    
    int stoi(String str)
    {
    	int temp = 0;
    	for (int i = 0; i < str.length(); i++) {
    		temp = temp * 10 + (str[i] - '0');
    	}
    	return temp;
    }
    
    void setup() {
    	Serial.begin(9600);
    	pinMode(LED_BUILTIN, OUTPUT);
    	PORTB |= 0x20; 
    }
    
    // the loop function runs over and over again until power down or reset
    void loop() {
    	int c = serialComunication();
    ...
    Programm :
    Code:
    internal class SerialHelper
        {
            SerialPort port;
            public SerialHelper(string comPort)
            {
                port = new SerialPort(comPort, 115200, Parity.None, 8, StopBits.One);
            }
    
            public bool Test()
            {
                if (!port.IsOpen)
                {
                    port.Open();
                }
    
                port.WriteLine("Test;");
                String t = port.ReadLine();
                while (true)
                {
                    Debug.WriteLine(t);
                    if (t.StartsWith("Test:ok"))
                    {
                        return true;
                    }
                    else if (t.StartsWith("Test"))
                    {
                        return false;
                    }
                    t = port.ReadLine();
                }
            }
    public bool Comand(int code)
            {
                if (!port.IsOpen)
                {
                    port.Open();
                }
    
                port.WriteLine($"Comand:{code};");
                String t = port.ReadLine();
                while (true)
                {
                    Debug.WriteLine(t);
                    if (t.StartsWith(code+":ok"))
                    {
                        return true;
                    }
                    else if (t.StartsWith($"Comand:{code}"))
                    {
                        return false;
                    }
                    t = port.ReadLine();
                }
    
            }
            public void Close()
            {
                if (port.IsOpen)
                {
                    port.Close();
                }
                port.Dispose();
            }
    PS: ich habe mit Baudraten rum probiert, des wegen ist im c# Code jetzt nicht die 9600 drin.
    Geändert von Schlepser (26.08.2022 um 23:55 Uhr)

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    899
    Schade, ich hab den UNO nicht - könnte maximal mit einem ESP32 aufwarten.
    Bevor ich das tue: Ich hab mal nach "VMDPR_" gesucht und das hier gefunden:
    https://www.visualmicro.com/forums/Y...num=1542916302

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    05.05.2014
    Beiträge
    30
    Ich danke dir, es hat geholfen.

    Im Release Modus werden keine VMDPR Botschaften mehr gesendet.

    Mfg.

Ähnliche Themen

  1. Eagle Merkwürdige Massenanbindungen
    Von Blue72 im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 4
    Letzter Beitrag: 13.05.2013, 03:02
  2. Merkwürdige Fehlermeldung
    Von elkokiller im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 11.05.2008, 23:55
  3. Antworten: 0
    Letzter Beitrag: 04.05.2008, 17:25
  4. UART Programm zum Empfangen von Nachrichten
    Von KingTobi im Forum Robby RP6
    Antworten: 6
    Letzter Beitrag: 18.08.2007, 23:43
  5. Aus Computerprogramm Nachrichten per RS 232 senden/empfangen
    Von shahri im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 19
    Letzter Beitrag: 16.08.2006, 15:33

Berechtigungen

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

Solar Speicher und Akkus Tests