Suchergebnisse

Suchergebnisse 1-13 von insgesamt 13.

  • Benutzer-Avatarbild

    @Haudruferzappeltnoch Initialisieren und los, ganz einfach. Du musst wissen, ob Du Bytes oder Strings senden willst. Bei Strings muss das Encoding auf beiden Seiten gleich sein, bei Bytes kannst Du es ignorieren. Das DataReceived-Event kommt in einem anderen Thread, also musst Du invoken, wenn Du Daten an der GUI anzeigen willst. Im Gegensatz zu @Bartosz konvertiere ich die Bytes sofort zu einem String und invoke den Empfangstext, ansonsten halt die Bytes. Wenn Du mehrere Schritte einer wechsels…

  • Benutzer-Avatarbild

    @Haudruferzappeltnoch Das SerialPort wird zwar in Deinem GUI-Thread initialisiert und bedient, aber dann wird es von Dir "allein gelassen" und wartet auf eine Reaktion der Gegenstellle. Würde dieses Warten in Deinem GUI-Thread stattfinden, wäre diese Deine GUI blockiert. Das wollen wir doch nicht. Das System lässt also das SerialPort in einem anderen Thread warten um Dir dann bei Vorhandensein von Daten, normalerweise nach Vorliegen eines Zeilen-Ende-Zeichens (das kannst Du vorgeben), das DataRe…

  • Benutzer-Avatarbild

    Zitat von Haudruferzappeltnoch: „Also Invoke schiebt die Methode in den Serialport Thread?“Nein. Aus dem Serial-Port-Thread in den GUI-Thread, wo Du die Info vom Port anzeigen kannst.

  • Benutzer-Avatarbild

    @Haudruferzappeltnoch Nein. GetPortNames() ist eine statische (Shared) Funktion, die Du aus dem GUI-Thread aufrufen kannst.

  • Benutzer-Avatarbild

    @Haudruferzappeltnoch Das sollte Dich zunächst nicht kümmern, lass das alles das System machen. Wichtig ffür Dich ist nur, ob ein Prozess im GUI-Thread oder aber nebenläufig (also in einem anderen Thread) läuft. Abfragen kannst Du das so: VB.NET-Quellcode (4 Zeilen)Richtig Multi-Threading machst Du z.B. bei Parallel.For und Parallel.ForEach, da läuft dann jeder Laufindex in einem anderen Thread, was zu einem gewaltigen Performance-Gewinn führt.

  • Benutzer-Avatarbild

    Zitat von Haudruferzappeltnoch: „da kann ich keinen Unterschied feststellen in der Ausführung“Klar. Wenn Du vom GUI-Thread in den GUI-Thread invokst, passiert nix, es dauert nur etwas länger. Lies mal hier: docs.microsoft.com/de-de/dotne…vokerequired?view=net-5.0

  • Benutzer-Avatarbild

    @Haudruferzappeltnoch Barcode-Scanner sind ein eigen Ding. Das System erkennt sie als Tastatur, und so funktionieren sie auch, wenn Du sie ansteckst. Der Code wird in das fokussierte Control eingetragen, Word, TextBox und solch. Wenn Du einen Barcode-Scanner für einen bestimmten Zweck brauchst, dann erkundige Dich in der Firma und lass Dir Infos zukommen: Ansprechen eines Barcode-Scanners mit einem geeigneten Treiber als SerialPort. Dort musst Du das Zeilenende-Zeichen (.NewLine) vorgeben und da…

  • Benutzer-Avatarbild

    @Haudruferzappeltnoch Lies keine Bytes, lies den gescannten Text! Ein Barcode ist doch nix anderes als ein Strichcode-Font, genau wie Arial oder Courier New. VB.NET-Quellcode (5 Zeilen)und feddich.

  • Benutzer-Avatarbild

    @Haudruferzappeltnoch Deine kurzen Snippets sind iwie aus dem Kontext gelöst und nicht voll aussagekräftig. Wie sieht die Initialisierung des Ports aus? Du willst theoretisch über das SerialPort-Handling philosophieren und kommst dann sehr praktisch mit nem Barcodescanner. Ich schlage vor, Du machst diesen Thread zu, meldest ihn, um ihn ganz zuzumachen und erstellst einen neuen Thread mit praktischen Problemen und vollständigerem Code. Ansonsten wird dann in zwei Threads gepostet und die werden …

  • Benutzer-Avatarbild

    @Haudruferzappeltnoch Liest Du echte Bytes oder liest Du Strings, deren Zeichen 8 Bit lang sind? Das kannst Du dann im Encoding bei der Initialisierung vorgeben und dann, wie gezeigt, mit Strings hantieren.

  • Benutzer-Avatarbild

    Zitat von Haudruferzappeltnoch: „Woran erkenne ich ob ich "echte" Bytes oder String-Bytes lese?“Beschreibe das, was Du sendest und das, was Du zu empfangen erwartest.

  • Benutzer-Avatarbild

    Zitat von Haudruferzappeltnoch: „Also für String, für Zahlen, für was kann es denn sonst noch geben?“Ein SerialPort kennt nur Bytes. Mit Hilfe der Property .Encoding kannst Du mit dem Port auch Strings senden und empfangen, das funktioniert genau dann, wenn beide Seiten dasselbe Encoding verwenden. Zahlen sind entweder Byte-codiert (4 Byte für ein Integer, 8 Byte für ein Long) oder werden als String-Repräsentation gehandelt ("3,1415").

  • Benutzer-Avatarbild

    @Haudruferzappeltnoch SerialPort.ReadExisting() liefert einen String zurück. Dieser ist entsprechend .Encoding konvertiert. SerialPort.Read() liefert eine Byte-Folge zurück. Je nachdem, was Du erwartest, rufst Du die eine oder die andere Methode auf. Üblicherweise ist das absolut eindeutig.