Forum: PC-Programmierung Mac: Programm zur Kommunikation mit AVR.


von Jan R. (Gast)


Lesenswert?

Hallo,

habt ihr eine Idee, wie man am Mac ein Programm schreiben kann, welches 
mit der uARt kommunizieren kann?

Ich finde da nur Processing und da geht das irgendwie auch nur mit 
Arduino..

Im schlimmsten fall, könnte ich auch Windows benutzten, gibt es da eine 
möglichkeit z.b. in Visual C++ auf die Serielle schnittstelle zu kommen?

: Verschoben durch User
von Timm R. (Firma: privatfrickler.de) (treinisch)


Lesenswert?

Jan R. schrieb:
> Hallo,
>
> habt ihr eine Idee, wie man am Mac ein Programm schreiben kann, welches
> mit der uARt kommunizieren kann?

die vorrangige Frage dürfte sein, was denn controllerseitig mit dem UART 
umgesetzt ist? Mac sollte in dieser Hinsicht identisch sein mit BSD?


Vlg

 Timm

von Mac (Gast)


Lesenswert?

Screen

von Kaj (Gast)


Lesenswert?

Jan R. schrieb:
> wie man am Mac ein Programm schreiben kann, welches
> mit der uARt kommunizieren kann?

Python --> pySerial --> Port aufmachen und abfahrt

von PittyJ (Gast)


Lesenswert?

Also meine Macs haben keine serielle Schnittstelle. Da gibt es nur noch 
USB.

Also braucht man ein USB-Serial Adapter, der in die USB-Buchse gesteckt 
wird. Dazu benötigt man noch einen Treiber.
Ist alles gestartet, dann gibt es ein neues Device /dev/xxxx
Wie es genau heisst, weiss ich nicht. Der Mac steht gerade woanders. 
Aber man sieht, dass es neu ist, z.B. am Datum.

Und dieses Device kann man in jeder beliebigen Programmiersprache 
öffnen, und dann schreiben oder lesen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jan R. schrieb:
> Ich finde da nur Processing

Das ist nicht Dein Ernst, oder? Für den Mac gibt es XCode, das ist die 
"offizielle" Entwicklungsumgebung von Apple für C/C++ und Objective-C, 
der "nativen" Programmiersprache für OS X. Demnächst wird das noch um 
"Swift" erweitert.

Außerdem funktioniert der Kommandozeilen-gcc ziemlich exakt so, wie er 
es auch unter Linux tut; auch die Grundstruktur des Betriebssystems ist 
nicht großartig anders (warum auch, ist ja schließlich ein Unix).

Für die Freunde des Basic gibt es auch Realbasic (das gibt es auch für 
Windows und Linux).

von praktiker (Gast)


Lesenswert?

ftdi und konsorten tauchen bei mir als /dev/tty.usbserial-FTF5H* bzw. 
als /dev/tty.* auf - also alles irgendwie easy handlebar.

