SerialPort.Writeline - nur 32 Zeichen möglich?

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von CarstenM.

    SerialPort.Writeline - nur 32 Zeichen möglich?

    Hallo Zusammen,

    die Suche hat mir leider nichts entsprechendes geliefert:

    ich entwickle gerade ein kleines Terminalprogramm, welches über Virtuelle Com Ports mit einem Gerät kommuniziert. Das ist auch alles soweit kein Problem, denn die Befehle werden bis jetzt ordentlich übertragen und Antworten entsprechend behandelt. Später werden da einige automatismen implementiert, Kommunikationsweg bleibt aber der gleiche.

    Jetzt will ich einen Datensatz ("s wmd 0000 001002003004005006070809") an das Gerät schicken und da schmiert mir der COM-Port sowas von ab, dass ich den Funk-Dongle vom USB Port ziehn und wieder neu stecken muss, damit das Programm beim nächsten Start wieder mit diesem Port arbeiten kann. Bis zu einer Zeichenlänge von 32 funktioniert der Befehl einwandfrei (steht halt Käse im Gerät)

    Die Fehlermeldung beim aufruf von SerialPort.WriteLine(STRING) lautet dann "Ein an das System angeschlossenes Gerät funktioniert nicht".
    Leider gibt es dazu keine weiteren Informationen

    Öffne ich das Windows-Hyperterminal und füge den String dort ein, funktioniert alles ohne Probleme. Wo ist mein Fehler?

    Vielen Dank schonmal
    Hallo fraju,

    Einstellungen vorm Start des Programms



    Einstellungen beim Öffnen des Ports -> Da Terminalprogramm, sollen diese Felder über DropDown änderbar sein (bis auf dtr und rts)

    rs232.PortName = (Wahl aus DropDown)
    rs232.BaudRate = 9600
    rs232.Parity = n
    rs232.StopBits = 1
    rs232.DataBits = 8

    rs232.Open()

    rs232.DtrEnable = True
    rs232.RtsEnable = True
    Ok, vielleicht hilft ja doch der StackTrace weiter

    bei System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
    bei System.IO.Ports.SerialStream.EndWrite(IAsyncResult asyncResult)
    bei System.IO.Ports.SerialStream.Write(Byte[] array, Int32 offset, Int32 count, Int32 timeout)
    bei System.IO.Ports.SerialPort.Write(String text)
    bei System.IO.Ports.SerialPort.WriteLine(String text)
    bei Communicator.Form1.SendCommand(String strCommand) in C:\test\Communicator\Form1.vb:Zeile 234.
    Hi,

    ich verstehe dein Anliegen jetzt nicht so ganz!?
    Die Config kennst du, ich bezweifle, dass dir das weiterhilft:

    VB.NET-Quellcode

    1. Private Sub SendCommand(ByVal strCommand As String)
    2. Try
    3. Communicator.WriteLine(strCommand)
    4. Catch ex As Exception
    5. Console.WriteLine(ex)
    6. End Try
    7. txtSend.Text = ""
    8. End Sub
    Servus,

    das kann ich erst morgen testen. Optimier heute nur ein wenig den Code :)
    Mit Write(chrArray() + vbCrLf) hab ichs auch schon porbiert oder meinst du eine For-Schleife und danach vbCrLf?
    Wenn es ne ungerade Zahl wäre, würd mir das auch nciht so den Kopf zerbrechen.. aber es ist halt die 32 ...

    schönen Sonntag noch ..
    Weltklasse =)

    Es funkt .. im wahrsten Sinne des Wortes ;)

    VB.NET-Quellcode

    1. Try
    2. For i As Integer = 0 To tmpChar.Length - 1
    3. Communicator.Write(tmpChar(i))
    4. Next
    5. gegenstelle.Write(vbCrLf)
    6. Catch ex As Exception
    7. Console.WriteLine(ex)
    8. End Try


    warscheinlich ist der Funkdongel dafür zu träge um das gleich abzuarbeiten... oder es gehn wirklich nur 32 Zeichen pro WriteLine

    Danke für den Tip :thumbsup:

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