Forum: PC-Programmierung Arduino Daten über COM Port


von Tim (Gast)


Lesenswert?

Hallo,
ich habe ein Arduino und möchte gerne Konfigurationsdaten vom PC 
(Windows) über den COM Port senden. Nach der Konfiguration sollen Daten 
vom Arduino über diesen Port an den PC gesendet werden.
Kann mir jemand helfen wie ich hier starten muss um eine passende DLL zu 
schreiben?

: Verschoben durch User
von Karl H. (kbuchegg)


Lesenswert?

Da brauchst du keine DLL schreiben.
Mit welcher Programmiersprache programmierst du am PC? Dort siehst du 
dir an, wie man da mit der seriellen Schnittstelle umgeht.
Der Rest ist dann Texte hin und her schicken. Wobei sich natürlich am PC 
der ganze Rattenschwanz stellt, wie zb wo kommen die Werte her? Kommen 
die aus einer Datei? Wie werden die dort gespeichert? Wie wählt ein 
Benutzer aus? Kann ein Benutzer die Konfigurationsdaten interaktiv auf 
dem PC verändern, ehe sie übertragen werden, etc. etc.

wenn du also fragst "wie fange ich an".
Du fängst damit an, eine Kommunikation zwischen Arduino und PC bzw. 
umgekehrt aufzubauen, die über die serielle SChnittstelle läuft. Und 
wenn du das so leidlich im Griff hast, denkst du dir ein Protokoll aus.

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Eine DLL allein wird nicht reichen, es muss schon eine EXE, Java, Python 
oder sowas sein. Ich selbst arbeite oft mit Visual Studio .NET.

Du scheibst: "eine passende DLL". Wozu soll die passen?

PS: Oder anders (wie  Karl Heinz schrieb, der schneller war): Mit 
welcher Programmiersprache programmierst du am PC?

PPS: Gehört das nicht eher in das Forum "PC-Programmierung"?

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Torsten C. schrieb:

> PPS: Gehört das nicht eher in das Forum "PC-Programmierung"?

Möglich. Wir werden sehen, wie sich das alles weiter entwickelt.

von Tim (Gast)


Lesenswert?

Torsten C. schrieb:
> Du scheibst: "eine passende DLL". Wozu soll die passen?

Also meien Aufgabe ist es eine DLL in C zu programmieren, in der die 
Konfigurationsdaten vom Benutzer eingegeben werden können und der PC 
soll anschließend daten vom arduino empfangen können.
Das ist zunächst das was ich dazu sagen kann. Jedoch fehlt mir hier zur 
Zeit der Starpunkt wie ich so etwas anstelle.
Ich dachte vllt gibt es da so etwas wie man da standardmäsig vorgeht.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Hört sich an wie eine DLL, die Du in Labview ansprechen willst.
Aber lass uns bitte nicht raten.

Nochmal: Welches Programm soll die DLL nutzen?

: Bearbeitet durch User
von Tim (Gast)


Lesenswert?

Torsten C. schrieb:
> Hört sich an wie eine DLL, die Du in Labview ansprechen willst.
> Aber lass uns bitte nicht raten.
>
> Nochmal: Welches Programm soll die DLL nutzen?

Das ist natürlich eine wichtige Frage, die ich abklären werde. Ich werde 
im laufe des Vormittags weitere Informationen zur Verfügung stellen

von Tim (Gast)


Lesenswert?

Die DLL soll mit in mehreren in der hochschule entwickelte programme 
eingebunden werden können.
Hier soll zum beispiel festgelegt werden, das die Pins 10-20 o.ä. aktiv 
sein sollen.
Des weiteren soll der Port über ein entsprechendes Kommando geöffnet und 
geschlossen werden können und anschließend könnendaten vom arduino an 
den pc gesendet werden.

von Tim (Gast)


Lesenswert?

Habe gerdae die information bekommen das diese programme die serielle 
schnittstelle ansprechen können.
Dann muss es doch möglich sein das ganze über den FTDI treiber zu lösen 
oder?

von Ion (Gast)


Lesenswert?

