mikrocontroller.net

Forum: PC Hard- und Software FT232R von Franzis unter Lunix als "Alarmanlage" nutzen


Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/lernp...
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ß

Autor: Teplotaxl X. (t3plot4x1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
danke aber leider steht da nichts :-)

Autor: Teplotaxl X. (t3plot4x1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Link ist putt
hinten muss noch ne ) dran

Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Teplotaxl X. (t3plot4x1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.
#include <stdio.h>

int main(void) {
  int port;
  port = open("/dev/ttyUSB0", O_RDWR);
  if ( port == -1 ) {
    return -1;
  }

  int i;
  ioctl( port, TIOCMGET, &i );


  if ( (i & TIOCM_CTS)==TIOCM_CTS ) {
    return 1;
  }
  else
  {
    return 0;
  }

}

per copy + paste aus der wiki

Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe übrigens folgende gcc:
gcc ---version:
gcc (Debian 4.3.2-1.1) 4.3.2

Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: Teplotaxl X. (t3plot4x1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
T'schuldigung, der c-code war nicht getestet
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>

int main(void) {
  int port;
  port = open("/dev/ttyUSB0", O_RDWR);
  if ( port == -1 ) {
    return -1;
  }

  int i;
  ioctl( port, TIOCMGET, &i );


  if ( (i & TIOCM_CTS)==TIOCM_CTS ) {
    return 1;
  }
  else
  {
    return 0;
  }

}
btw: die nslu2 hat nen arm prozzi, du musst entweder
1. nen Crosscompiler verwenden
2. das ding auf der nslu2 kompilieren

Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: Michael X. (Firma: vyuxc) (der-michl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du nicht einen Interrupt auslösen wenn der CTS kommt? Im 
augenblick pollst du ja nur rum.

Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-)

Autor: FTDI_Newbie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.