Forum: PC-Programmierung RS 232 mit zwei verschiedenen Software-tools ansprechen?


von Michael P. (freakonaleash121)


Lesenswert?

Hallo zusammen,

habe mal eine grundsätzliche Frage zur RS232 Schnittstelle. Kann man 
eine Kommunikation über die Schnittschnittstelle mit 2 Software-tools 
paralell durchführen, ohne dass die jeweiligen Kommunikation gestört 
werden?
Folgende Praxisbeispiel:
Ich habe einen Ofen, der eine rs232 Schnittstelle hat und von einem 
win7-pc über die Schnittstelle gesteuert wird. Es wird regelmäßig die 
Temperatur ausgelesen und geloggt und manchmal eine neue Soll-Temperatur 
gesetzt.
Es werden Daten von weiteren Sensoren ignoriert. Diese Daten möchte ich 
nun mit einer weiteren Software, die parallel auf dem win7 pc laufen 
soll, auslesen. Die Programmierung an sich sollte funktionieren. Die 
Frage ist nur, ob durch die zweite Software die Kommunikation zwischen 
Ofen und "Software 1" gestört werden kann. Könnt ihr mir das 
beantworten?

Die Anfrage kann aus diversen Gründen nicht mehr in die ursprüngliche 
Software implementiert werden, ohne jetzt ins Detail gehen zu wollen....

Vielen Dank im voraus.

von Sebastian (Gast)


Lesenswert?

Du kannst den COM-Port nur 1x öffnen.
Es geht also nur, wenn jede Software den schließt wenn sie ihn nicht 
braucht. Das wird die existierende nicht tun. Selbst wenn sie es täte, 
wird sie es nicht mögen wenn sie ihn wieder öffnen will solange die 
andere ihn gerade offen hat.

Wenn du das Protokoll verstehst, kannst du einen Treiber schreiben, der 
einen virtuellen COM-Port für die alte SW simuliert.
Angenommen du hast Windows: Du könntest schauen wie COM0COM das macht.

von A. S. (Gast)


Lesenswert?

Gehen tut das allgemein. Ist nur Aufwand wie Sebastian schön schrieb.

Wenn Du dagegen nur mithören möchtest, dann mach einfach eine serielle 
Schnittstelle auf und häng sie parallel. Je nach Protokoll auch an beide 
Leitungen, per Dioden entkoppelt.

von georg (Gast)


Lesenswert?

Michael P. schrieb:
> Die Anfrage kann aus diversen Gründen nicht mehr in die ursprüngliche
> Software implementiert werden

Dann geht es auch nicht, das Problem ist nur lösbar wenn ein 
entsprechendes Protokoll mit Umschaltung der Quelle in beiden 
beteiligten Softwaresystemen berücksichtigt wird. Nach deinen Aussagen 
hat aber die vorhandene Software die Schnittstelle exklusiv und dauernd. 
Da hilft nur eine 2. serielle Schnittstelle.

Georg

von cppbert (Gast)


Lesenswert?

Michael P. schrieb:
> Die Anfrage kann aus diversen Gründen nicht mehr in die ursprüngliche
> Software implementiert werden, ohne jetzt ins Detail gehen zu wollen....

Wenn es der selbe comPort ist wird es schwierig (wohl nur durch eine Art 
virtuellen comport der 2 clients erlaubt, spezial, spezial)
Wenn es ein anderer comport ist geht das problemlos

von A. S. (Gast)


Lesenswert?

georg schrieb:
> Nach deinen Aussagen
> hat aber die vorhandene Software die Schnittstelle exklusiv und dauernd.
> Da hilft nur eine 2. serielle Schnittstelle.

Doch. Lies Sebastians Antwort einfach noch einmal:

Sebastian schrieb:
> Wenn du das Protokoll verstehst, kannst du einen Treiber schreiben, der
> einen virtuellen COM-Port für die alte SW simuliert.

Die ist dann exklusiv und dauernd und nur virtuell.

von Analyst (Gast)


Lesenswert?

Es gibt Software, mit der Du einen physicalisch vorhandenen COM Port auf 
1 oder mehrere virtuelle Ports mappen kannst. Benutze ich gelegentlich 
zum "mithören".

Allerdings gibt es dabei ggf. auch zu beachten, dass

1) sichergestellt werden muss, dass nur ein Programm sendet (zum 
gleichen Zeitpunkt)

2) Dein Hauptprogramm, was Du nicht mehr ändern kannst, durch die 
Antwort des Clients nicht verwirrt wird. Denn das Hauptprogramm sieht 
die Daten, die zurückkommen, ja auch.
Das gleiche gilt natürlich auch andersrum... Dein Erweiterungsprogramm 
sollte so geschrieben sein, dass andere Antworten als die, die auf 
diesem WEge ausgewertet werden sollen, vernünftig ignoriert werden.

Es gibt auch Möglichkeiten, RX und TX aufzusplitten und 
unterschiedlichen, virtuellen COM Ports zuzuweisen. Aber das in Deinem 
Fall vermutlich keine Option sein, weil dann Dein Hauptprgramm gar keine 
Daten mehr zurück bekommt.