Tim schrieb:
> Die DLL soll mit in mehreren in der hochschule entwickelte
> programme eingebunden werden können.
> Hier soll zum beispiel festgelegt werden, das die Pins 10-20 o.ä. aktiv
> sein sollen. Des weiteren soll der Port über ein entsprechendes Kommando
> geöffnet und geschlossen werden können und anschließend könnendaten vom
> arduino an den pc gesendet werden.

Warum lässt man das immer Leute machen die gerade davon keine Ahnung 
haben?

von Karl H. (kbuchegg)


Lesenswert?

Ion schrieb:

> Warum lässt man das immer Leute machen die gerade davon keine Ahnung
> haben?

Weil sie vom Rest noch viel weniger Ahnung haben. Also gibt man ihnen 
das als Semesterarbeit was man selbst an 1 oder 2 Nachmittagen fertig 
haben könnte. Der Fachkräftemangel ist eben ein Problem.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Es geht also doch eindeutig um PC-Programmierung.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Ion schrieb:
> Warum lässt man das immer Leute machen die gerade davon keine Ahnung
> haben?

Alle, die heute Ahnung haben, mussten das auch erst lernen, z.B. durch 
so eine Semesterarbeit. Theorie geht links rein und rechts wieder raus.

Tim schrieb:
> Dann muss es doch möglich sein das ganze über den FTDI treiber zu lösen
> oder?

Genau! Alles andere wäre komplizierter und vermutlich unnötig 
kompliziert.

von Tim (Gast)


Lesenswert?

Vielen Dank Torsten.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Neben FTDI gibt es auch noch andere. Ohne einen Glaubenskrieg anzetteln 
zu wollen, hier nur ein kurzer Hinweis, weil ich es gerade gelesen habe, 
im Beitrag "WS2812B über USB-UART ansteuern"

> FT232RL Datenstrom setzt bei 3MBaud sporadisch aus.

Andere Väter haben auch schöne Töchter.

von Robert L. (lrlr)


Lesenswert?

>Andere Väter haben auch schöne Töchter.

für die DLL (oder was es dann irgendwann mal werde soll)
ist das doch vollkommen egal,
ein "echter" Arduino Uno z.b. wird immer einen FTDI haben
ein china clone eher eine CH340


aber, die Aufgabe ist "über den COM Port senden. "
also SCH.. egal was auf dem "Arduino" ist..




>Habe gerdae die information bekommen das diese programme die serielle
>schnittstelle ansprechen können.

nett, aber was hat das mit deiner DLL zu tun??

von physiker (Gast)


Lesenswert?

Robert L. schrieb:
>>Habe gerdae die information bekommen das diese programme die serielle
>>schnittstelle ansprechen können.
>
> nett, aber was hat das mit deiner DLL zu tun??

Könnte vielleicht heißen, daß die entsprechenden Programme selbst schon 
den seriellen Port aufmachen und daher für seine "library" eigene 
read/write Befehle bereitstellen. Aber es bleibt nebulös.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Robert L. schrieb:
> aber was hat das mit deiner DLL zu tun??

Tim braucht keine DLL mehr, weil FTDI, CH340, PL2302, CP2102  usw. schon 
fertige DLLs mitbringen.

physiker schrieb:
> Könnte vielleicht heißen, daß die entsprechenden Programme selbst schon
> den seriellen Port aufmachen

Ja, hat er doch oben geschrieben.

von physiker (Gast)


Lesenswert?

Das hier hört sich z.B. nach dem gwünschten an:
http://playground.arduino.cc/Main/InterfacingWithSoftware
https://github.com/Ardulink
(wenn auch in java).

von Robert L. (lrlr)


Lesenswert?

Torsten C. schrieb:
> Robert L. schrieb:
>> aber was hat das mit deiner DLL zu tun??
>
> Tim braucht keine DLL mehr, weil FTDI, CH340, PL2302, CP2102  usw. schon
> fertige DLLs mitbringen.

JUHU..
die Aufgabe:
>eine passende DLL zu schreiben?
wurde also gelöst, .... indem man einfach die von FTDI nimmt..

;-)

von Joachim B. (jar)


Lesenswert?

Robert L. schrieb:
> die Aufgabe:
>>eine passende DLL zu schreiben?

war das die Aufgabe oder nur sein Wunsch?

Ich würde ja fürs Geforderte:

