Kann man port.ReadLine(); schneller verarbeiten?(C#)?

Hallo

ich programmiere gerad etwas mit Seriellen Schnittstellen und bin auf den Befehl port.Readline gestoßen. Aber leider ist die Wartezeit zu lange und das Programm friert ein. Kann man die Lesezeit irgendwie abkürzen?

 public partial class Form1 : Form
    {




        string read;
        public Form1()
        {


            InitializeComponent();
            comboBox1.Items.AddRange(SerialPort.GetPortNames());
        }


        private void Connect_Click(object sender, EventArgs e)
        {


            try
            {




                SerialPort port = new SerialPort(comboBox1.SelectedItem.ToString(), 9600, Parity.None);
             
            if (port.IsOpen)
            {
                port.Close();


            }
            


                port.Open();
              
                port.WriteLine("1");


             
                textBox1.Text += port.ReadTimeout;
    
                textBox1.Text += port.BytesToRead;
                textBox1.Text += port.DataBits;
                textBox1.Text += port.ReadLine();


                port.Close();
            }


            catch (System.OperationCanceledException d)
            {
                MessageBox.Show(d.Message);
                MessageBox.Show("Nix");
            }
            catch (TimeoutException f)
            { MessageBox.Show(f.Message);


            }
            catch(NullReferenceException f)
            { MessageBox.Show(f.Message); }
            comboBox1.Items.Clear();
            comboBox1.Items.AddRange(SerialPort.GetPortNames());


        }




    }
}
programmieren, Serielle Schnittstelle
Serielle Kommunikation zwischen ESP32 und Raspberry Pi mit Java?

Hey liebes Forum,

Ich habe einen ESP32 der durchgehend mit einer Baud Rate von 115200 jede 500 Millisekunden eine Nachricht mit Serial.println("Test") schickt. (Das geht!)

Auf meinem Raspberry Pi läuft das Ubuntu Server Betriebssystem LTS und es ist Java JDK17 (LTS) installiert. Ich kann also ganz normal Java Programme hier laufen lassen.

Der ESP32 ist mit dem Raspberry Pi über die Serielle Schnittstelle verbunden also über GPIO14/GPIO15 und Ground. Nicht über USB sondern über RX/TX/Ground. (Ja ich habe RX TX Ground richtig angeschlossen: RX geht auf TX, TX geht auf RX), Beide Grounds von den 2 Geräten sind miteinander verbunden.

Jetzt würde ich gerne am Raspberry Pi ein Java Programm laufen lassen, dass durchgehend auf die Serielle Schnittstelle hört und diese "Test" Nachrichten, die vom ESP32 losgeschickt werden, empfängt. Die Test Nachrichten sollen also am Raspberry Pi ausgegeben werden bzw. im Java Programm gespeichert werden. Ich will nämlich in Zukunft nicht nur Test verschicken sondern richtige Daten und die dann am Raspberry Pi mit Java weiterverarbeiten.

Ich habe lange im Internet nach einer Lösung gesucht, aber nichts gefunden. Nur Lösungen mit Python scripts. Ich würde aber gerne Java verwenden. Ich bin auch schon auf pij4 gestoßen, das klappt aber auch nicht. Da gibts Library Error wie zum Beispiel: java.lang.UnsatisfiedLinkError: oder wrong ELF class: ELFCLASS32 (Possible cause: can't load ARM .so on a AARCH64 platform)

Welche Library eignet sich am besten bzw. muss ich noch was anderes am Raspberry Pi konfigurieren, damit das ganze geht.

Allgemein: Wie kann ich am Raspberry Pi mit Java, die Daten, die vom ESP32 weggeschickt wurden über die Serielle Schnittstelle empfangen?

Bild zu Frage
Computer, Technik, Elektronik, Java, Mikrocontroller, Arduino, Technologie, Serielle Schnittstelle, Raspberry Pi, ESP32
SoftwareSerial wie benutzen?

Hallo an die Arduino- Community,

Ich habe mich ja schon sehr viel mit dem Arduino beschäftigt, aber natürlich nicht genug und es ist wahrscheinlich auch nur ein Bruchteil des Möglichen. So genug drum gelabert, zu meiner Frage: Ich benutze die App Blynk zusammen mit dem Arduino Uno, diese muss zum funktionieren eine durchgehende Verbindung zu meinem Serial Port (COM4 in meinem aktuellen Fall) haben, damit die funktioniert. Das bedeutet natürlich, dass ich meinen Seriellen Monitor nicht offen haben kann, da der ja ebenfalls auf den Port zugreifen muss, und nur 1 gleichzeitig geht.

Ich habe aber gehört, ich kann über den SoftwareSerial - Befehl einen zweiten Seriellen Monitor haben... Weiß nur gar nicht, wie der funktioniert, frei hätte ich aktuell die Pins 7 und 8 dafür.

Wie kann ich diesen zweiten Serial erstellen und IHN AUCH ÖFFNEN?

Ich möchte da auf dem Serial2.print nutzen, geht das? (Ich will ihn quasi, wie einen ganz normalen Seriellen Monitor nutzen... Über extra Software geht nichts. Ich habe zumindest schon PuTTY probiert, da öffnet der aber den Port nicht. )

Hier mein bisheriger Code: Blynk braucht halt einen der Seriellen Ports zum funktionieren, was muss ich hier anders machen? (müsst glaube ich nicht zwingend Ahnung von der App haben)

#define BLYNK_PRINT DebugSerial
#include <SoftwareSerial.h>
SoftwareSerial DebugSerial(7, 8); // RX, TX
#include <BlynkSimpleStream.h>
char auth[] = "UnFNS1fIbvFVX8QGBWDoBKah3aWND6dn";
void setup() {   DebugSerial.begin(9600);   Serial.begin(9600);   Blynk.begin(Serial, auth);
//anderer stuff
}
void loop () {
Blynk.run();
//zum Beispiel:
if (Buttongedrückt) {
DebugSerial.println("Button gedrückt");
...stuff
}

MFG Alex - Freue mich auf eure Antworten!

Software, programmieren, Arduino, cmd, C (Programmiersprache), RX, Serielle Schnittstelle

Meistgelesene Fragen zum Thema Serielle Schnittstelle