Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
RS232-USB Adapter and XP-Maschine anschliessen
Jesfreric
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

RS232-USB Adapter and XP-Maschine anschliessen

beantworten | zitieren | melden

Liebe Community
Ich stehe vor einem Verständnisproblem. In unserer Firma haben wir jahrelang ein altes Analysegerät über einen alten MS-DOS Computer laufen lassen (Mittels RS232). Das Gerät besitzt zwar ein kleines Display für die Steuerung, allerdings haben wir immer eine extra dafür geschriebene Software (im DOS) für die Steuerung und Auswertung verwendet.
Wir sind jetzt leider gezwungen von dem DOS System wegzugehen und das Gerät zukünftig auf neueren Betriebssystemen laufen zu lassen.
Ich habe mir dazu einen RS232-USB Adapter verschafft. Außerdem besitze ich noch die Treiber und die Geräte-Software selber auf Diskette. Meine Frage wäre nun, wie ich das Teil am besten an einen (e.g. XP-Rechner) anschließen kann.
Ich hatte mir überlegt, dass ich zunächst ein altes DOS-System auf den Rechner spiele (evtl. als Virtual Machine oder dergleichen – dann kann ich die Daten später weiter prozessieren). Als nächstes hätte ich die Software auf der Virtual Machine installiert. Meine Frage ist nun, was muss ich tun, damit die Software im DOS in der Virtual Machine kapiert, dass an dem USB Port das Gerät hängt was sie braucht.
Zum Gerät und Zur Software gibt es ein Handbuch, in denen die einzelnen Belegungen der 9 Ports des RS232 genaustens beschrieben sind. Mir geht es eher um den Ansatzpunkt, an dem (z.b. ein c# Skript) angreifen müsste.
Viele Grüße
Jesfreric
private Nachricht | Beiträge des Benutzers
kuppi
myCSharp.de - Member



Dabei seit:
Beiträge: 44

beantworten | zitieren | melden

Hallo Jesfreric,

wenn dokumentiert ist wie das Gerät anzusprechen ist (Befehlssyntax, CR oder LF als Abschluss etc.) kann man das gut mit einem Terminalprogram testen (HTerm z.B.).
Ich habe für uns auch schon etliche C# Programme für Laborgeräte geschrieben, wenn eine vernünftige Dokumentation da ist haut das meistens hin.
Problematisch ist es mitunter wenn der Comport in der alten SW direkt über die HW-Register angesprochen wird (Die gibt es bei den USB Adaptern natürlich nicht).
Um welches Gerät handelt es sich denn?

Gruß Jürgen
private Nachricht | Beiträge des Benutzers
Jesfreric
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Hi

Danke für deine Antwort. Das ist ein Uralt-Gerät mit dem Namen SLT-Spectra.

Nur damit ich es richtig verstehe (für Dummies sozusagen :-) )
Wenn das Gerät an den PC angeschlossen wird (jetzt ohne USB, sondern im Falle des alten DOS-PC), dann sendet es bei einer Messung ja über den jeweiligen Port (wahrscheinlich Nr. 2 TD - Transmit Data) eine Spannung (zw. -3 V bis -25V oder 3 V - 25 V). Der geht über den Port 3 des PC-Anschlusses (RT - Recieve Data) zum Computer. Der Datentransfer erfolgt mittels einer schnellen Spannungsänderungen (1-0-0-1-1-1-0-0-0). Eine Einheit ist jeweils ein Bit, die dann im Gesamten mittels ASCII in Daten bzw. Code übersetzt werden können. Die Anzahl der Bits/Sek. ist die Baud-Rate oder?
Ich kann auch verstehen, dass die Software diese Signale registriert, die über den Port kommen und entsprechend weiterverarbeitet.
Hab ich das soweit richtig verstanden, weil mir ist das wichtig zu verstehen was passiert :-)
Meine Verständnisschwierigkeit besteht nun darin im genauen zu verstehen wie der PC (ob XP, Dos, oder Win10) die Spannungsänderung registriert, diese Informationen speichert und die Software in Echtzeit darauf zugreift...

Viele Grüße
Jesfreric
private Nachricht | Beiträge des Benutzers
OlafSt
myCSharp.de - Member



Dabei seit:
Beiträge: 76
Herkunft: HH

beantworten | zitieren | melden

Der PC reagiert da gar nicht auf das Gewackel an irgendeinem Pin...

Tatsächlich gab es damals™ Einsteckkarten für serielle und parallel Schnittstellen. Auf diesen war ein 40-Pin-Chip drauf, ein UART8250 oder (moderner) 16450 oder (noch moderner) 16550. DIESER reagiert auf das Gewackel an den Pins und wirft am Ende einen Interrupt am ISA-/PCI-/PCIe-Bus raus.

Auf diesen Interrupt reagiert der PC und holt das empfangene Byte aus dem UART heraus.

Ganz ehrlich: Das ganze ist wesentlich komplexer, als du ahnst Ohne ein gerüttelt Maß an Elektronikkenntnissen wird das schwer zu kapieren sein Ich würde mich erstmal auf die Programmierung überhaupt konzentrieren, für die Details ist später noch Zeit.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von OlafSt am .
private Nachricht | Beiträge des Benutzers
kuppi
myCSharp.de - Member



Dabei seit:
Beiträge: 44

beantworten | zitieren | melden

Hallo Jesfreric,

