mbr: Hardwareansteuerung (parallel-Port) in C++

Hallo Forum,
ist zwar wahrscheinlich ziemlich off-topic, aber ich versuchs mal hier - schliesslich tummeln sich hier auch einige Elektronik Fachleute.

Also: ich habe ein Meßgerät Sony Magnescale Ly-105 und möchte dies gerne aus einem selbstgeschriebenen C++ Programm heraus ansteuern (Windows Visual Studio 2003 wird zum Erstellen verwendet - sprich: Betriebssystem Windows XP ;-) ).
Das Gerät hängt an einem Multiplexer, mit acht Eingängen, der wiederum über USB an meinen Computer (Laptop - spielt das eine Rolle?) angeschlossen ist. Der Multiplexer ist ein Edgeport 8/DB25 von Digi - zumindest steht das auf dem Gerät,beziehungsweise in der Doku. Mein Problem ist: Wie komme ich an die Daten? Ich sehe am Meßgerät auf der LCD Anzeige ein Meßergebnis, schaffe es aber nicht, die Daten abzurufen, weil ich keinen Ansatz habe, wie ich überhaupt in C++ den parallelen Port anspreche. Oder ist es gar nicht der Parallele Port, sondern ein serieller? Frage mich gerade, wie eigentlich der Multiplexer einen Parallelport auf USB umleitet? Bin ehrlich gesagt etwas verwirrt und wäre für Antworten dankbar. (sonstige Programmierung mit MFC ist kein Problem, das Grundgerüst des Programmes steht schon)

liebe Grüße

mbr

