Mein Programm sendet, aber nur keine Zahlen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Mein Programm sendet, aber nur keine Zahlen

    Moin zusammen,
    ich habe mich durch viele Beiträge zur Programmierung mit dem COM Port gelesen, habe aber keine funktionierende Antwort gefunden.

    Ich habe meinen Atmega8 per UART mit dem PC verbunden. Wenn ich jetzt mit einem Terminal Programm wie dem Controlcenter von My Avr eine zwei sende, geht meine LED an, was so gewollt ist, weil eine If abfrage die zuständige LED einschaltet.

    Ich habe ein kleines Programm geschrieben, welches einen Button hat, der dann den Wert bzw. die Zahl 2 senden soll. Wenn ich jetzt das Programm Debuggen und auf den Button klicke, meldet mein Testboard auf dem der Atmega8 sitzt eine Datenübertragung, aber meine LED geht nicht an. Egal ob ich die Zahl in Hex, binär oder Dezimal schreibe.

    Folgendes habe ich ich in mein Programm geschrieben, ich habe zuerst einen Button erstellt und dann das Serial Port1 toll aus der Toolbox in meine Form gezogen, und dann Baudrate auf 9600 und als PORT Name Port 4 gewählt so wie bei mir im Terminal bei dem es geht.

    Im Quellcode vom Button gebe ich folgende drei Zeilen ein:

    SerialPort1.Open()
    SerialPort1.Write("2")
    SerialPort1.Cose´()

    und das wars, wenn ich jetzt den Button betätige, meldet die Statusled auf dem Board das was passiert aber es kommt wahrscheinlich nicht das richtige an.

    Ich hoffe ihr könnt mir helfen,
    Lg, Frank
    Hallo,

    hast du die BaudRate richtig eingestellt? evtl. solltest du mal probieren einen Byte zu senden(mit verschiedenen Encodings)

    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hallo,

    das siehst du an den Überladungen(SerialPort.Write(buffer() As Byte,offset As Integer,count As Integer)
    mit einem Encoding würde das so aussehen:

    VB.NET-Quellcode

    1. Dim buffer() As Byte = System.Text.Encoding.ASCII.GetBytes("2")
    2. SerialPort.Write(buffer,0,buffer.Length)
    3. 'oder evtl. mal direkt als Byte senden?
    4. SerialPort.Write(New Byte() {2},0,1)

    anstatt "ASCII" kannst du hier ja mal andere Encodings einsetzen(evtl. sieht man das ja auch beim Terminal, welches verwendet wird?!)

    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Es ist mehr als peinlich :rolleyes:

    jvbsl schrieb:

    sieht man das ja auch beim Terminal, welches verwendet wird?!)
    Ich habe nochmal nachgesehen in meinem Terminal Programm und habe dabei festgestellt, wenn ich in den Datenmodus gehe, also die Uart einschalte. Das mein Board dann voll Strom bekommt. Die Software stellt den Programmer auf UART ein.

    Also schnell in die Anleitung gesehen und was steht da, für eine Verwendung der UART bitte DIP Schalter oberhalb des Programmers einstellen.

    Jetzt funktioniert alles :) Danke für die Antwort "jvbsl", ohne dich hätte ich im Terminal Programm gar nicht weiter gesucht und dabei ist mir das dann aufgefallen.

    Lg, Frank
    SerialPort.Write->Methode zum schreiben an den Serial Port
    New Byte() {2} ->erzeugt ein neues Byte-Array mit einem Item(2)
    New Byte() {2,128}->wäre ein Byte Array mit zwei Items(2 und 128) durch Kommata können somit weitere angehängt werden
    ,0->Item ab dem geschickt werden soll(0 ist minimum)->in diesem Fall bei 2
    ,1->Anzahl der Elemente, welche geschickt werden sollen->ein Element, also nur die 2

    ich bin mir nicht wirklich sicher, ob diese Version für dein Vorhaben funktioniert. Aber wenn ist natürlich gut ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---