Arduino - Rasbperry - Serial Verbindung USB - C Sharp Code
Hallo,
bräuchte wieder mal Private Hilfe zum Thema Programmierung.
Die leider nicht meine Stärke ist.
Ich habe folgendes Konstrukt:
An meinem Raspberry 2 (Raspian) hängt per USB ein Arduino
der wiederum an einen Gerät hängt das Daten an den Arduino überträgt.
Am Raspian wird eine .exe ausgeführt die an einem Windows Rechner mit C# programmiert worden ist.
In diesen C# Code wird eine Serielle Schnittstelle benutzt die am COM Port nach Daten sucht.
Unter Windows läuft logischerweiße alles toll.
Am Raspberry nicht, da es dort meines Wissens nach ja keinen COM Port gibt.
Die .exe wird am Raspberry mit dem Programm "mono" ausgeführt.
Am liebsten wäre mir wenn es eine möglichkeit gäbe den Raspberry eine COM Schnittstelle vorzugaukeln.
Gute Programmierer könnten vermutlich den C# Code ändern, damit es unter Linux auch läuft, das bin ich aber nicht.
Bitte vermeidet solche Antworten:
Programmier es neu mit ......
Was genau macht der Arduino ....
Was wird ausgelesen
Da dieses Projekt noch relativ Geheim ist, würde ich auf diese Fragen ungern eingehen.
Lg
bräuchte wieder mal Private Hilfe zum Thema Programmierung.
Die leider nicht meine Stärke ist.
Ich habe folgendes Konstrukt:
An meinem Raspberry 2 (Raspian) hängt per USB ein Arduino
der wiederum an einen Gerät hängt das Daten an den Arduino überträgt.
Am Raspian wird eine .exe ausgeführt die an einem Windows Rechner mit C# programmiert worden ist.
In diesen C# Code wird eine Serielle Schnittstelle benutzt die am COM Port nach Daten sucht.
Unter Windows läuft logischerweiße alles toll.
Am Raspberry nicht, da es dort meines Wissens nach ja keinen COM Port gibt.
Die .exe wird am Raspberry mit dem Programm "mono" ausgeführt.
Am liebsten wäre mir wenn es eine möglichkeit gäbe den Raspberry eine COM Schnittstelle vorzugaukeln.
Gute Programmierer könnten vermutlich den C# Code ändern, damit es unter Linux auch läuft, das bin ich aber nicht.
Bitte vermeidet solche Antworten:
Programmier es neu mit ......
Was genau macht der Arduino ....
Was wird ausgelesen
Da dieses Projekt noch relativ Geheim ist, würde ich auf diese Fragen ungern eingehen.
Lg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 300424
Url: https://administrator.de/forum/arduino-rasbperry-serial-verbindung-usb-c-sharp-code-300424.html
Ausgedruckt am: 12.04.2025 um 08:04 Uhr
9 Kommentare
Neuester Kommentar
Zitat von @K-ist-K:
Am Raspian wird eine .exe ausgeführt die an einem Windows Rechner mit C# programmiert worden ist.
In diesen C# Code wird eine Serielle Schnittstelle benutzt die am COM Port nach Daten sucht.
Unter Windows läuft logischerweiße alles toll.
Korrekt wäre "logischerweise". Es hat nichts mit Farben zu tun, sondern mit "Art und Weise".Am Raspian wird eine .exe ausgeführt die an einem Windows Rechner mit C# programmiert worden ist.
In diesen C# Code wird eine Serielle Schnittstelle benutzt die am COM Port nach Daten sucht.
Unter Windows läuft logischerweiße alles toll.
Am Raspberry nicht, da es dort meines Wissens nach ja keinen COM Port gibt.
Die .exe wird am Raspberry mit dem Programm "mono" ausgeführt.
Am liebsten wäre mir wenn es eine möglichkeit gäbe den Raspberry eine COM Schnittstelle vorzugaukeln.
Brauchst du nicht, der Raspberry hat eine RS232-Schnittstelle, die an den GPIO-Pins direkt herausgeführt wird. Du musst deinem Programm nur mitteilen, dass es die entsprechende Schnittstelle nutzen soll, falls das geht.Die .exe wird am Raspberry mit dem Programm "mono" ausgeführt.
Am liebsten wäre mir wenn es eine möglichkeit gäbe den Raspberry eine COM Schnittstelle vorzugaukeln.
Gute Programmierer könnten vermutlich den C# Code ändern, damit es unter Linux auch läuft, das bin ich aber nicht.
Bitte vermeidet solche Antworten:
Programmier es neu mit ......
Wie soll ich dir bitte helfen, wenn du an deinem Code nix ändern willst? Zaubern kann ich nicht.Bitte vermeidet solche Antworten:
Programmier es neu mit ......
Was genau macht der Arduino ....
Was wird ausgelesen
Solange es serielle Daten sind, ist das ziemlich egal.Was wird ausgelesen
Da dieses Projekt noch relativ Geheim ist, würde ich auf diese Fragen ungern eingehen.
Dann brauchst du jemanden, der dich bei dem Projekt unterstützt...Beste Grüße
Berthold
Immer gerne...
Die USB-Ports hättest du dann zu Debugging-Zwecken und für das Firmwareupdate frei.
Ansonsten kannst du natürlich die serielle Kommunikation auch über das USB-Kabel abfrühstücken.
Vermutlich ist am Pi dann /dev/ttyACM0 das serielle Terminal zum Arduino... siehe auch hier: http://www.raspberry-pi-geek.de/Magazin/2013/05/Raspberry-Pi-und-Arduin ...
Berthold
umprogrammieren ist ja OK.
Meinte eigentlich Sätze wie. Dann Programmier es neu in Java ....
Das war mir nicht klar.Meinte eigentlich Sätze wie. Dann Programmier es neu in Java ....
Ich habe im C# Code, eine Serielle Schnittstelle mit Drag&Drop ins Formular gezogen,
dann eingestellt, welche Bitrate und welchen Port ....
Hm, also eher so Klickibunti-Programmierung?dann eingestellt, welche Bitrate und welchen Port ....
Also dein Tipp ist, irgendwie mit den GPIO Pins zu arbeiten ?
Momentan geht ein USB B Kabel vom Arduino zum Raspberry auf die normale USB A Port.
Das war mir so auch nicht klar. Ich dachte, die serielle Kommunikation läuft unabhängig von der USB-Verbindung. So würde ich das ganze dann vermutlich umsetzen. Eine direkte Verbindung zwischen den seriellen Pins des Arduino und der GPIO-Leiste des Raspberry (CAVE: Ich bin mir wegen der Spannung gerade aus dem Kopf nicht sicher.)Momentan geht ein USB B Kabel vom Arduino zum Raspberry auf die normale USB A Port.
Die USB-Ports hättest du dann zu Debugging-Zwecken und für das Firmwareupdate frei.
Ansonsten kannst du natürlich die serielle Kommunikation auch über das USB-Kabel abfrühstücken.
Vermutlich ist am Pi dann /dev/ttyACM0 das serielle Terminal zum Arduino... siehe auch hier: http://www.raspberry-pi-geek.de/Magazin/2013/05/Raspberry-Pi-und-Arduin ...
Lg
Beste Grüße!Berthold
Wie meldet sich denn der Arduino auf dem Raspi? Ist das eine virtuelle serielle Schnittstelle, als HID-Device oder als irgendwas anderes?
Ich nutze mehrere Raspis für die Logistik in unserer Firma, da hängen per RS232 mehrere Barcodescanner dran und das ganze in C#. Funktioniert problemlos, auch bei 1500 Paketen am Tag mit nur zwei Raspis. Also ob C# oder was anderes ist egal. Gibt bei Mono nur eine Einschränkung. Für die serielle Schnittstelle werden keine Eventdelegates unterstützt, hier müsste das auslesen dann per Schleife erfolgen.
Ich nutze mehrere Raspis für die Logistik in unserer Firma, da hängen per RS232 mehrere Barcodescanner dran und das ganze in C#. Funktioniert problemlos, auch bei 1500 Paketen am Tag mit nur zwei Raspis. Also ob C# oder was anderes ist egal. Gibt bei Mono nur eine Einschränkung. Für die serielle Schnittstelle werden keine Eventdelegates unterstützt, hier müsste das auslesen dann per Schleife erfolgen.
Es gibt keinen "Standard Serial Namen" unter Linux, es kommt darauf an, wie sich das Gerät ins System hängt. es kann /dev/tty0 bis irgendwas sein oder /dev/ttyUSB0 bis irgendwas oder /dev/usbAMA0 bis irgendwas oder /dev/hidraw0 ...
Wichtig wäre erstmal zu wissen, wie die Schnittstelle des Arduino unter Debian heißt.
Und mach dich mal unter C# mit der Properties-Datei vertraut, dann brauchst du nicht jedes mal, wenn sich die serielle Schnittstelle ändert, den Quelltext ändern.
Warum man unbedingt einen Arduino an einen Raspi hängt ist unverständlich. Beide Geräte haben SPI, GPIO, ..., aber was ein Arduino wirklich kann weiß ich nicht, wenn ich sowas brauche, nehm ich einen netduino, der frisst C# pur.
Wichtig wäre erstmal zu wissen, wie die Schnittstelle des Arduino unter Debian heißt.
Und mach dich mal unter C# mit der Properties-Datei vertraut, dann brauchst du nicht jedes mal, wenn sich die serielle Schnittstelle ändert, den Quelltext ändern.
Mein C# Code besteht aus Private Voids / Public Voids und aus einer Public Class
Das ist so ne Aussage wie "Mein Code besteht aus Quelltext" also absolut sinnlos und unnötig. private void heißt einfach nur, dass nur die Klasse, in der diese Methode definiert ist, auf diese Methode zugreifen darf und dass es keinen Rückgabewert gibt. public void hat auch keinen Rückgabewert, dafür darf die Methode von jeder anderen Klasse direkt angesprochen werden. Alles allgemeines Grundwissen (passt unter C# genauso wie unter Java).Warum man unbedingt einen Arduino an einen Raspi hängt ist unverständlich. Beide Geräte haben SPI, GPIO, ..., aber was ein Arduino wirklich kann weiß ich nicht, wenn ich sowas brauche, nehm ich einen netduino, der frisst C# pur.
Am Raspberry nicht, da es dort meines Wissens nach ja keinen COM Port gibt.
Wie oben bereits schon gesagt ist das schlicht falsch....Zusammengefasst kann man ja sagen es geht hier einzig und allein darum eine serielle Schnittstelle auf dem Raspi zu generieren.
Eigentlich ein Kinderspiel.
Hier steht alles was du über die serielle RasPi onboard Schnittstelle, quasi den COM Port, wissen musst:
http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_Serial.html
http://www.instructables.com/id/Read-and-write-from-serial-port-with-Ra ...
und viele andere Websites....
Noch einfacher ist es wenn du dir einen preiswerten USB zu Seriell Adapter beschaffst:
http://www.amazon.de/RS232-Seriell-Adapter-Kabel-Serial/dp/B00HV5GSDU/r ...
Den steckst du einfach in den RasPi auf einen seiner USB Ports und et voila....
Schon hast du die serielle Schnittstelle auf /dev/ttyUSB0 ohne Basteln und kannst dort bequem die Daten abnehmen.
Such dir das für dich sinnvollste raus.
Zum Rest ist ja oben schon alles gesagt.
Du hast doch schon die USB-Verbindung zwischen Raspberry und Arduino. Darüber können doch die seriellen Daten übertragen werden.
Nimm minicom und teste die Ports durch... Schau wo die Daten ankommen. Am besten startest du mal bei /dev/ttyACM0
Schau einfach mal in den Artikel aus meinem letzten Beitrag... Da steht alles drin...
Nimm minicom und teste die Ports durch... Schau wo die Daten ankommen. Am besten startest du mal bei /dev/ttyACM0
Schau einfach mal in den Artikel aus meinem letzten Beitrag... Da steht alles drin...