Hallo, ich habe folgendes Problem:
ich habe 2 digitale 4 Kanal Thermometer von Voltcraft die ich gerne
gleichzeitig über mein PC via Rs232 auslesen möchte. Zwar hat Voltcraft
eine software zum auslesen mitgeliefert, jedoch kann sie immer nur zu
einem Gerät zur selben zeit verbunden sein. Daraufhin habe ich die
Thermometer über tera term angesprochen was zwar funktioniert, aber das
erfüllt nicht den zweck.
geplant ist eine batch datei die in einer schleife einen befehl sendet
und die daten dann empfängt.
über die Konsole habe ich versucht die Com ports anzusprechen was jedoch
schief gegangen ist. der mode ist richtig eingestellt, jedoch wenn ich
mit
echo A> com4 den Befehl A sende, gibt es keine Reaktion. was einer was
da falsch ist?
Alfred schrieb:> echo A> com4 den Befehl A sende, gibt es keine Reaktion. was einer was> da falsch ist?
gibt es ein Datenblatt oder eine Beschreibung vom dem Thermometer?
Alfred schrieb:> echo A> com4 den Befehl A sende, gibt es keine Reaktion. was einer was> da falsch ist?
naja in der doku steht auch nichts davon drin das nach dem A irgendetwas
auf dem gerät passieren soll - was erwatetst du?
Die Antwort bekommt du natürlich nicht in einem Batchfile sinnvoll
ausgertet. Da wirst du wohl etwas programmierne müssen. C# könnte man
dafür nehmen.
Peter II schrieb:> Alfred schrieb:>> echo A> com4 den Befehl A sende, gibt es keine Reaktion. was einer was>> da falsch ist?>> naja in der doku steht auch nichts davon drin das nach dem A irgendetwas> auf dem gerät passieren soll - was erwatetst du?>> Die Antwort bekommt du natürlich nicht in einem Batchfile sinnvoll> ausgertet. Da wirst du wohl etwas programmierne müssen. C# könnte man> dafür nehmen.
Bei einem A schickt er mir auf jeden fall Daten. In der Doku steht ja
dass man mit A nach Daten fragt. Wenn ich diesen Befehl in TeraTerm
mache, bekomme ich ja auch was zurückt nur ASCII codiert.
Wenn es nötig ist würde ich es mit C coden da ich mich damit etwas
besser auskenne. kennt jemand ne gute seite wo das abfragen von Com
ports erläutert wird?
REM Betriebsart
mode com4 ....
REM "AUFWACHEN"
echo A> com4
REM Ende mit Ctrl+C
copy com4 Eingangsdaten.Txt
oder so...
Allerdings nur für Kontrollzwecke, da Ende/Abbruch nur durch "Abbruch"
(^C)
Hallo,
@Alferd
Vielleicht erwartet das Gerät nach dem "A" noch einen Zeilenumbruch
ASCII(13)? Zum Testen könntest Du das "A" mitsamt Zeilenumbruch in eine
Textdatei packen und mittels "Type" ausgeben.
Mit freundlichen Grüßen
Guido
Guido schrieb:> Hallo,>> @Alferd> Vielleicht erwartet das Gerät nach dem "A" noch einen Zeilenumbruch> ASCII(13)? Zum Testen könntest Du das "A" mitsamt Zeilenumbruch in eine> Textdatei packen und mittels "Type" ausgeben.>> Mit freundlichen Grüßen> Guido
leider funktioniert das mit der txt datei auch nicht. noch jemand
vorschläge?
Hallo,
was ich mich schon die ganze Zeit frage, woher soll die Konosle wissen,
dass die Daten an COM4: für sie bestimmt sind.
Mit freundlichen Grüßen
Guido
COMxx: Ist ein im System reservierter Name. Genauso wie CON oder PRN.
Sagst Du nämlich, in der Konsole: "COPY Datei.Txt CON", so landet der
Output auf der Konsole (Bildschirm).
Sagst Du also "Copy Irgendwas.Txt COM1" so wird der Text zur seriellen
Schnittstelle "COM1" geschickt.
Ob der Mode-Befehl benötigt wird, hängt wahrscheinlich von den Defaults
ab.
Natürlich wird ... COM4 nur dann verstanden, wenn das Teil auch
existiert. Siehe: System->Hardware oder so.
Hallo,
amateur schrieb:> Sagst Du also "Copy Irgendwas.Txt COM1" so wird der Text zur seriellen> Schnittstelle "COM1" geschickt.
Stimmt, aber die Daten von COM1 werden nicht automatisch zur Konsole
zurückgeschickt.
Mit freundlichen Grüßen
Guido
Guido schrieb:> Stimmt, aber die Daten von COM1 werden nicht automatisch zur Konsole> zurückgeschickt.
Deswegen und überhaupt wäre es einfacher, zum Testen ein
Terminal-Programm zu benutzen, dem muss man den Umgang mit COM-Ports
nicht erst beibringen. Ein altes Hyperterminal reicht völlig, dazu gibts
noch Zillionen andere.
Gruss Reinhard
Reinhard Kern schrieb:> Deswegen und überhaupt wäre es einfacher, zum Testen ein> Terminal-Programm zu benutzen, dem muss man den Umgang mit COM-Ports> nicht erst beibringen.
und genau das hat er doch schon gemacht.
Auf der Konsole gelten dieselben Regeln wie überall:
Schickst Du Daten an den Drucker (PRN), so gehen sie zum Drucker und
nicht zur Konsole.
Die Gute alte Syntax des Copy-Befehls lautet: Copy Quelle Ziel
[Optionen]
Der Befehl: Copy Textdatei.Txt CON sendet die Daten der Datei zur
Konsole
der Befehl: Copy CON Textdatei.Txt sendet alle, auf der Konsole
eingegebenen Zeichen an die Datei Textdatei.Txt bis das Ende-Zeichen: ^C
erreicht wird.
Das sollte eigentlich schlüssig und einfach sein.
Hallo,
no no schrieb:> wenn du schon mode verwendest dann doch bitte complett oder woher weiß> deine schnittstelle mit welchen parametern sie senden soll> mode /?
"mode com4:" gibt die Einstellungen bzw. den Status von COM4 aus. Da
braucht's nicht mehr. Erst wenn hier Einstellungen nötig sind benötigt
man mehr Parameter.
Mit freundlichen Grüßen
Guido
Hallo,
amateur schrieb:> Das sollte eigentlich schlüssig und einfach sein.
@amateur
Du beschreibst immer nur den Teil, wie die Daten zu COM4 gesendet
werden. Die Antwort von COM4 soll jedoch wieder "in die Konsole zurück".
Ich glaube genau hierin liegt das Problem des Threaderstellers.
Mit freundlichen Grüßen
Guido
In meinem, praktisch vollständigen Batch-Programm, von heute Vormittag,
habe ich den Mode-Befehl aus dem folgenden, einfachen Grunde
unvollständig gelassen:
Ich-nix-wissen-wie-seine-Schnittstellenparameter-aussehen.
Oder anders ausgedrückt: Meine hellseherischen Fähigkeiten sind echt
mangelhaft.
Zugegeben, dabei unterstelle ich allerdings, dass die Eingabe von: "help
mode", den normalen User nicht Überfordert. Natürlich gefolgt von einem
Blick in die zugehörigen Datenblätter.
Um das nochmal klar zu stellen:
die Parameter habe ich richtig eingstellt:
Status for device COM4:
-----------------------
Baud: 9600
Parity: None
Data Bits: 8
Stop Bits: 1
Timeout: OFF
XON/XOFF: OFF
CTS handshaking: OFF
DSR handshaking: OFF
DSR sensitivity: OFF
DTR circuit: OFF
RTS circuit: OFF
die ein- und ausgabe über Putty, TeraTerm oder ähnliches funktioniert
einwandfrei, d.h ich sende einen von den Befehlen(A,H,K,R) und er macht
genau das was er soll.
das Problem ist, dass ich dafür eine Batch schreiben möchte die in einer
Schleife die Daten ausliest und erstmal auf der Konsoleausgibt.Wär diese
Schleife mit einem Terminalprogramm möglich hätte ich es so gemacht.
wenn ich diesen Befehl jetzt aber in der Konsole teste passiert nichts.
Guido und Peter haben mein Problem verstanden.
Meint ihr es besteht die möglichkeit, dass das Gerät am Com4 port mit
antwortet aber ich die nachricht nicht bekomme? kann man das irgendwie
überprüfen bzw. testen?
Hallo,
Alfred schrieb:> Meint ihr es besteht die möglichkeit, dass das Gerät am Com4 port mit> antwortet aber ich die nachricht nicht bekomme?
Das ist meine Vermutung. Hast Du schon einmal versucht die Textdatei "A"
mit Zeilenumbuch an COM4 zu senden und direkt danach COM4 auszulesen?
Guido schrieb:> "type com4:"
Mit freundlichen Grüßen
Guido
Beides ist ohne explizites Programm nicht machbar.
Entweder: COPY COM4 Textdatei.Txt (Die Umleitung endet bei ^C)
oder: COPY COM4 CON
wenn Du beides willst, musst Du VB oder eine "Echte" Programmiersprache
verwenden.
amateur schrieb:> oder: COPY COM4 CON
das klappt sowieso nicht, weil der Befehl nie endet, denn das Gerät
sendet kein EOF-Zeichen. Der Batchprozess hängt dann endlos in der
Empfangszeile.
Man könnte sich zwar ein Utility schreiben, das genau die Antwort
empfängt, aber dann macht man sich lieber gleich ein richtiges Programm
für 2 oder mehr COMPorts.
Gruss Reinhard
Hmm ok Danke,
ao stark wollte ich mich jetzt nicht unbedingt für 2 Messungen
einarbeiten
aber danke für alle antworten, jetzt weiss ich wenigstens woran ich
stehe.
Die Software des Geräteherstellers arbeitet offensichtlich nur mit einem
COM-Port. Kannst du nicht zwei Instanzen des Programms laufen lassen?
Sicherheitshalber ( wegen ini-Files etc) solltest du das Programm dann
mehrfach in verschiedene Verzeichnisse installieren!
Wie ich sehe, sind die Antworten des Geräts zumindest teilweise binär,
d.h.
es kommen Zeichen vom Gerät, die aus zu interpretierenden Flagbits
bestehen.
Bist du sicher, dass da keine Bitmuster zusammenkommen, die ein
Steuerzeichen darstellen? Stell dir vor, da käme ein Bitmuster, das wie
BS aussieht: dieses Muster/Zeichen würde das zuetzt übertragene löschen
....
Vielleicht kommt da auch ganz früeh ein Bitmuster, das den Kanal wieder
schliesst (Ctl-Z) ...