Suchergebnisse
Suchergebnisse 1-10 von insgesamt 10.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
-
@Famore Willkommen im Forum. Delegate ist im Prinzip eine Deklaration für eine Prozedur, die Du als Parameter verwenden kannst. Ein serielles Port stellt ein Event bereit, das ausgelöst wird, wenn Daten eingetroffen sind. Events sind Sub, nicht aber Function. Invoken musst Du, wenn Du Informationen zur Anzeige an der GUI aus einem Nebenthread in den GUI-Thread übertragen willst. Du kannst das SerialPort im Designer auf die GUI ziehen. Du kannst das SerialPort so behandeln, dass es Strings übertr…
-
@Famore Das Modul weiß a priori nix von den Instanzen der beteiligten Formen, Du müsstest die betreffende Form oder ein Delegat reinreichen, damit dorthin invoked werden kann. Diese Herangehensweise halte ich für suboptimal. Gut ist es, in sich geschlosene Funktionalitäten in separate Klassen auszulagern, aber solch muss von anbeginn der Projektentwicklung geplant und implementiert werden. Dies nachträglich zu tun, ist meist ein erhebliocher Mehraufwand.
-
Zitat von ErfinderDesRades: „Control.Invoke“muss sein, denn das SerialPort arbeitet in einem NebenThread. Ich hab mit solch zu tun.
-
Definiere Zitat von Famore: „das jeweilige Label“Was soll hier eigentlich rauskommen? VB.NET-Quellcode (2 Zeilen)Sieh Dir mal dies an: VB.NET-Quellcode (2 Zeilen)
-
Zitat von VaporiZed: „dass so ein Port bis zum Programmende am besten offen bleiben sollte.“So isses. Üblicherweise wechselt ja während der Programmlaufzeit das Gerät nicht.
-
Zitat von Famore: „Programmfehlers wegen unkontrollierten Datenaustausch an der Schnittstelle.“Gibt es bei der RS232 nicht, Was Du brauchst ist eine Function SendCommandWait4Answer(cmd As String) As String. Je nach Antwortzeit kannst Du das synchron machen, also Kommando senden, warten und Antwort abholen. Die kannst Du dann direkt in des Buttons Label darstellen.
-
Zitat von Famore: „SerialPort1.ReadTimeout = 10“10 Millisekunden? Zieh doch mal den Stecker raus, sofern es sich um die RS232 handelt, da kommt gewiss ein TimeOut.
-
@Famore Ein Timeout kommt dann, wenn Du synchron Daten lesen willst, aber keine Daten zur Verfügung stehen. Möglicherweise sollte auch das DataReceived-Event nicht aboniert sein, aber da bin ich mir nicht sicher. Poste mal den relevanten Code,
-
@Famore Was willst Du denn erreichen? Soll immer zu einem von mehreren gesendeten Befehl unmittelbar eine Antwort abgeholt werden oder sendest Du einen Befehl und es ist Dir im dann Prinzip egal, wann die Antwort kommt? Wie sehen Protokoll und Timing aus?
-
@Famore SendCommandWait4Answer solltest Du anders aufbauen: Quellcode (3 Zeilen)Die Dauer des Sleep sollte etwas länger sein als die "normale" Antwort-Dauer. Wenn dann keine Antwort da ist, liegt ein Timeout vor.