Frage:
Direkte bidirektionale Kommunikation zwischen einer PC-Anwendung und einer Pi-Anwendung
heltonbiker
2016-08-17 01:38:32 UTC
view on stackexchange narkive permalink

Ich arbeite für ein medizinisches Unternehmen und wir produzieren Systeme, die normalerweise aus einem Datenerfassungsgerät bestehen, das über USB mit einem PC verbunden ist, auf dem eine Desktop-Anwendung ausgeführt wird, damit es die Hardware steuern und die verbundenen Daten in Echtzeit anzeigen kann. Unsere Desktop-Softwareplattform ist C # /. Net / WPF.

Wir erwägen, einen Prototyp zu erstellen, bei dem ein Pi eine Handvoll Sensorgeräte steuert, die Daten vorverarbeitet und diese Daten an den PC sendet oder Laptop. Der Pi würde auch auf Befehle und Anforderungen reagieren, die von der PC-Anwendung gesendet wurden.

Ich habe mich umgesehen, aber anscheinend ist der für uns bevorzugte Weg - direkte USB-Verbindung - nicht verfügbar, da der Pi USB ein "ist. master ".

Ich war verwirrt, weil ich den Eindruck hatte, dass es einfach sein sollte, PC und Pi über ein physisches Kabel zu verbinden, damit sie miteinander" sprechen "können. Die Fragen lauten also:

Gibt es eine Möglichkeit, Pi und PC physisch zu verbinden, damit Anwendungen über diese Verbindung miteinander kommunizieren können?

Wenn eine physische Verbindung nicht möglich ist, welche ist die direkteste Um einen PC und einen Pi für den beschriebenen Zweck zu verbinden?

Mit "direkt" meine ich die geringste Abhängigkeit von externer Infrastruktur (Modems, Router usw.), die vor Ort möglicherweise nicht vorhanden ist .

Sechs antworten:
goldilocks
2016-08-17 02:03:27 UTC
view on stackexchange narkive permalink

Zwei gängige und ziemlich flexible Methoden sind:

  • Direkte Ethernet-Verbindung. Dies erfordert eine Ethernet-Buchse am PC, die nicht anders ist in Benutzung. Sie verbinden das mit dem Pi und können ein Subnetz mit zwei Knoten erstellen. Es war einmal ein Ethernet- "Cross-Over" -Kabel erforderlich, aber im Allgemeinen tun dies moderne Buchsen, einschließlich der auf dem Pi, nicht. Dies bietet eine relativ hohe Bandbreite (100 Mbit / s) im Vergleich zur zweiten Option und ermöglicht die Verwendung bekannter Netzwerkprotokolle und -anwendungen. Da es sich um eine Netzwerkschichtverbindung handelt, bedeutet dies auch, dass verschiedene Formen der unabhängigen Kommunikation gleichzeitig stattfinden können, ohne dass etwas Besonderes implementiert werden muss. Sie können beispielsweise alles Client-Server-Material ausführen, das für Ihren allgemeinen Zweck erforderlich ist, und sich gleichzeitig beim pi anmelden.

  • UART. Sie können ein serielles USB-Kabel verwenden, um den PC an die seriellen Anschlussstifte des pi anzuschließen. Diese Option ist viel langsamer (< 1 Mbit / s) als Ethernet und kann nur dann für mehr als einen Zweck verwendet werden, wenn Sie eine ausgefallene Software schreiben.

