SerialPort1 abfragen

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von DragonSam.

    SerialPort1 abfragen

    Hallo Community

    Ich hab nochmal ein Noob-Problem. Ich habe einen µC, der an COM3 meines Computers hängt. Er sendet Daten über UART. Die Tutorials im Net kapiere ich aus irgendeinem Grund nicht. Meine Fragen:

    1. Wie frage ich den "SerialPort1"?

    2. Wie schreibe ich die empfangenen Daten in ein Textfeld (mit Zeilenumbruch)?

    3. Ich habe einen Button "Button1". Wenn ich ihn drücke soll über den ComPort "Next" gesendet werden. Wie mache ich das?



    Ich habe erst gestern mit VB angefangen, also verzeiht mir bitte meine Unwissenheit.

    Vielen Dank für eure Antworten.



    MfG DragonSam

    VB.NET-Quellcode

    1. Imports System.Text ' <=== !
    2. Public Class Form1
    3. 'Codeabschnitt von Rod:
    4. Sub SendSerialData01xxxx(ByVal data As String)
    5. Dim enc As Encoding = Encoding.GetEncoding(1252)
    6. ' Send strings to a serial port.
    7. Using com1 As IO.Ports.SerialPort = _
    8. My.Computer.Ports.OpenSerialPort("COM3", 2400, IO.Ports.Parity.None, 8)
    9. com1.Encoding = enc
    10. com1.Write(data)
    11. End Using
    12. End Sub
    13. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    14. Dim wert As String = "Next"
    15. SendSerialData01xxxx(wert)
    16. End Sub
    17. End Class





    Wenn das senden geht ....dann weiter
    Hallo
    Ein bisschen Code ist gut. Ich hab schon die komplette Struktur fertig. Ich habe genau den Code, den du gepostet hast bei mir eingefügt. Ich hab nur die Port-Einstellungen (Port und BAUD-Rate) verändert. Aber mein Gerät antwortet nicht. Wenn ich den gleichen String mit einem Terminal-Programm sende antwortet es mir.

    MfG Pinguin
    Mein Terminal sendet zum Schluss nur noch das nötige Stopbit. Zumindest hab ich sonst nichts bemerkt.

    E: So, jetzt hab ich mal ein Gerät dazwischen gehängt. Das sagt mir bei jedem Druck auf den Button, dass etwas gesendet wird. Das heißt, dass es bei meinem µC nur nicht mehr richtig ankommt.

    E²: Ich bin so blöd. Ich hab erst jetzt gemerkt, dass ich die BAUD-Rate auch noch in den Einstellungen von "SerialPort1" anpassen sollte. Ich könnte mir in den A**** beißen. Vielen Dank für deine Geduld,fraju.

    MfG DragonSam

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „DragonSam“ ()

    Hallo


    VB.NET-Quellcode

    1. dim daten, t_zahl as Byte
    2. Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
    3. t_zahl = t_zahl + 1 wird beim Empfang hochgezählt
    4. If t_zahl = 100 Then t_zahl = 0
    5. TextBox2.Text = t_zahl 'hier steht nichts in der box (fremder thread)
    6. byteeinlesen()
    7. End Sub
    8. Private Sub byteeinlesen()
    9. daten = SerialPort1.ReadByte()
    10. End Sub
    11. Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    12. Label1.Text = "Empfang " & daten
    13. Label2.Text = t_zahl 'test ob etwas empfangen wird
    14. End Sub



    Ist ein Ausschnitt aus der Zip.
    Teste und Versuche es.
    Edit:Es wird ein Byte eingelesen, sollte es ein String sein versuche es mit SerialPort1.Readline und Daten als String

    Wenn es nicht klappt melden...aber auch wenn es Funktioniert.

    Gruß
    Da markiert er mir meine RichTextBox1 und sagt immer "Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement RichTextBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.".

    E: Ok,ich habs jetzt über ein paar Umwege mit Invoke gelöst. Aber kann ich eine Groupbox mit Invoke irgendwie disablen/enablen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DragonSam“ ()