Problem bei Übertragung via Serieller Schnittstelle - Chr() nicht deklariert

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Se11001.

    Problem bei Übertragung via Serieller Schnittstelle - Chr() nicht deklariert

    Hallo,

    ich habe ein Problem mit der Übertragung von Daten zu meinem Arduino. Ich möchte zwei Bytes senden, eines zum identifizeren was kommt (Buchstabe) und das nächste mit dem Wert selbst:

    Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. If +Serial.IsOpen Then
    3. Serial.DiscardOutBuffer()
    4. Serial.Write("P")
    5. Serial.Write(Lm1)


    Da mit diesem Code nicht der Wert selbst, sondern der ASCII code der entsprechenden Ziffern übertragen wird, wurde mir geraten die Char() - Funktion zu nutzen, das sähe dann folgendermaßen aus (Wobei in Lm1 der Wert gespeichert ist.):

    Quellcode

    1. Serial.Write("Lm1" & Chr(Lm1)


    Leider erhalte ich die Fehlermeldung " "Chr" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe ..."
    Worin liegt der Fehler bzw. gibt es alternative Befehle/Möglichkeiten zur Übertragung des Wertes selbst?

    Verwende Visual Studio 2010 Express (auch schon mit 2012 versucht), .NET 4.0 (auch schon mit 4.5 und 3.5 versucht). Angeblich sollte sich der Befehl ja in der Microsoft.VisualBasic Datenbank befinden, diese ist aber ohnehin standardmäßig in jedes Projekt eingebunden.

    Ich hoffe es kann mir hier jemand helfen.


    Danke!

    Gruß,
    Se11001
    Convert.ToChar

    Edit: Habe gerade mal die Arduino-Doku angeschaut:
    write()
    Writes binary data to the serial port. This data is sent as a byte or series of bytes; to send the characters representing the digits of a number use the print() function instead.
    Write erwartet Bytes, keine Chars.
    Wenn du Chars schreiben willst, nimm print().
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    Was in drei Teufels namen macht denn der + Operator in dieser Verwendung?
    Das ist doch nen Boolean.

    VB.NET-Quellcode

    1. If +Serial.IsOpen Then


    Zum Arduinocode:

    Serial.print ist zum schreiben von Variablen! Wenn du also Serial.print("Hallo!") machst, ist das OK. Wenn du nun Serial.print(123123123) machst, wird genau diese Zahl gesendet.

    Wenn du aber den Character als Byte senden möchtest, musst du die .Write Funktion zum direkten Schreiben auf den Ausgang verwenden!

    Gruß,
    Manawyrm

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

    Hallo nochmals,

    danke für die zahlreichen Antworten.

    Ich konnte es dank der Antwort von petaod folgende Lösung finden:

    Quellcode

    1. Serial.Write(Convert.ToChar(Lm1))

    Funktioniert einwandfrei.

    Das "+" kam wohl als Tippfehler dort hin und hat keinen Fehler verursacht. Aber danke für den Hinweis.

    Serial.print ist zum schreiben von Variablen! Wenn du also
    Serial.print("Hallo!") machst, ist das OK. Wenn du nun
    Serial.print(123123123) machst, wird genau diese Zahl gesendet.

    Wenn du aber den Character als Byte senden möchtest, musst du die .Write Funktion zum direkten Schreiben auf den Ausgang verwenden!
    Im Arduino Code verwende ich ja Serial.write, es ging nur um den VB Code.


    Gruß,
    Se11001