von Schlaumaier (Gast)


Lesenswert?

Es stellt sich nur eine Frage.

Reden die Software und der Ofen miteinander, oder nicht.

Wenn JA, hast du ein Problem.

Wenn EINE der Software-Programme aber nur still vor sich lauscht und das 
gehörte mit schreibt ist das kein Problem.

Saug dir mal COOLTERM.exe runter, und hänge es auf den selben Port wie 
die reguläre Software. Und schau mal was da passiert.

Ich habe das neulich für ein Projekt benutzt um des Serial-Monitor der 
Arduino-Oberfläche abzuhören während die IDE auch mithörte. Die IDE 
loggt den Monitor nicht. ;) Funktionierte einwandfrei.

von cppbert (Gast)


Lesenswert?

Michael P. schrieb:
> Ich habe einen Ofen, der eine rs232 Schnittstelle hat und von einem
> win7-pc über die Schnittstelle gesteuert wird.

Wäre vielleicht hilfreich das Protokoll genauer zu kennen, gibts ein pdf 
oder herstellernamen?

von Sebastian (Gast)


Lesenswert?

Sebastian schrieb:
> Wenn du das Protokoll verstehst, kannst du einen Treiber schreiben, der
> einen virtuellen COM-Port für die alte SW simuliert.
> Angenommen du hast Windows: Du könntest schauen wie COM0COM das macht.

Es geht auch ein bisschen einfacher: Deine neue SW muss kein Treiber 
sein - es reicht wenns eine normale Anwendung ist, die 2 COM Ports 
aufmacht, und alles was sie nichts angeht durchleitet.
Einer der beiden COM-Ports ist dann der "echte", der andere geht über 
COM0COM zur alten SW.
Das Problem liegt im "alles was sie nichts angeht" - was das ist kommt 
auf das Protokoll an, das da auf RS232 läuft.

http://com0com.sourceforge.net/

von DanVet (Gast)


Lesenswert?

Spontan kommt mir noch der Gedanke, dass man die Empfangsleitung auch 
noch parallel auf einen zweiten COM-Port legen könnte. Da kann man denn 
zwar nur hören, aber das reicht ja offensichtlich.
Dieser zweite COM-Port könnte auch auf einem komplett anderen PC sein 
und nur bei Bedarf angeschlossen werden.

von Dirk (Gast)


Lesenswert?

Du könntest auch ein RS232 zu TCPIP Http/Server Module an den Ofen 
schalten und deine anderen Teilnehmer greifen auf den Http Server zu.

von Michael P. (freakonaleash121)


Lesenswert?

Wow. Mit so vielen Antworten habe ich nicht gerechnet.

Wenn ich das richtig zusammenfasse, dann ist mein Vorhaben nicht ohne 
weiteres Möglich. Insbesondere, da eine senden und empfangen 
erforderlich ist, so dass "einfaches" mithören auch nichts bringt.

Danke für die zahlreichen Antworten!

von hodoe (Gast)


Lesenswert?

Hallo, klar geht das. Du brauchst halt ein Tool, welches die Abfragen 
der beiden Programme getrennt aufnimmt und dann weiterleitet. Diese Tool 
braucht dann drei Schnittstellenverbindung. Eine "echte" zum Ofen und 
zwei virtuelle Verbindungen zur Software. com0com wurde ja schon 
genannt.

Das Tool musst Du Dir halt schreiben. Ich habe z.B. folgendes Problem: 
Ein Log-Programm für das Funkgerät fragtkontinierlich z.B. Band, 
Betriebsart und Frequenz ab. Am Funkgerät gibt es nur eine EIA-232, 
sonst nichts. Nun brauche ich aber die Daten des Funkgerätes auch noch 
mal um mit einem Antennenkoppler zu sprechen. Dieser Koppler braucht 
eigentlich auch eine Verbindung zum Funkgerät.

Koppler --> "echte" COM-Schnittstelle --> COM1
Funkgerät --> "echte" COM-Schnittstelle --> COM2

Zwei virtuelle COM-Ports. COM3 <--> COM4

Mein Tool "TRX-Connector" wird mit COM1, COM2 und COM3 verbunden. Dabei 
können diese individuell konfiguriert sein. Z.B. die eine mit 9600, und 
die anderen mit 19200 bd. Und was sonst noch so alles geht wie Stoppbits 
...

Das Log-Programm mit COM4. Nun werden die Abfragen die über COM1 und 
COM4 reinkommen, an COM2 durchgereicht. Die Antworten entsprechend 
wieder zurück. Da TRX-Connector das Handling der Daten übernimmt, kommt 
es auch zu keinen Konflikten. Möglich sind allerdings Time-Out Fehler, 
wenn die abfragende Software prompt eine Antwort möchte.

von Holger D. (hodoe)


Lesenswert?

hodoe schrieb:
> Ich habe z.B. folgendes Problem:

also, ich hatte das Problem ;-)

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.