Forum: PC Hard- und Software Thermometer über COM Port ansteuern


von Alfred (Gast)


Lesenswert?

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?

von Peter II (Gast)


Lesenswert?

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?

von Alfred (Gast)


Lesenswert?


von Peter II (Gast)


Lesenswert?

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.

von Alfred (Gast)


Lesenswert?

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?

von Peter II (Gast)


Lesenswert?

Alfred schrieb:
> 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?

für windows wie üblich in der MSDN

http://msdn.microsoft.com/de-de/library/windows/desktop/aa363201%28v=vs.85%29.aspx

von amateur (Gast)


Lesenswert?

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)

von Guido (Gast)


Lesenswert?

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

von Alfred (Gast)


Lesenswert?

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?

von Guido (Gast)


Lesenswert?

Hallo,

was sagt denn "mode com4" alles richtig?

Mit freundlichen Grüßen
Guido

von Guido (Gast)


Lesenswert?

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

von Guido (Gast)


Lesenswert?

Hallo,

vielleicht braucht's hier ein "type com4:" oder dergl.?

Mit freundlichen Grüßen
Guido

von amateur (Gast)


Lesenswert?

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.

von Guido (Gast)


Lesenswert?

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

von Reinhard Kern (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von amateur (Gast)


Lesenswert?

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.

von no no (Gast)


Lesenswert?

wenn du schon mode verwendest dann doch bitte complett oder woher weiß 
deine schnittstelle mit welchen parametern sie senden soll
mode /?

hilft weiter

von Guido (Gast)


Lesenswert?

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

von Guido (Gast)


Lesenswert?

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

von amateur (Gast)


Lesenswert?

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.

von Alfred (Gast)


Lesenswert?

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?

von Guido (Gast)


Lesenswert?

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

von amateur (Gast)


Lesenswert?

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.

von Reinhard Kern (Gast)


Lesenswert?

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

von Alfred (Gast)


Lesenswert?

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.

von JP (Gast)


Lesenswert?

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) ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.