Forum: PC-Programmierung PIC mittels JAVA/C++ unter Linux ansteuern


von Julian (Gast)


Lesenswert?

Hallo,
ich würde gerne einen PIC über USB mit einem PC verbinden. Auf dem PC 
läuft Linux (Debian Etch).
Das Programm soll später in JAVA oder C++ programmiert werden.

Nun meine Frage:
- Kennt jemand Beispiele, wie man mithilfe von JAVA unter Linux einen 
PIC ansteuern kann

- Evtl. werde ich auch C++ verwenden (wobei für mich eher JAVA in Frage 
kommt, da es hier einfach viel mehr Funktionen gibt, wie z.B. 
Netzerkfähigkeit, IO, ..., welche ich in meinem Programm dringend 
brauche), wollte mal Fragen, ob dazu auch einer Beispiele hat.

- Wie sieht das mit Treibern aus? Welche Treiber soll ich unter Windows 
verwenden. Leider kann ich den Kernel nicht neu kompalieren (ist aus 
technischen Gründen nicht möglich).

Was hab ich schon getan:
- sprut.de
- Forensuche
- Google

Hoffe, ihr könnt mir helfen!

MfG
Julian

von Εrnst B. (ernst)


Lesenswert?

Kommt darauf an, was du auf dem Pic programmierst.

Mit einer CDC-Firmware (gibts glaubich auch als Beispiel von Microchip) 
Wird der PIC vom PC als COMPort/Modem eingebunden. Da kannst du dann 
über \\.\COM<X>\ bzw /dev/ttyUSB<x> drauf zugreifen. Oder (besser!) du 
nimmst eine der vielen RS232-Libraries für Java.

HID wird (vermutlich) zwischen Windows und Linux recht unterschiedlich 
sein, ausser du lässt den PIC Tastatur spielen und fängst im Java die 
Tastendrücke ab.

Ein eigenes USB-Protokoll (Abseits der vordefinierten Klassen) geht über 
libusb(-win32) auch schön Plattformunabhängig, für Windows ist halt 
einmalig so ein .inf-File zu basteln.
Ob es fertige libusb-Bindings für Java gibt, oder ob du da selber eine 
JNI-Schnittstelle basteln musst findest du sicher im Internet.

von Julian (Gast)


Lesenswert?

Also für JAVA scheint es bereits ein Interface für libusb zu geben, nur 
leider ist die Seite gerade down :(
http://heartbit.sourceforge.net/wiki/index.php
Kann man aber noch an anderen Stellen herunterladen.

Nun zu libusb:
Hat da einer Bsp. für mich, wie ich damit einen PIC ansteuern kann. Wenn 
möglich, würde ich auch gerne den Asembler/C-Code, der auf dem PIC 
läuft, sehen. Die Bsp. sollten möglichst einfach gehalten sein und nich 
zu komplex, ansonsten kann man sich nur schwer einlesen.
Google gab da leiter nichts her.

von Εrnst B. (ernst)


Lesenswert?

Julian W. wrote (im anderen Thread):
> Die Kommunikation ist recht simpel. Es werden immer nur Werte
> geschrieben oder ausgelesen. Geht eigentlich immer abwechselnd: 1 Bit
> lesen, 1 Bit schreiben, 1 Bit lesen, 1 Bit schreiben...

Dann nimm den CDC-Modus, und eine virtuelle Serielle schnittstelle. Ist 
das einfachste, und es braucht keine libusb.


> Hat jemand Bsp. für mich, möglichst für beide Seite, also für PIC und
> LINUX. Sollten auch recht simpel gehalten sein.

Beispiel für den Pic:
http://www.holger-klabunde.de/usb/18f2550.htm
Dort runterscrollen, das "CDC_Echo" Beispiel sollte sich am einfachsten 
für deine Anwendung erweitern lassen.

Beispiele für Java:
http://java.sun.com/products/javacomm/
http://www.javaworld.com/javaworld/jw-05-1998/jw-05-javadev.html
http://dn.codegear.com/article/31915
1
 portId = CommPortIdentifier.getPortIdentifier("/dev/ttyUSB0");
2
 serialPort = (SerialPort) portId.open("ComControl", 2000);
3
 serialPort.setSerialPortParams(9600,
4
                SerialPort.DATABITS_8,
5
                SerialPort.STOPBITS_1,
6
                SerialPort.PARITY_NONE);
7
 ...

Oder google dir eine andere (einfachere) RS232-Library für Java.


> Welcher PIC ist egal, hab mich noch nicht festgelgt. Der PIC müsste nur
> den I2C-Bus unterstützen, was aber jeder können sollte.

PIC18F2550 oder PIC18F4550 würd ich nehmen.

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Danke, werde die PIC mal bestellen und es ausprobieren.

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.