von Jan R. (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Jan R. schrieb:
>> Ich finde da nur Processing
>
> Das ist nicht Dein Ernst, oder? Für den Mac gibt es XCode, das ist die
> "offizielle" Entwicklungsumgebung von Apple für C/C++ und Objective-C,
> der "nativen" Programmiersprache für OS X. Demnächst wird das noch um
> "Swift" erweitert.
>
> Außerdem funktioniert der Kommandozeilen-gcc ziemlich exakt so, wie er
> es auch unter Linux tut; auch die Grundstruktur des Betriebssystems ist
> nicht großartig anders (warum auch, ist ja schließlich ein Unix).
>
> Für die Freunde des Basic gibt es auch Realbasic (das gibt es auch für
> Windows und Linux).

Ja toll,

wie kann ich den in C vom PC/Mac aus auf die Serielle schnittstelle 
zugreifen bzw. auf den Adapter.

Da gibt es ja nicht wie beim uC ein Register für.

Mache mal ein Beispiel.

Der uC misst ein Potentiometer aus. Der AD wandler wert, wird dann über 
UART ausgegeben und soll am rechner in eine Balkenanzeige umgewandelt 
werde.

Bsp. 2

In einem Fenster am PC kann man eine Anzahl von schritten, die ein 
schrittmotor durchführen soll einstellen.


Wie schaffe ich es, diese Strings auf die Serielle Schmittstelle zu 
beingen.... Im internet steht dazu nichts und in keinem Buch lese ich 
sowas.. vielleicht weiß es ja einer..

von Karl H. (kbuchegg)


Lesenswert?

Jan R. schrieb:

> Ja toll,
>
> wie kann ich den in C vom PC/Mac aus auf die Serielle schnittstelle
> zugreifen bzw. auf den Adapter.
>
> Da gibt es ja nicht wie beim uC ein Register für.

Natürlich nicht.
Aber dafür gibts mit Sicherheit bei Apple eine Doku dafür.

> Der uC misst ein Potentiometer aus. Der AD wandler wert, wird dann über
> UART ausgegeben und soll am rechner in eine Balkenanzeige umgewandelt
> werde.

Schön.
Ist nur für die Fragestellung uninteressant. Die Fragestellung lautet: 
Wie OS/X eine serielle bzw. ein bestimmtes Gerät geöffnet und davon 
gelesen bzw. geschrieben.
Da es sich dabei um ein Unix handelt, wird es über fopen gehen, wobei 
das Gerät sich im Dateinamen 'versteckt'. Genau das ist war ja das 
geniale im Unix, das alles im Prinzip eine Datei war/ist, die man alle 
gleich öffnet und als Stream behandelt.

Die einzige Frage die sich wirklich stellt, lautet: wie konfiguriere ich 
zb. die Baudrate.

> In einem Fenster am PC kann man eine Anzahl von schritten, die ein
> schrittmotor durchführen soll einstellen.

Noch mal:
Was auf µC Seite passiert ist völlig uninteressant, wenn es um die Frage 
geht: wie öffne ich auf dem Mac die serielle Schnittstelle.


> Wie schaffe ich es, diese Strings auf die Serielle Schmittstelle zu
> beingen.... Im internet steht dazu nichts und in keinem Buch lese ich
> sowas.. vielleicht weiß es ja einer..

Unix: fopen, fwrite, fread, fclose.
Kannst du von einer Datei lesen, kannst du auch von der seriellen 
Schnittstelle lesen.

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Jan R. schrieb:
> Da gibt es ja nicht wie beim uC ein Register für.

Nein, bei erwachsenen Computern gibt es ein Betriebssystem mit den 
notwendigen Funktionen. Erfreulicherweise werden Schnittstellen genauso 
behandelt wie Dateien, und da gibt Funktionen wie Open fürs öffnen, 
write fürs schreiben, read fürs lesen usw.

Georg

von Jan R. (Gast)


Lesenswert?

Hallo
1
*s = "21";
2
3
avr_befehl = open("/dev/tty.usbserial","w");
4
5
write(avr_befehl, s,strlen(s);

würde das so gehen? Wie stelle ich die Baudrate ein? Wie würde das in 
Objective-C gehen mit diesen komischen NSStrings usw. blick ich nicht 
ganz durch..

Danke schonmal.

von mar IO (Gast)


Lesenswert?

"obj-c serial interface" liefert 
https://github.com/armadsen/ORSSerialPort
 als erstes Ergebnis bei Google. Ich glaube, dass habe ich schon mal 
benutzt und war ganz einfach.

Natürlich kann man das einfach in C machen und in Obj-C weiter 
verarbeiten. OS X ist ja ein Unix und USB-Seriell-Adapter ist ja die 
Serielle Schnittstelle. Dazu gibt's zig Beispiele im Internet...

Wenn Du nicht selber suchen möchtest, dann guck dir 
http://www.netzmafia.de/skripten/hardware/Seriell/index.html an. Da ist 
zwar die Rede von Linux, aber das gleiche gilt auch für OS X bzw. BSD => 
den C-Code kannst Du eins-zu-eins übernehmen (selbstverständlich musst 
Du noch den Pfad zur Schnittstelle anpassen).

von mar IO (Gast)


Lesenswert?

Wenn Du ORSSerialPort verwenden möchtest, dann musst selbstverständlich 
NSASCIIStringEncoding statt NSUTF8StringEncoding benützen.
1
NSData *dataToSend = [self.sendTextField.stringValue dataUsingEncoding: NSASCIIStringEncoding];

von Jan R. (Gast)


Lesenswert?

Was ist ein NSData für ein typ?
Was ist eigentlich immer dieses self?
Kann den Befehl einfach so lassen?
Kann ich den Inhalt eines Textfields einfach mit in dataToSend schreiben 
umd dann reicht das zum senden oder muss im befehl hintendran noch was 
geändert werden?
Wie kann ich Stopbits,Parity usw. einstellen?

Entschuldigung für die fragen aber mit Objective-C habe ich mich bis 
jetzt nicht beschäftigt.

von mar IO (Gast)


Lesenswert?

Jan R. schrieb:
> Was ist ein NSData für ein typ?

Doku von NSData schon angeschaut? - Da steht in der Überschrift schon 
NSData /Class/ Reference - das sagt alles... Aber wenn ich eine 
Vermutung machen darf, dann sagt dir Objektorientierte 
Programmierung nix.

Du kannst für ein Konsolenprogramm auch einfach C benutzen. Alternative 
Programmiersprachen gibt's natürlich noch andere.

Jan R. schrieb:
> Wie kann ich Stopbits,Parity usw. einstellen?

Das steht in den Links drinnen.

Jan R. schrieb:
> ...   Z U   A L L E N   F R A G E N   ...
> Entschuldigung für die fragen aber mit Objective-C habe ich mich bis
> jetzt nicht beschäftigt.

Wenn Du Cocoa benützten möchtest, dann musst Du dich in Obj-C oder Swift 
einarbeiten. Oder Du suchst dir irgend jemanden, der dir das 
programmiert.

Stichwörter/Anhaltspunkte habe ich dir mit meiner vorherigen Antwort 
gegeben. Damit sollte man ohne Probleme was anfangen können.

von marcus (Gast)


Lesenswert?

>habt ihr eine Idee, wie man am Mac ein Programm schreiben kann,
Falls Du Java programmieren kannst, sollte JSSC laut Doku auch laufen:
Beitrag "Java serielle Schnittstelle mit JSSC"

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.