Serielle Daten vom Barcodescanner über Ethernet empfangen.

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Serielle Daten vom Barcodescanner über Ethernet empfangen.

    Hallo zusammen,

    ich möchte gerne Daten von einem Barcodescanner Typ Wenglor FIS-0860-0103 der Seriell RS232 an ein Feldbus-Gateway Typ:Wenglor AB-ETH01 angeschlossen ist, mit VB 2010 Daten empfangen.
    Habe mir schon ein kleines Tool gebastelt, womit ich wenn ich mich direkt mit Com1 vom PC an den Barcodescanner verbinde, Daten empfangen kann. Mein Code dazu im Anhang.

    Meine Frage ist wie muss ich mein Code erstellen, damit ich vom Feldbus-Gateway mit seiner konfigurierten IP-Adresse genauso Daten empfangen wie im o.a. Code, nur das ich es von jedem Rechner im Netzwerk aus machen kann.
    Bin kein VB-Experte habe mir bis jetzt alles zusammen gegooglt.
    Und noch eine 2. Sache, warum habe ich in meinem Textfeld bei meinem jetzigen Code, wo die empfangenen Daten angezeigt werden, an einigen Stellen Fragezeichen, statt eine Ziffer so wie es in Hyperterminal angezeigt wird.

    Vielen Dank schon mal im voraus für eure Hilfe...

    Dateien
    Zunächst: Du schreibst VB.net!

    Nutze keine Funktionen wie Len() oder On error GoTo.

    Passende Funktionen sind .Length und ein TryCatch-Statement!

    Gruß,
    Manawyrm

    EDIT: Schick uns/mir mal nen Datenblatt zum Gateway.

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

    Habe den Code nochmal überarbeitet mit den passenden Funktionen zu VB.net, danke schonmal für die bisherigen Tipps.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public COM_Anschluss As String
    3. Public Bits_pro_Sekunde, Datenbits As Integer
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. COM_Anschluss = ComboBox1.Text
    6. Bits_pro_Sekunde = ComboBox2.Text
    7. Datenbits = ComboBox3.Text
    8. Form2.Show()
    9. End Sub
    10. End Class


    VB.NET-Quellcode

    1. Public Class Form2
    2. Dim inputData As String = ""
    3. Dim zaehler As Integer = 0
    4. Public Event DataReceived As IO.Ports.SerialDataReceivedEventHandler
    5. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    6. Try
    7. '//Werte für einige Eigenschaften
    8. SerialPort1.PortName = Form1.COM_Anschluss
    9. SerialPort1.BaudRate = Form1.Bits_pro_Sekunde
    10. SerialPort1.Parity = IO.Ports.Parity.None
    11. SerialPort1.DataBits = Form1.Datenbits
    12. SerialPort1.StopBits = IO.Ports.StopBits.One
    13. SerialPort1.Handshake = IO.Ports.Handshake.None
    14. SerialPort1.RtsEnable = True
    15. '//Öffnen der seriellen Schnittstelle
    16. SerialPort1.Open()
    17. Catch ex As Exception
    18. MsgBox(ex.Message)
    19. End Try
    20. End Sub
    21. Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, _
    22. ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _
    23. Handles SerialPort1.DataReceived
    24. Try
    25. inputData = SerialPort1.ReadLine '//oder SerialPort1.ReadLine
    26. Me.Invoke(New EventHandler(AddressOf DoUpdate))
    27. Catch ex2 As Exception
    28. MsgBox(ex2.Message)
    29. End Try
    30. End Sub
    31. Public Sub DoUpdate()
    32. TextBox1.Text = inputData
    33. TextBox2.Text = inputData.Length
    34. zaehler = zaehler + 1
    35. TextBox3.Text = zaehler
    36. End Sub
    37. Private Sub Form2_FormClosed(ByVal sender As System.Object, _
    38. ByVal e As System.Windows.Forms.FormClosedEventArgs) _
    39. Handles MyBase.FormClosed
    40. '//Schließen der seriellen Schnittstelle
    41. SerialPort1.Close()
    42. End Sub
    43. End Class

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

    Das 2. Problem mit den Fragezeichen in den empfangenen Daten konnte ich lösen, war die falsche Datenbitanzahl im Com-Anschluss eingestellt, aber bei der anderen Sache:Datenempfang über Ethernet habe ich nach wie vor keine Lösung.

    Wenn jemand ein Codebeispiel für mich hätte,wäre ich sehr dankbar...
    du könntest mal den VersuchsChat als Server starten, und dieses Feldbus-Dingens so konfigurieren, dasses da was hinsenden kann.

    Also VersuchsChat ist jetzt nicht die Lösung, aber enthält immerhin einen Tcp-Server, der auch anzeigt, auf welche IP und Port er lauscht, und auch Anleitung zum PortForwarding, und erstmal gucken, ob sich ühaupt was rührt.