Zum Inhalt springen

[VB]COM-Port reagiert nicht auf gesendeten String


Empfohlene Beiträge

Geschrieben

Da ist der Code

Private Sub MenuDelete_Click()

If MSComm1.PortOpen = False Then MSComm1.PortOpen = True

MSComm1.Output = "T1" & vbCrLf

MSComm1.Output = "CLRMEM" & vbCrLf

MSComm1.PortOpen = False

End Sub

Also der Port soll geöffnet werden, die beiden Strings sollen gesendet und der Port dann wieder geschlossen werden.

Ich habe die Befehle per Serial Monitor gesendet und es funzt einwandfrei.

Ich schicke sie mit vb und der Barcodescanner merkt nix davon.

Ich habe es bereits mir vbCrLf, vbCr und ohne den Schnörkel probiert, kein Erfolg.

1. Frage: Wie krieg ich das gesendet, das es der Scanner kapiert?

2. Frage: Wie krieg ich da ein 2 Sekunden Delay dazwischen?

Geschrieben

Hi,

ich gehe mal davon aus das der Scanner ein LineFeed als Befehlsabschluß ansieht.

Probier mal statt den VB Konstanten den Abschluß mit

Chr$(&HD)
(ASCII Zeichen 13 = LineFeed) und den Delay erreichst Du mit der API-Funktion Wait (da steht dann aber die ganze Applikation) oder mit einem Timer nach dem Motto

dim Start as Date


Start = Now


Do


if DateDiff("s", Start, now) > 2 then exit do


loop

Ich hoffe ich konnte helfen.

Geschrieben

Funzt leider noch nicht.

Kann es auch daran liegen, das ich das Prog unter Windows 2000 kompiliere, aber unter NT ausführe?

Wenn ja, was muss ich machen, damits bei beiden läuft?

Geschrieben

Also der Port wird geöffnet, hab versucht, während das Prog läuft, den Port zu öffnen, und er sagt mir, der ist bereits offen. Daran kanns also nicht liegen.

Ich hab mal mit dem Serial Monitor rumgespielt, wenn ich da die Zeichenfolge "T1#0D" sende, kommt das gewünschte Ergebnis.

Wenn ich versuche, die gleiche Zeichenfolge über MSComm1.Output an den Scanner zu schicken, tut der nichtmal piepen.

Ich hab mal probiert, über den Serial Monitor "T1" ohne CR an das Gerät zu schicken, mit dem selben Effekt, den ich in vb hatte, nämlich keinem.

Ich vermute daher mal, dass es an dem gesendeten String liegt. Was könnt ich denn da noch dazuschreiben, damit er es erkennt?

Hüüülfee!:(

Geschrieben

Es funzt, der Scanner redet mit mir.

Ich hab einfach mal probiert, das vbCrLf am Anfang und am Ende zu Senden, und siehe da, es funktioniert. Ist nirgends in der Doku gestanden, das soll man wohl riechen.:rolleyes:

Trotzdem Danke für die Mühen.

:uli

Aber jetzt bedrückt mich was anderes. Ich will per Input dei Daten auslesen.

Klappt auch, nur gibt mir das Gerät keinen CommEvent aus, wenn der Sendevorgang beendet ist. Was gibt denn Input zurück, wenn kein Input kommt? Mit Null gehts nicht, mit "" auch nicht. Und False geht ebenso wenig.

Hier der Nicht-Funktionierende Code:


Private Sub ScanRead_Click(Index As Integer)

PortOpen (PortNr)  'Die Funktion öffnet den Port

ComWrite ("D")      'Schickt ein Zeichen an den Port

MSComm1.InputLen = 0

Do

    InString = InString & MSComm1.Input

    If MSComm1.Input = "" Then Exit Do

Loop

PortClose

Text1.Text = InString

InString = ""

End Sub

Geschrieben

The RThreshold and SThreshold Properties

The RThreshold and SThreshold properties set or return the number of characters that are received into the receive and transmit buffers before the OnComm event is fired. The OnComm event is used to monitor and respond to changes in communications states. Setting the value for each property to zero (0) prevents the OnComm event from firing. Setting the value to something other than 0 (1, for instance) causes the OnComm event to be fired every time a single character is received into either buffer.

Damit dein MsComm überhaupt bei Empfang ein Event feuert muss RThreshold einen Wert ungleich 0 haben.

Liegts daran?

Geschrieben

Ich werde das in der Arbeit mal ausprobieren, aber ich glaub, den hab ich auf eins gesetzt. Was wäre denn der CommEvent wenn die Übertragung abgeschlossen ist, bzw. nichts mehr gesendet wird(brauch ich für die Schleife als Abbruchanwisung)?

Geschrieben

Hat sich erledigt. Ich les jetzt bis zum LineFeed per Funktion eine Zeile aus und benutz das Erkennungszeichen der Letzten Zeile im Scanner als Abbruchanforderung. Trotzdem Danke für die Mühen. Gibt wohl nur wenige vb-Coder hier.:rolleyes:

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...