der Treiber für den Comport kümmert sich darum das die Pegelwechsel in Bytes umgesetzt werden, Du mußt halt nur die richtige Baudrate Parität etc. einstellen.
Und dann kannst Du die Bytes relativ problemlos in C# einlesen.
Du brauchst dann auf jeden fall eine Dokumentation wie der Datenstrom zu interpretieren ist.
Das scheint ja ein Photometer zu sein, da werden dann möglicherweise XY Daten Intensität/Wellenlänge kommen.
Wenn in der Doku ein Beispielprogram, in QBasic, GW-Basic oder so, vorhanden ist kann das auch sehr hilfreich sein.

Gruß Jürgen
private Nachricht | Beiträge des Benutzers
Jesfreric
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Hi

Ja, du hast recht. Es ist ein "Photometer-ähnliches" Gebilde :-)
Wie ich Daten in C#, etc. einlese habe ich mir schon einmal angeschaut. Das sollte soweit passen. Wie schaffe ich es dann aber, dass MS-DOS bzw. die Geräte-Software auf "die Ergebnisse" meines c# Skriptes zugreift. Bzw. was steuere ich denn in meinem Skript dann genau an. Das ist mir irgendwie noch unverständlich...

Viele Grüße
Jesfreric
private Nachricht | Beiträge des Benutzers
kuppi
myCSharp.de - Member



Dabei seit:
Beiträge: 44

beantworten | zitieren | melden

Hallo Jesfreric,

ich hoffe ich habe dein Ziel richtig verstanden.

Du hast eine SW die unter MS-DOS läuft und via RS232 (Onboard Ports) dein Photometer ansteuert und von diesem Daten empfängt.
Die Daten werden dann visualisiert, gespeichert, gedruckt etc.

Du willst ein neues Program schreiben (C#) das unter Windows läuft, einen USB-Comport Adapter verwendet und eine vergleichbare Funktionalität bietet.

Oder habe ich das falsch verstanden?

Gruß Jürgen
private Nachricht | Beiträge des Benutzers
Jesfreric
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

@ kuppi

Zu 90% alles richtig :-) Der Unterschied ist nur, dass ich nicht an sich versuchen möchte eine neue Software zur Bedienung, etc. zu schreiben, sondern die alte Software einzubinden. Die Auswertungsalgorithmen die da programmiert wurden, bestimmte Gerätekonfigurationen, etc. sind nicht mehr nachvollziehbar von außerhalb (so schätze ich das zumindest ein).

Bisher war es sozusagen immer so..

Software <=> MS-DOS <=> RS232 <=> Gerät

Und ich möchte das so haben:

Software <(1)=> Virtual Machine (mit MS-DOS) <(2)=> Win7(e.g.) <(3)=> USB <(4)=> USB-RS232-Adapter <(5)=> RS232 <(6)=> Gerät

Schnittstelle (1) - sollte ja die Software und das MS-DOS auch in der Virtual Machine schon mit sich bringen

Schnittstelle (3) - sollte durch den Adaptertreiber und ein bisschen c# zu realiseren sein

Schnittstelle (4)/(5) - ist ja rein elektromechanisch durch die Adapter

Schnittstelle (6) - ist ja Gerätintern

Probleme machen mir Schnittstelle (2) und evtl. (3). Ich hätte dann sozusagen 2 voneinander verschiedene System, die ich irgendwie miteinander verknüpfen müsste...
Ist so etwas möglich?

Viele Grüße
Jesfreric
private Nachricht | Beiträge des Benutzers
kuppi
myCSharp.de - Member



Dabei seit:
Beiträge: 44

beantworten | zitieren | melden

Hallo Jesfreric,

letzten endes ist nur die Frage:

Wird deine Virtual Machine den USB Comport so zur Verfügung stellen dass deine DOS SW sie verwenden kann?
Wenn deine DOS SW nicht HW nah auf den Comport zugreift könnte es klappen.
Ansonsten sehe ich nicht wie Du mit C# da etwas ausrichten willst.

Gruß Jürgen
private Nachricht | Beiträge des Benutzers
thomas.at
myCSharp.de - Member



Dabei seit:
Beiträge: 102
Herkunft: Österreich / Wien

beantworten | zitieren | melden

Hallo

Ich verstehe den Sinn nicht ganz. Wenn Du einen USB<->Seriell-Adapter an das System anschließt, dann wird diesem ein COM-Port zugewiesen. Dieser ist im Gerätemanager zu sehen. Dann startest Du ganz normal Dein altes DOS-Programm und konfigurierst dort den USB-COM-Port und fertig. Ein Problem hast Du nur, wenn dein Programm nur bestimmte COM-Ports zulässt. Dann musst Du den Port im Gerätemanager entsprechend um konfigurieren.

mfG Thomas
private Nachricht | Beiträge des Benutzers
Jesfreric
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

@thomas.at

Ist das tatsächlich so einfach? Das hätte ich mir im Leben nicht träumen lassen....Die VM mit DOS + Software läuft schon. Ich habe jetzt eine Woche Urlaub, danach schaue ich es mir aber gleich nochmal genau an :-)

Viele Grüße
Jesfreric
private Nachricht | Beiträge des Benutzers
Jesfreric
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Ein kurzes Update:
Das Problem konnte tatsächlich extrem simpel gelöst werden.
Ich musste lediglich das Gerät mit dem Adapter und anschließend mit dem PC verbinden.
Im Anschluss wurde im Gerätemanager, den Settings der Virtual Machine (USB und Serial Port) und der Software vom MS-DOS der gleiche COM-Port ausgewählt. Und schon läuft das Ding...

Hätte ich nicht gedacht...

Danke an alle die sich die Zeit genommen und geantwortet haben ;-)
private Nachricht | Beiträge des Benutzers