Serielle Schnitteschnittstelle ansteuern einfach?

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Serielle Schnitteschnittstelle ansteuern einfach?

    Guten Abend,
    ich bafasse mich nun seit einiger Zeit mit dem Com anschluss.
    Zum probieren dachte ich, es sei Einfacher, erstmal 2 PC's mit dem Com port zu verbinden und ein "Chat" dann zu programmieren.
    Also ASCII zeichen senden und empfangen.
    dabei kann dann eingestellt werden bei welcher baudrate und com anschluss das ganze geschehen soll.

    Das hab ich schon:

    Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    'Porteinstellungen
    SerialPort1.Close()
    SerialPort1.PortName = TextBox1.Text
    SerialPort1.BaudRate = TextBox2.Text
    SerialPort1.DataBits = 8 '8 Datenbits pro Byte
    SerialPort1.StopBits = 1 '1 Stopbit
    SerialPort1.ReceivedBytesThreshold = 1 '1 Byte muss empfangen werden bevor puffer voll ist und verarbeitet werden kann

    'Grundeinstellung:Nur Verbinden kann angeklickt werden, wenn noch keine
    'Verbindung Hergestellt wurde
    Button1.Enabled = True
    Button2.Enabled = False
    Button3.Enabled = False
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    SerialPort1.Open()
    MsgBox("Verbindung hergestellt!")
    Button2.Enabled = True
    Button3.Enabled = True
    End Sub
    _________________________________________

    jetzt das Problem: wenn ich das so starte ( einfach mal um zu gucken was bis jetzt schon passiert) sagt der mir :Der angegebene Anschlussname beginnt nicht mit COM/com oder wird nicht in einen gültigen seriellen Anschluss aufgelöst.
    Parametername: portName
    Ich habe schon bei anderen geguckt da steht das doch auch so (?) der müsste doch jetzt schon in der Lage sein sich zu verbinden oder nicht?
    Konnte viele beispiele finden, nur waren alle so aufgebaut oder gibt es da noch was, was für nicht anfänger klar ist so das man es nicht hinschreibt im forum?
    Die Fehlermeldung sagt doch alles?
    beginnt nicht mit COM/com oder wird nicht in einen gültigen seriellen Anschluss aufgelöst. Parametername: portName
    Was heißt das für dich. Der PortName muss z.b. COM3 sein. Sprich in deiner Textbox muss natürlich auch COM3 sein (wenn dein teil dort angeschlossen ist).


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    MSDN schrieb:

    To set Option Strict in the integrated development environment (IDE)

    On the Tools menu, choose Options.

    Open the Projects and Solutions node.

    Choose VB Defaults.

    Modify the Option Strict setting.
    Tus einfach. Du schreibst weniger Clusterfuck-Code, wenn du es einschaltest.
    Probier mal, alle Einstellungen im Designer zui machen und dann schreibst Du Dir den Code aus der FormX.Designer.vb ab.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hm, also ich habe jetzt da wo man die Toolbox sehen kann bei den eigenschaften mal alles eingestellt, in mein alten Code die Zeilen für Portnamen Baudrate usw gelöscht, der sagt aber immernoch genau das gleiche...
    Da werd ich wohl doch noch länger dran sitzen.
    Aber trotzdem Danke an die, die geholfen haben.
    Beschreib nun Dein Problem noch mal, ohne Deinen Eröffnungspost zu verwenden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also:
    Ich habe Versucht ein Code zu schreiben um die Serielle Schnittstelle zu steuern.
    Als ( So dachte ich) einfaches Beispiel wollte ich 2 PCs über den Com anschluss verbinden, um Buchstaben ( also ASCII Zeichen)
    zu senden bzw. zu empfangen.
    Beim ausprobieren, ob mein Code schon soweit ist ein Port zu öffnen, kommt eine Fehlermeldung: "Der angegebene Anschlussname beginnt nicht mit COM/com oder wird nicht in einen gültigen seriellen Anschluss aufgelöst.
    Parametername: portName"
    Das Problem ist jetzt, ich habe bei Textbox1 COM1 ( bis 16) hingeschrieben. Nur interessiert es dem Kasten anscheind nicht.
    Also: Warum ist der der Meinung, dass der Com Anschlussname nicht mit COM anfängt, wenn ich es doch hinschreibe.
    Und selbst wenn ich bei den Eigenschaften von SerillenPort1 Portname hinschreibe, mein Code dies bezüglich lösche, ist es immer noch der gleiche Fehler ?( Will doch nur was senden und empfangen ;( Gibt es nicht eine möglichekeit, das mir die Kiste zumindest sagt ob nur DIESER Com anschluss nicht verfügbar ist? ( Habe zwar 16 ausprobiert aber was weiß ich denn)
    Mach das ganze mal im Designer und schreibe den Code dann aus der FormX.Designeer.vb ab.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Sieh Dir mal SerialPort.GetPortNames() an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also ich versuche jetzt den GetPortNames befehl zu nutzen um zu erkennen was meine kiste nun hat...
    Problem dabei ist jetzt das der mir sagt zu viele Argumente... Aber da steht ich soll das als String machen?
    Oder was ist darin schon wieder auszusetzen?
    Dim PORT As String
    IO.Ports.SerialPort.GetPortNames(PORT)
    Label1.Text = PORT

    Und die Sache mit dem Designer:
    Da steht nicht viel drinne was dem Com Port betrifft... Habe auch schon versucht von ein Beispiel Projekt was rein zu kopieren ( mal abgesehen davon das ich wissen will, warum es dann fuzt wenn es das täte) aber auch das geht nicht...
    Auch nur in den Eigenschaften alles einzustellen ein button zu machen und wenn man drauf kliegt soll der den Port öffen... selbst das geht nicht... :huh:
    :rolleyes:

    VB.NET-Quellcode

    1. Dim names() = System.IO.Ports.SerialPort.GetPortNames()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Okay... Danke
    Aber wie kann ich den das nun beibiregen das der mir das anzeigen soll
    so einfach wie: MsgBox(names)
    ist es schonmal nicht...

    Um euch länger nicht mit den "klein" Problemen zu nerven... Sagt mal kennt ihr ein Buch wo das gut ( oder zu mindest überhaupt)
    erklärt wird? Am besten auf Deutsch :D

    Cobra-Schock schrieb:

    so einfach wie: MsgBox(names) ist es schonmal nicht...
    :S
    Am besten, Du kehrst zu den Grundlagen zurück, da Du nicht bemerkt hast, dass nach names Klammern stehen: "()", d.h., das ist etwas meehrdimensionales.
    In einem Rechner können nämlich mehr als kein serielles Port sein. ;)

    VB.NET-Quellcode

    1. Dim names() As String = System.IO.Ports.SerialPort.GetPortNames()
    2. If names.Length > 0 Then
    3. ComboBox1.Items.AddRange(names)
    4. MessageBox.Show(names(0))
    5. End If
    Mit der ComboBox kannst Du gleich das richtige Port auswählen.
    Bilder
    • Ports.jpg

      2,69 kB, 156×75, 1.085 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke
    hat soweit auch gefunzt... COM1 wurde erkannt, konnte es auswählen nur bei dem Befehlt mit OPEN
    der sagt mir jetzt das die Daten da unzulässig sind... Daten beim einfachen öffnen?
    Oder meint der jetzt die Baudrate usw?
    Naja komm noch dahinter.

    Großen Dank an euch bzw. an RodFromGermany :) mal gucken wann ich deine Hilfe wieder brauche
    Alle Properties setzen, dann Open.
    Die Properties kannst Du (zunächst)n auch im Designer setzen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!