Hallo zusammen, das ist mein erster Beitrag hier also entschuldigt falls irgendetwas nicht 100%ig den REgeln entsprechen sollte, es war keine Absicht! Also, ich habe mir folgendens Experimentierpaket gekauft: http://www.franzis.de/online-shop/elektronik/lernpakete-elektronik/lernpaket-experimente-mit-usb Dabie ist ein FTDI232R Chip. Den habe ich nach Anleitung auch an meinem WinXP Rechner zu laufen bekommen, inkl. kleinem PRogram in VB um einen Reed-Kontakt abzufragen. Damit wollte ich den Gasverbrauch messen (wird ja mehrmals erwähnt wie das geht) So,unter WinXP läuft das. Jetzt würde ich das gerne an meinen NSLU2 mit Debian anschliessen. Also, gesagt getan: tail -f /var/messages sagt folgendes: Apr 7 21:02:42 nslu2 kernel: [42954326.900000] usb 3-1: new full speed USB device using ohci_hcd and address 3 Apr 7 21:02:42 nslu2 kernel: [42954327.100000] usb 3-1: configuration #1 chosen from 1 choice Apr 7 21:02:42 nslu2 kernel: [42954327.110000] ftdi_sio 3-1:1.0: FTDI USB Serial Device converter detected Apr 7 21:02:42 nslu2 kernel: [42954327.110000] ftdi_sio: Detected FT232RL Apr 7 21:02:42 nslu2 kernel: [42954327.120000] usb 3-1: FTDI USB Serial Device converter now attached to ttyUSB0 Apr 7 21:02:42 nslu2 kernel: [42954327.150000] usb 3-1: New USB device found, idVendor=0403, idProduct=6001 Apr 7 21:02:42 nslu2 kernel: [42954327.150000] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Apr 7 21:02:42 nslu2 kernel: [42954327.160000] usb 3-1: Product: FT232R USB UART Apr 7 21:02:42 nslu2 kernel: [42954327.160000] usb 3-1: Manufacturer: FTDI Apr 7 21:02:42 nslu2 kernel: [42954327.170000] usb 3-1: SerialNumber: A9004h1X lsusb sagt das: nslu2:/work/libftdi-0.15# lsusb Bus 003 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC unter dev sehe ist ttyUSB0 Er scheint also erkannt worden zu sein. Nur, wie gehts jetzt weiter. Wie kann ich den Reed-Kontakt, der an CTS und Masse angeschlossen ist abfragen? Danke für die Antworten! Gruß
Hi, danke aber leider steht da nichts :-)
Link ist putt hinten muss noch ne ) dran
Hi, danke für deine Hilfe. Ich habe mir das jetzt mal durchgelesen, leider bin ich glaube ich etwas zu blöd dafür. Könntest du mir kurz sagen wie ich vorgehen muss? Die Code-Schnipsel sind in C, oder?
Hi, nochmals zur Erläuterung. Ich hatte mir das so gedacht: NSLU2(Debian) läuft sowieso immer, USB-Board mit FT232R anschliessen, dort an CTS und Masse den Redd-Kontakt dran, per Cronjob CTS abfragen nach 0 oder 1. Geht das oder ist das etwas zu einfach gedacht?
FTDI_Newbie wrote: > Hi, > danke für deine Hilfe. Ich habe mir das jetzt mal durchgelesen, leider > bin ich glaube ich etwas zu blöd dafür. Könntest du mir kurz sagen wie > ich vorgehen muss? > Die Code-Schnipsel sind in C, oder? genau.
1 | #include <stdio.h> |
2 | |
3 | int main(void) { |
4 | int port; |
5 | port = open("/dev/ttyUSB0", O_RDWR); |
6 | if ( port == -1 ) { |
7 | return -1; |
8 | }
|
9 | |
10 | int i; |
11 | ioctl( port, TIOCMGET, &i ); |
12 | |
13 | |
14 | if ( (i & TIOCM_CTS)==TIOCM_CTS ) { |
15 | return 1; |
16 | }
|
17 | else
|
18 | {
|
19 | return 0; |
20 | }
|
21 | |
22 | }
|
per copy + paste aus der wiki
Hi, danke, leider bekomme ich folgendes beim compillieren: hal.c: In function 'int main()': hal.c:5: error: 'O_RDWR' was not declared in this scope hal.c:5: error: 'open' was not declared in this scope hal.c:11: error: 'TIOCMGET' was not declared in this scope hal.c:11: error: 'ioctl' was not declared in this scope hal.c:14: error: 'TIOCM_CTS' was not declared in this scope Tut mir ledi das ich vielleicht so einfache fragen stelle aber bin absoluter Newbie was USB & C betrifft! Danke nochmals und Gruß
Ich habe übrigens folgende gcc: gcc ---version: gcc (Debian 4.3.2-1.1) 4.3.2
bei gcc bekome ich folgenden Fehler: nslu2:/work# gcc hal.c hal.c: In function 'main': hal.c:5: error: 'O_RDWR' undeclared (first use in this function) hal.c:5: error: (Each undeclared identifier is reported only once hal.c:5: error: for each function it appears in.) hal.c:11: error: 'TIOCMGET' undeclared (first use in this function) hal.c:14: error: 'TIOCM_CTS' undeclared (first use in this function)
T'schuldigung, der c-code war nicht getestet
1 | #include <stdio.h> |
2 | #include <sys/types.h> |
3 | #include <sys/stat.h> |
4 | #include <fcntl.h> |
5 | #include <sys/ioctl.h> |
6 | |
7 | int main(void) { |
8 | int port; |
9 | port = open("/dev/ttyUSB0", O_RDWR); |
10 | if ( port == -1 ) { |
11 | return -1; |
12 | }
|
13 | |
14 | int i; |
15 | ioctl( port, TIOCMGET, &i ); |
16 | |
17 | |
18 | if ( (i & TIOCM_CTS)==TIOCM_CTS ) { |
19 | return 1; |
20 | }
|
21 | else
|
22 | {
|
23 | return 0; |
24 | }
|
25 | |
26 | }
|
btw: die nslu2 hat nen arm prozzi, du musst entweder 1. nen Crosscompiler verwenden 2. das ding auf der nslu2 kompilieren
Hi, vielen Dank für die Antwort, ich habe es nun kompilliert bekommen! Leider bin ich gerade auf der Arbeit, kann also den Reed-Kontakt nicht testen. Werd ich aber heute abend als erstes machen! Meld mich dann nochmasl! also, danke schonmal! Gruß
Hi, danke nochmals, nun funktioniert es :-) Leider ist die Lösung nicht die eleganteste weil ich ja nicht auf das "Signal" des Reed-Kontakts reagieren sondern dauerhaft (alle 500ms) abfrage ob CTS = 0 oder = 1 ist. aber vielleicht werde ich das auch irgendwann nochmals besser hinbekommen. Also, vielen vielen Dank für die Hilfe!! Gruß
Kannst du nicht einen Interrupt auslösen wenn der CTS kommt? Im augenblick pollst du ja nur rum.
Hi, ja, meinte mein Arbeitskollege auch! Würde ich auch gerne, könntest du mir sagen wie ich das mache. Bin eher ewtas "unerfahren" in diesen Dingen :-)
Hi, ich schon wieder. Ich habe jetzt mal versucht mich einzulesen was Interrupts berifft. Leider bin ich irgendwie kein Stück schlauer geworden. Könnte jemand einem absoluten Anfänger wie mir das mal erklären. Ich würde also gerne, wie Michael X. geschrieben hat, einen Interrupt auslösen wenn auf der Leitung CTS eine Pegeländerung stattfindet. Vielen Dank im voraus!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.