Announcement

Collapse
No announcement yet.

Daten im SerialPort einlesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    Anstatt einem SerialAnalyzer kannst du auch, wenn dein Rechner noch 2 COM Ports...
    habe ich leider auch nicht. Benutzte ein Notebook. Das hat nur noch ein Port...


    Geh in die Systemsteuerung und prüfe ob dort die Port Einstellungen ...
    Habe ich geprüft. Scheint auch alles OK zu sein...

    Comment


    • #32
      Selbe Portparametrierung wie du sie benötigst?
      Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

      Comment


      • #33
        Habe den Fehler gefunden. Dieser Code Funktioniert:

        [highlight=vbnet]
        With SerialPort
        If .IsOpen Then .Close()

        .PortName = "COM1"
        .BaudRate = 9600
        .Parity = IO.Ports.Parity.None
        .DataBits = 8
        .StopBits = IO.Ports.StopBits.One
        .Handshake = IO.Ports.Handshake.None
        .DtrEnable = True

        .Open()

        ''"A1" & Chr(3)
        Dim MyInput() As Byte = {&H41, &H31, &H3}
        .Write(MyInput, 0, MyInput.Length)
        Do
        Application.DoEvents()
        Loop Until .BytesToWrite = 0
        Threading.Thread.Sleep(1000)

        ' '"P01" & Chr(3)
        Dim MyInput1() As Byte = {&H50, &H30, &H31, &H3}
        .Write(MyInput1, 0, MyInput1.Length)
        Do
        Application.DoEvents()
        Loop Until .BytesToWrite = 0
        Threading.Thread.Sleep(1000)

        Dim RetVal As String = .ReadExisting()

        End With
        [/highlight]

        Was fehlte war folgendes:

        [highlight=vbnet]
        '...
        .Handshake = IO.Ports.Handshake.None
        .DtrEnable = True
        '...
        [/highlight]


        Ich habe aber trotzdem noch eine Frage:

        Im VB 6 habe ich folgende Zeilen genutzt.
        Wie müßten diese unter .Net aussehen...?

        Code:
        With MSComm
              .InBufferSize = 64
              .InputLen = 40
        End With

        Comment


        • #34
          [highlight=vbnet]
          '...
          .ReadBufferSize = 64
          .Read(RetVal,0,40)
          '...
          [/highlight]

          würd sagen des wär des Padon dazu
          Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

          Comment


          • #35
            Hallo,

            falls
            .ReadBufferSize = 64
            das Pandon zu
            .InBufferSize
            ist, bewirkt dieses nichts...

            lt. Hilfe:
            Die ReadBufferSize-Eigenschaft ignoriert alle Werte, die kleiner als 4096 sind.

            .Read(RetVal,0,40)
            funktioniert so nicht....

            Ich habe jetzt folgendes gemacht:
            [highlight=vbnet]
            Dim DT As DateTime = Now.AddMilliseconds(TimeOut)
            SerialPort.DiscardInBuffer()
            Do
            Application.DoEvents()
            Loop Until SerialPort.BytesToRead > 40 OrElse Now >= DT
            [/highlight]

            Das funktioniert....

            Vielleicht hat ja jemand noch ne bessere Idee.... würd diese dann mal testen wollen...

            Zur Erklärung...
            Aus meiner Com-Schnittstelle kommen ständig Werte. Ich benötige nur die letzten 40 Bytes. Aber Achtung es muss auch darauf geachtet werden, dass mal keine Daten kommen könnten. Dann darf die Sache nicht stehen bleiben...

            Comment

            Working...
            X