Tim schrieb:
> möchte gerne Konfigurationsdaten vom PC
> (Windows) über den COM Port senden

keine DLL schreiben sondern ein Programm in lcc32, andere würden qbasic 
oder batch wählen.

Es ist ja nicht so wahnsinnig schwer was auf die Com rauszujagen.

copy con: com1:
hterm
hyperterminal

also was wäre die genaue Aufgabe oder was wäre der Wunsch wirklich?

hat der Wunsch was mit der Aufgabe zu tun? oder ist der Wunsch nur aus 
einer falsch verstandenen Aufgabe entstanden?

Die Frage kommt mir vor wie: "wie kann ich übers Wasser laufen?" dabei 
ist das Ziel doch nur drüben anzukommen.

von Robert L. (lrlr)


Lesenswert?

nicht von dir auf anderer Schließen
nur weil für DICH "über Wasser laufen" abwegig klingt....


>Die DLL soll mit in mehreren in der hochschule entwickelte programme
>eingebunden werden können.

ist jetzt schon recht eindeutig..

von Joachim B. (jar)


Lesenswert?

Robert L. schrieb:
>>Die DLL soll mit in mehreren in der hochschule entwickelte programme
>>eingebunden werden können.
>
> ist jetzt schon recht eindeutig..

OK mein Fehler, dann würde ich vermutlich die DLL auch mit lcc32 
schreiben,

http://www.cs.virginia.edu/~lcc-win32/

http://www.axelvogt.de/axalom/lcc-win32/Creating_a_DLL_for_Excel_or_Visual_Basic_with_lcc-win32.pdf

müsste mich auch erst einlesen

von Carl D. (jcw2)


Lesenswert?

>>Die DLL soll mit in mehreren in der hochschule entwickelte programme
>>eingebunden werden können.

Dann erwarten diese Programme sicher eine bestimmte Schnittsrelle, oder?
Also Umsetzung von SerialPort nach Unbekannt.
Für SerialPort gibt es in jeder Sprache Unmengen Beispiele. Für das 
Zweite ist die Kristallkugel zuständig.

von Karl H. (kbuchegg)


Lesenswert?

Joachim B. schrieb:
> Robert L. schrieb:
>>>Die DLL soll mit in mehreren in der hochschule entwickelte programme
>>>eingebunden werden können.
>>
>> ist jetzt schon recht eindeutig..
>
> OK mein Fehler, dann würde ich vermutlich die DLL auch mit lcc32
> schreiben,

trotzdem.
Egal wie, würde ich das Thema DLL erst mal beiseite lassen und mit einem 
normalen Programm anfangen, ein entsprechendes Protokoll für den 
beabsichtigten Zweck zu entwickeln. Die dabei anfallenden Kernteile kann 
man dann immer noch in eine DLL verpacken, aber erst mal ist eine DLL 
bei der anstehenden Entwicklungsphase erst mal hinderlich.

Divide and conquer
Erst mal sich um die unumgängliche Kommunikation kümmern und dann erst 
darum, wie man das verpackt. Hat man ein eigenständiges Programm erst 
mal fertig, dann weiss man auch schon mehr, wie die funktionale 
Schnittstelle der DLL aussehen könnte. Die Protokollentwicklung wird 
sowieso ein paar Iterationen benötigen, bis man auf einem auch für 
andere brauchbaren Level angelangt ist. Dann ist es immer noch früh 
genug, sich um das Thema DLL zu kümmern.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Allerdings ist es ratsam, das Programm nicht mit irgendeiner GUI zu 
versehen, sondern ein simples Kommandozeilenprogramm zu bauen.

von Karl H. (kbuchegg)


Lesenswert?

Rufus Τ. F. schrieb:
> Allerdings ist es ratsam, das Programm nicht mit irgendeiner GUI zu
> versehen, sondern ein simples Kommandozeilenprogramm zu bauen.

Entweder das oder sehr diszipliniert zwischen GUI und funktionalem Kern 
unterscheiden. Ich gestehe aber auch zu, dass gerade Anfänger diese 
Trennung und das disziplinierte Einhalten derselben meist nur sehr 
schwer schaffen. Von daher ist die Empfehlung eine gute.

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.