Forum: PC-Programmierung C# SerialPort


von Gallus (Gast)


Lesenswert?

Hallo,

ist es möglich mit der SerialPort-Klasse von C# zu erkennen, ob ein 
Widerstand (1 Ohm oder 0 Ohm) am seriellen Ausgang vorliegt? Mit der 
Spannung funktioniert es.

Vielen Dank
Gallus

von Peter II (Gast)


Lesenswert?

Gallus schrieb:
> ist es möglich mit der SerialPort-Klasse von C# zu erkennen, ob ein
> Widerstand (1 Ohm oder 0 Ohm) am seriellen Ausgang vorliegt?

es ist mit gar keiner Programmiersprache mögliche, weil die Hardware das 
nicht ermitteln kann.

> Mit der Spannung funktioniert es.
was funktioniert mit Spannung?

von Gallus (Gast)


Lesenswert?

Hallo,

vielen Dank für die schnelle Antwort. Mit einem TTL-232RUSB to TTL 
SerialConverter Kabel 
(http://elmicro.com/files/ftdi/ds_ttl232r_v102.pdf) kann ich mit 
CTSHolding erkennen, ob eine Spannung am Kabel anliegt oder nicht. Das 
Gleiche möchte ich nun auch mit dem Widerstand können. Ich denke 
Hardwareseitig sollte es funktionieren, da Kopierer auf diese Weise 
gesperrt und entsperrt werden können.

von Peter II (Gast)


Lesenswert?

Gallus schrieb:
> CTS

ist ja auch ein Eingang damit ist klar das man dort eine Spannung 
erkennen kannt. du willst aber am Ausgang Prüfen ob ein Widerstand 
vorhanden ist, der ausgang hat aber keine rückmeldung über den Strom der 
fließt.

von Gallus (Gast)


Lesenswert?

Ich möchte am Eingang prüfen ob ein Widerstand vorliegt.

Zur Verständlichkeit:
Ein externes Gerät gibt Impulse in Form von 0 oder 1 Ohm an das 
TTL-232RUSB-Kabel. Am PC möchte ich erkennen, wann 0 Ohm oder 1 Ohm 
Widerstand vorhanden ist.

von Sam .. (sam1994)


Lesenswert?

Der PC reagiert nur auf die Spannung! Der Strom ist hier unwichtig, 
solange er nicht zu klein ist. Das funktioniert nur mit einem 
Spannungsteiler.

von Peter II (Gast)


Lesenswert?

Gallus schrieb:
> Ein externes Gerät gibt Impulse in Form von 0 oder 1 Ohm an das
> TTL-232RUSB-Kabel. Am PC möchte ich erkennen, wann 0 Ohm oder 1 Ohm
> Widerstand vorhanden ist.

dann sag das doch.

Bist du sicher das du 0 Ohm und 1 Ohm meinst? Wenn ja wird das nicht 
ohne zustätzliche Bauteile gehen, weil man sonst viel zu viel Strom 
braucht. Kann es nicht 1 Ohm und undentlich sein?

von Gallus (Gast)


Lesenswert?

Zusätzliche Bauteile sind kein Problem. Welche?

Das Messgerät zeigt 0.00 und 1. an. Ist es damit 0 und unendlich - wegen 
dem Punkt nach der 1.

von Peter II (Gast)


Lesenswert?

dann musst du den Pull-UP Widerstand wie in dem PDF verwenden. Damit ist 
der eingang immer auf +5V. dann kannst du den Eingang mit deinem Gerät 
verbinden, wenn er jetzt den eingang mit masse verbindet dann hast du 0V 
am Eingang.
Aber ein kurzer Blick in die Doku von .net Serial zeigt das du damit 
nicht direkt den eingang abfragen kannst. Es gibt er c# klassen für den 
FTDI chip, damit müsste es gehen.

von Sam .. (sam1994)


Lesenswert?

Gallus schrieb:
> Das Messgerät zeigt 0.00 und 1. an. Ist es damit 0 und unendlich - wegen
> dem Punkt nach der 1.

Vergiss den Widerstand. Dein PC kann das nicht.

von Peter II (Gast)


Lesenswert?

Samuel K. schrieb:
> Vergiss den Widerstand. Dein PC kann das nicht.

warum sollte ein PC das nicht können?

von Sam .. (sam1994)


Lesenswert?

Peter II schrieb:
> warum sollte ein PC das nicht können?
Sein Messgerät kann Widerstände messen, aber sein PC kann das nicht. Er 
reagiert auf Signale zwischen -12 und 12V irgendwo liegt dann die Grenze 
(zw. 0 und 5V).

von Gallus (Gast)


Lesenswert?

Ich denke es funktioniert. 0 Ohm und unendlich Ohm funktioniert dann 
wohl wie ein Relais. Wie Peter schon geschrieben hat, nutze ich 5V 
Groundspannung und das braun CTS-Kabel. 0 Volt bei unendlich Ohm und 5 
Volt bei 0 Ohm..oder so..

Vielen Dank..Ich hätte eigentlich selbst drauf kommen können.

von thisamplifierisloud (Gast)


Lesenswert?

Gallus schrieb:
> Zur Verständlichkeit:
> Ein externes Gerät gibt Impulse in Form von 0 oder 1 Ohm an das
> TTL-232RUSB-Kabel. Am PC möchte ich erkennen, wann 0 Ohm oder 1 Ohm
> Widerstand vorhanden ist.

Ohmsche Impulse ... nie gehört.

Vermutlich meinst Du logische Impulse oder Pegel.
Die werden gerne mit 0 und 1 bezeichnet.

Ein PC kann keine Widerstände messen, schon gar nicht am seriellen Port.
Die Logikpegel jedoch kannst Du abfragen.

von Sam .. (sam1994)


Lesenswert?

Gallus schrieb:
> 0 Ohm und unendlich Ohm funktioniert dann
> wohl wie ein Relais.

Die Spannung wird in keinem Fall geregelt. Ich weiß nicht wie 
empfindlich der PC ist. Aber 1MOhm könnte er noch erkennen:
I = U/R = 5/1e6 = 5uA

Man könnte den Strom so stark begrenzen, dass der PC das Signal nicht 
mehr erkennt. Die Beste lösung ist das aber nicht.

von Thomas E. (thomase)


Lesenswert?

Gallus schrieb:
> Zur Verständlichkeit:
>
> Ein externes Gerät gibt Impulse in Form von 0 oder 1 Ohm an das

Das ist ja nun völliger Quatsch.

Mit einem Ohmmeter kann man nicht an einem eingeschalteten Geät messen.

Der Ausgang von deinem Gerät wird wahrscheinlich ein Open-Collector 
sein.

mfg.

von Sven H. (dsb_sven)


Lesenswert?

Schade, dass es den GamePort nicht mehr gibt. Der konnte Widerstände 
messen...

von Thomas E. (thomase)


Lesenswert?

Sven H. schrieb:
> Der konnte Widerstände messen...

Unsinn. Das einzige, was man messen kann, ist Spannung.

mfg.

von Peter II (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Sven H. schrieb:
>> Der konnte Widerstände messen...
> Unsinn. Das einzige, was man messen kann, ist Spannung.
auch falsch, genaugenommen hat er zeit gemessen.

von hvbjt (Gast)


Lesenswert?

>Unsinn. Das einzige, was man messen kann, ist Spannung.

Strom auch.

von hvbjt (Gast)


Lesenswert?

@Gallus
Aber Du kannst natürlich auch einen Widerstand ausmessen. Zwar nur mit 
1Bit Auflösung. Aber sollte reichen.

Zum Beispiel, indem Du einen Ausgang und einen Eingang (RTS & CTS oder 
TXD und RXD) über den besagten Widerstand miteinander verbindest.

Die Innenwiderstände liegen bei ca 3kOhm und die Schaltschwellen bei 
wenigen Volt. Also sollte bei ca. 0 .. 10k ein Signal wieder 
zurückgelesen werden. Ab 10k dann nicht mehr.

So würde das in Software aussehen:
1
setRTS(0);
2
int a = getCTS();
3
setRTS(1);
4
int b = getCTS();
5
6
if (a==0 && b==1) {
7
 machwas();
8
9
}

von Thomas E. (thomase)


Lesenswert?

hvbjt schrieb:
> Strom auch.

Interessant. Und wie geht das?


Peter II schrieb:
> auch falsch, genaugenommen hat er zeit gemessen.

In Verbindung mit einem Komparator, der bei Erreichen einer bestimmten 
Spannung die "Uhr" anhält.

mfg.

von Peter II (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> In Verbindung mit einem Komparator, der bei Erreichen einer bestimmten
> Spannung die "Uhr" anhält.

soweit ich mir erinner kann, wurde das ganze in software gemacht. Es 
wurde ein Bit auf 0 und dann wieder auf 1 gesetzt, dann wurde einfach in 
einer Schleife gewartet bis ein anders Bit auf 1 geht. Die Hardware 
bestand nur aus dem Widerstand im Joystick, einem Kondensator und einen 
Schmitt-Trigger.

von Thomas E. (thomase)


Lesenswert?

Peter II schrieb:
> aus dem Widerstand im Joystick, einem Kondensator und einen
> Schmitt-Trigger.

Über den Widerstand wird der Kondensator aufgeladen und der 
Schmitt-Trigger schaltet bei Erreichen der Schwellspannung durch.

mfg.

von hvbjt (Gast)


Lesenswert?

>> Strom auch.
>Interessant. Und wie geht das?

Hier die typische Eingangsbeschaltung eines RS232 Receivers:
http://www.farnell.com/datasheets/1361599.pdf

Bipolartransistor in Emitterschaltung. Der Basisstrom wird gemessen und 
verstärkt und in einer späteren Stufe an einem Widerstand dann in eine 
Spannung gewandelt.

von Thomas E. (thomase)


Lesenswert?

hvbjt schrieb:
> Der Basisstrom wird gemessen

Seit wann kann ein Transistor Strom messen?
Seit wann kann ein Transistor überhaupt etwas messen?

mfg.

von hvbjt (Gast)


Lesenswert?

ist doch scheiss egal.
dann ersetze halt "messen" durch "fühlen" oder "erahnen" oder "Kasperle, 
den den Strom abließt und am Kollektor schraubt".

Jedenfalls hat Gallus eine ganz normale Frage gestellt und hier wird 
wieder mit aller Gewalt versucht vom Thema abzulenken, weil keiner 
helfen kann oder will.

von Thomas E. (thomase)


Lesenswert?

hvbjt schrieb:
> ist doch scheiss egal.

Nun werd' mal nicht ausfallend, weil du hier mit deinem Viertelwissen 
nicht mehr weiter kommst.

Die gestellte Frage habe ich ihm schon vor vier Tagen beantwortet:

Thomas Eckmann schrieb:
> Der Ausgang von deinem Gerät wird wahrscheinlich ein Open-Collector
> sein.

mfg.

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.