Für eine direkte Ethernet-Verbindung müssten Sie den PC jedes Mal auf eine statische IP-Adresse ändern, oder gibt es einen Weg, dies zu umgehen?
@bakalolo Nicht genau. Wenn der PC auch über ein WLAN mit dem Internet verbunden wäre, hätte er zwei IP-Adressen, eine mit dem vom WLAN-Router bereitgestellten WLAN-Adapter und eine mit der Ethernet-Buchse für das von ihm verwendete * private Subnetz * und den Pi kann genauso gut statisch sein, da Sie innerhalb eines normalen [privaten Netzwerks] (https://en.wikipedia.org/wiki/Reserved_IP_addresses) alles verwenden können, was Sie wollen - aber ** überlappen ** Sie sie nicht mit denen, die auf dem verwendet werden WLAN. Übrigens können Sie den Pi auch über den PC routen, um ihn auf diese Weise mit dem Internet zu verbinden.
bk79
2016-08-17 02:01:14 UTC
view on stackexchange narkive permalink

Sie können dies als serielles USB-Gerät (FTDI-basiertes Kabel) an GPIO-Pins ausführen.

http://elinux.org/RPi_Serial_Connection

oder Sie können den Himbeer-Pi im OTG-Modus verwenden, um den PI als USB-Peripheriegerät auszuführen. Die Himbeerpi-Null passt sehr gut zu diesem Formfaktor, und ich denke, die Absicht des Designs war, dass die Leute die Null als USB-Peripheriegerät verwenden.

https://learn.adafruit.com/turning-your -raspberry-pi-zero-into-a-usb-gadget / Übersicht

Die OTG-Lösung ist viel eleganter und wird Ihre Freunde meiner Meinung nach mehr beeindrucken

In einem anderen Punkt (ich bin selbst ein Ingenieur für medizinische Geräte) in Bezug auf die Validierung von Software und Computersystemen verstehen Sie bitte, dass Ihr "Prototyp" zur Erfassung jeglicher Art von Qualitätsdaten (Design, Prozessüberwachung usw.) benötigt wird eine Bewertung auf der Grundlage des 21 CFR Teil 11 in Bezug auf die Softwarevalidierung durchlaufen.

Ich habe tatsächlich einen Himbeer-Pi zur Fernüberwachung und Verifizierung eines externen Geräts (an einem Produktionsstandort) verwendet. Es liegt außerhalb des Bereichs dieser Website, aber senden Sie mir eine Nachricht, und ich würde Sie gerne in die richtige Richtung weisen, um die FDA-Konformität mit Ihrem System zu gewährleisten
Beachten Sie, dass die OTG-Gadget-Route entweder einer Ethernet- oder einer seriellen Verbindung entspricht, sodass sie nichts bietet, was andere Pi-Modelle tun, außer dass Sie ein USB -> Micro-USB-Kabel dafür verwenden können.
OTG ist auch für das Computermodul verfügbar, das möglicherweise besser zum Einbau in Geräte geeignet ist.
@goldilocks danke für diesen Tipp - ich wusste nicht, dass Sie nur seriell über USB OTG laufen können. Danke, dass du das für mich geklärt hast. Ich muss mir vorstellen, dass in naher Zukunft jemand HID und MSD herausfinden wird - sind das nicht nur Softwarekonfigurationen? Für OP ist dies jedoch möglicherweise zu spät in der Entwicklung für Ihr Projekt.
Am Ende dieses Adafruit-Tutorials sind die anderen Gerätemodi mit dem Hinweis aufgeführt, dass dies alles experimentell ist. Http://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/other -Module Fehlt mir hier etwas? Dies wäre alles USB-Gadget-Modus (d. H. Nicht Host) richtig? und nicht nur seriell / ethernet? Persönlich habe ich nur den seriellen und den Ethernet-Modus für die Null verwendet. Ich werde dieses Wochenende vielleicht einige andere ausprobieren. Weitere Überlegungen zu den Details im Tutorial scheinen hier zu sein: https://github.com/raspberrypi/ Linux / Issues / 1212
Ich sollte das qualifizieren - es ist weder Ethernet noch seriell und ich bin mir ziemlich sicher, dass es z. B. Möglichkeiten gibt, es als HID-Gerät zu verwenden ... aber das scheint für diesen Anwendungsfall nicht sehr zutreffend zu sein. Ich denke, was ich damit gemeint habe, war, dass es in diesem Zusammenhang nichts Nützliches bietet, was man mit einem normalen Pi sowieso nicht machen könnte (die Nützlichkeit WRT die Null ist, dass es zunächst keine Eth-Buchse gibt).
Das "Ethernet-Gadget" ist wirklich zu 100% identisch mit einer direkten Ethernet-Verbindung (obwohl es möglicherweise schneller ist, habe ich das nicht getestet!), Und für Peer-to-Peer-Verbindungen ist IP-Netzwerk wahrscheinlich die Allround-Verbindung beste Option sowieso. Ich bin mir ziemlich sicher, dass Sie es derzeit * nicht * tun können, es dazu zu bringen, ein Massenspeichergerät nachzuahmen, und im Allgemeinen, wenn Sie an die Funktionen gewöhnt sind, die Sie möglicherweise durch das Anbinden eines Smartphones usw. erhalten, ist dies nicht der Fall wird so sein. Ich würde annehmen, dass ein Multi-Core-Modell (2/3) mit mehr Speicher eine bessere Idee ist als eine Null, übrigens.
Hoppla, eine schnelle Suche im Internet scheint darauf hinzudeuten, dass Sie es als Massenspeichergerät verwenden können. Ich gehe jedoch noch einmal davon aus, dass es nicht mehr als eine Art von USB-Gerät gleichzeitig sein kann ... obwohl ich mich auch dort irren könnte.
Mark
2016-08-17 11:42:56 UTC
view on stackexchange narkive permalink

Ich würde mich für Ethernet entscheiden, entweder Punkt-zu-Punkt oder über den Router. Warum?

  1. Es behandelt Übertragungsfehler, Korrekturen usw. "out of the box" - ich denke, es ist wichtig für medizinische Zwecke (Ihre Herzfrequenz wird jetzt verdoppelt, weil sich ein Bit geändert hat - whoops)
  2. Es kann lang sein (bis zu 100 m - und kann verlängert werden)
  3. Es ist billig und allgemein verfügbar
  4. Sie können ein anständiges abgeschirmtes Kabel was Rauschen beseitigen würde (einige Geräte wie ein alter Fernseher oder Bügeleisen sind echte Probleme)
  5. Wenn Sie eine Art REST-API für Ihr Produkt schreiben, können Sie Stellen Sie eine einfache Verbindung mit C # her - und auch mit anderen Sprachen!
  6. Wenn Sie Ihre Meinung ändern und kein RPi mehr möchten, können Sie problemlos migrieren, indem Sie dieselbe Schnittstelle implementieren (wenn es sich um REST handelt) - Es ist noch einfacher, aber Sie können auch mit Steckdosen arbeiten.)
  7. Wenn Sie WLAN benötigen, schließen Sie einen USB-Adapter an und Sie können loslegen.
  8. Viele vorhandene Dinge funktionieren bereits damit - Sie müssen nicht bei Null anfangen - von immibis
  9. ol>