P.S.: finde es klasse, dass das Forum wieder die Pforten geöffnet hat. In letzter Zeit habe ich zwar fast nur konsumiert (das heißt: still mitgelesen), werde mich aber auch bald wieder etwas aktiver beteiligen.

  1. Moin Moin!

    Also der Edgeport ist schonmal seriell. Den wirst Du sehr wahrscheinlich über die normale Windows-API für serielle Schnittstellen (RS232 alias V24 alias COM-Port) ansprechen können.

    Dann kommt das Meßgerät, das Du mit passenden seriellen Einstellungen (Baud-Rate, Stop-Bits, Daten-Bits, Parity-Bits) ansprechen mußt, und dann mußt Du noch das passende Protokoll über die serielle Schnittstelle sprechen.

    Im ersten Ansatz wäre es sicherlich einfacher, das Meßgerät direkt an einen integrierten seriellen Port des PCs anzuschließen, das spart schonmal viel Theater mit dem Edgeport. Wenn sich PC, Meßgerät und Software verstehen, kannst Du wieder zurück zum Edgeport.

    Ohne Unterlagen vom Hersteller des Meßgerätes (Minimal Bedienungsanleitung) wirst Du nicht weiter kommen, weil jeder über RS232 machen kann, was er will. Google findet unter der Bezeichnung "Sony Magnescale Ly-105" leider nichts vernünftiges. Vertippt?

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Hallo Alexander,
      erstmal vielen Dank für die superfixe Antwort.

      Im ersten Ansatz wäre es sicherlich einfacher, das Meßgerät direkt an einen integrierten seriellen Port des PCs anzuschließen, das spart schonmal viel Theater mit dem Edgeport. Wenn sich PC, Meßgerät und Software verstehen, kannst Du wieder zurück zum Edgeport.

      Leider hat weder mein Laptop, noch mein Desktop PC an den ich eh erst Mitte nächster Woche wieder herankomme einen integrierten seriellen Port, nur USB. Von daher war ich ja sogar froh, dass ich den Edgeport  habe ;-)

      Ohne Unterlagen vom Hersteller des Meßgerätes (Minimal Bedienungsanleitung) wirst Du nicht weiter kommen, weil jeder über RS232 machen kann, was er will. Google findet unter der Bezeichnung "Sony Magnescale Ly-105" leider nichts vernünftiges. Vertippt?

      Ja (oder besser nein?), ich hatte auch schon gegoogelt, aber leider nichts gefunden. Die Bezeichnung ist definitiv kein Vertipper. Nur findet Google eben nix.
      Bedienungsanleitung des Sony Meßgerätes liegt jetzt übrigens vor (Habe ich von meinem "Kunden" per FTP bekommen). Ich schaue gleich mal genauer rein. Beim allerersten Überfliegen sah es aber so aus, als ob das leider auch nicht (viel) weiterhilft, weil da echt nur das Anschließen und der "normale" Betrieb erklärt werden.

      Liebe Grüße mbr

      1. Moin Moin!

        Also, für den allerersten Teil, serielle Kommunikation in C++, tut's wohl so ziemlich jedes Stückchen Demo-Code, der einem seriellen Modem irgendwelche AT-Kommandos reindrückt und die Ergebnisse auswertet. Das sollte sich finden lassen. Zum Testen reicht jedes antike Modem mit einem seriellen Anschluß, die "sprechen" alle den alten Hayes-Befehlssatz. Sprich: Auf "AT\n" wird mit "OK\n" geantwortet, auf "ATI\n" kommt "Superduper Modem Blafasel Version 4711/0815\nOK\n", "ATZ\n" sollte ebenfalls mit "OK\n" beantwortet werden. Angenehmerweise stellen sich Modems in aller Regel auch automatisch auf die benutze Baudrate usw. ein.

        Serielle Geräte arbeiten oft (aber nicht immer!) mit Standard-Einstellungen wie 9600-8N1 (9600 Baud, 8 Datenbits, keine Parität, 1 Stop-Bit), 19200-8N1 oder 38400-8N1, manche auch mit 115200-8N1. Einem Modem ist das wie gesagt egal, das Meßgerät wird vermutlich exakt eine Geschwindigkeit unterstützen. Und die steht im Handbuch oder kann mit ausreichenden Mitteln (HTTP-Request, Mail, Cash, NDA, rohe Gewalt) vom Hersteller angefordert werden.

        Handshake entfällt gerne Mal, insbesondere auf kurzen Leitungen. Ansonsten ist Hardware-Handshake üblich, manche Low-Cost-Interfaces erfordern aber auch mal Software-Handshake.

        Die Datenübertragung über die serielle Schnittstelle erfolgt oft (aber wieder einmal: nicht immer!) in ASCII, je nach dem wie "dumm" das Meßgerät ist, könnte es sein, dass es einfach stumpf und dumm dreimal in der Sekunde den Meßwert und die Einheit, gefolgt von "\n" über RS232 rausschreibt (also z.B. "1.23V\n" - Pause - "1.25V\n" - Pause - "1.22V\n" - Pause - ...). Ein voll fernsteuerbares Meßgerät wird vermutlich ein wesentlich aufwendigeres Protokoll benutzen -- schon allein, um nicht von irgendeiner dummen, Unsinn plappernden Windows-Plug-and-Play-Modem-und-Maus-Erkennung in den Selbstzerstörungsmodus gesteuert zu werden. Auch hier sollte das Handbuch weiterhelfen, oder die o.g. "ausreichenden Mittel".

        Alexander

        --
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
        1. (Warum man erst auf "Vorschau" klicken sollte ...)

          Zum Testen reicht jedes antike Modem mit einem seriellen Anschluß

          Das Modem muß nicht einmal an eine Telefonleitung angeschlossen werden, die genannten Diagnose-Funktionen funktionieren definitiv ohne Telefonleitung.

          Die exotischste RS232, die ich kenne, ist an einer Telefonanlage. Dort wird ein Modem simuliert, dass sich in einen simulierten PPP-Provider einwählt, über den man dann per TCP/IP auf den Webserver in der Telefonanlage zugreift. (Ja, das ist eine Notlösung, wenn man aus irgendwelchen Gründen nicht über Ethernet oder ISDN-PPP auf den Webserver der Anlage zugreifen kann.)

          Alexander

          --
          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    2. Hallo Alexander,

      Also der Edgeport ist schonmal seriell. Den wirst Du sehr wahrscheinlich über die normale Windows-API für serielle Schnittstellen (RS232 alias V24 alias COM-Port) ansprechen können.

      eine Sache noch, die ich nicht verstehe: Die COM-Ports haben doch normalerweise 9 Pins- oder irre ich mich? Die Eingänge des Edgeport haben nämlich 25 Pins (2 Reihen, 13 oben, 12 unten), also eher wie ein  Parallelport. Vielleicht bringe ich da jetzt auch gerade was durcheinander, bin etwas verwirrt.

      Liebe Grüße mbr

      1. Hallo

        eine Sache noch, die ich nicht verstehe: Die COM-Ports haben doch normalerweise 9 Pins- oder irre ich mich?

        zu alten Zeiten (so vor 10-15 Jahren) hatten viele Rechner zwei serielle Anschlüsse, dabei war oft einer mit 9 Pins, der andere mit 25 Pins ausgeführt, siehe auch http://www.lammertbies.nl/comm/cable/de_RS-232.html#pins.

        Normalerweise war es so, dass der Rechner über solche Anschlüsse verfügte, für die man gerade kein Kabel hatte, also war der Griff in die Adapterkiste fällig :-)

        Freundliche Grüße

        Vinzenz

      2. Hallo,

        eine Sache noch, die ich nicht verstehe: Die COM-Ports haben doch normalerweise 9 Pins- oder irre ich mich?

        heutzutage ist das so, ja. Es gibt aber an älteren Geräten oft noch COM-Ports mit dem "traditionellen" 25poligen Sub-D-Steckverbinder. Um sie zu unterscheiden, schau dir einfach den Anschluss *am PC* an: Hast du eine Stiftleiste am PC, dann ist es ein serieller Port (COM), hast du eine Buchsenleiste, dann ist es ein paralleler Port (LPT).

        Ansonsten kann ich aus deiner Beschreibung leider auch noch nicht genug Informationen ableiten, dass ich dir wirklich weiterhelfen könnte.

        So long,
         Martin

        --
        Time's an illusion. Lunchtime doubly so.
          (Douglas Adams, "The Hitchhiker's Guide To The Galaxy")
      3. Moin Moin!

        Die RS232-Norm definiert 25 Pins (unter anderem mit einer zweiten Hilfsschnittstelle und jeder Menge zusätzlichen Signalen). Die bekannteren 9 Pins sind eine IBM-Sparversion. Auf dem 25poligen seriellen Anschluß am PC sind aber auch nur 9 Signale beschaltet.

        Siehe auch http://www.hardwarebook.info/RS232, http://www.hardwarebook.info/Serial_(PC_9), http://www.hardwarebook.info/Serial_(PC_25), http://www.hardwarebook.info/9_to_25_Serial,

        Alexander

        --
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
        1. Hallo Alexander

          Die RS232-Norm definiert 25 Pins (unter anderem mit einer zweiten Hilfsschnittstelle und jeder Menge zusätzlichen Signalen). Die bekannteren 9 Pins sind eine IBM-Sparversion. Auf dem 25poligen seriellen Anschluß am PC sind aber auch nur 9 Signale beschaltet.

          Nochmal danke für die schnelle Antwort (auch an Martin :-))

          Dann bin ich erstmal beruhigt. Es ist so, dass ich mir ein Terminal Programm besorgt hatte - shamrock - und damit zwar gesehen habe, dass sobald ich den Meßkopf "betätige" auch Daten am "COM Port" ankommen, diese allerdings immer "0" sind, selbst wenn das LCD am Gerät einen Meßwert anzeigt. Daher hatte ich die Befürchtung, dass ich grundsätzlich etwas nicht verstanden hätte. Naja, vielleicht ist auch das Kabel defekt? Muss mich nächste Woche mal wirklich eingehender damit befassen. Allen, die mir geantwortet haben erstmal ein schönes Wochenende (oder was noch davon übrigbleibt)

          mbr

          1. Moin Moin!

            Wie gesagt, es hängt vom Meßgerät ab, ob und was es an Daten auf den seriellen Port schreibt. Die Idee, einfach bei jeder Messung stumpf den Meßwert plus Einheit plus Zeilenumbruch mit einer festgelegten Baudrate rauszuposaunen, ist für eher dumme Meßgeräte. Ein "intelligentes" Meßgerät wird -- außer mit einem geeigneten Gegenstück auf der PC-Seite -- stumm bleiben. Die beobachteten "Nicht-Daten" könnten eine Aufforderung an die Software sein, sich zu identifizieren. Oder sie sind eine Identifikation des zu verwendenden Protokolls. Ohne eine Beschreibung des Protokolls zwischen Meßgerät und Software bleibt nur fröhliches Raten.

            Alexander

            --
            Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".