8 (oder 5b). Viele vorhandene Dinge funktionieren bereits damit - Sie müssen nicht bei Null anfangen.
Haben Sie in Bezug auf Option 7, die universeller zu sein scheint (da ein bestimmter zufälliger PC möglicherweise einen freien Ethernet-Anschluss hat oder nicht, aber höchstwahrscheinlich einen USB-Anschluss hat), einen Beispiellink? Sagen wir, für einen handelsüblichen Adapter oder ein Tutorial zur Verwendung eines solchen Adapters ...? Vielen Dank!
@heltonbiker RPi-kompatible Adapter (sie funktionieren auch mit PCs): http://elinux.org/RPi_USB_Wi-Fi_Adapters, die meisten von ihnen sollten Plug-and-Play funktionieren. Dort finden Sie auch Installationsanweisungen.
joan
2016-08-17 02:02:47 UTC
view on stackexchange narkive permalink

Die einfachste, schnellste und wahrscheinlich zuverlässigste Verbindung wäre ein Punkt-zu-Punkt-Ethernet-Kabel.

Alternativ ein serieller zu USB-Dongle. Das serielle Ende kann sich am Pi vom UART (Pins 8/10) oder am PC-Ende mit einem geeigneten RS232-Adapter befinden.

Amiley k. Selonim
2017-02-27 19:39:41 UTC
view on stackexchange narkive permalink

Sie können Himbeer-Pi mit Mobilgeräten nur mit einem Adapter verwenden, der als bidirektionale Kommunikation funktioniert. In Himbeer-Pi gibt es keine eingebaute Einrichtung, um ein Zwei-Wege-Kommunikationsmodem zu platzieren. GPIO und serielle Schnittstelle sind für diese Funktion nicht aktiviert.

Jyrone Parker
2016-08-17 05:31:48 UTC
view on stackexchange narkive permalink

Wenn Sie einen drahtlosen Ansatz wünschen, schreiben Sie eine NodeJS-Socket-App

Willkommen bei Raspberry Pi! Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen, hier eine Erklärung aufzunehmen, um sie zu einer nützlicheren Antwort zu machen.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...