Sie sind nicht angemeldet.

  • »elektrohonk« ist der Autor dieses Themas

Beiträge: 14

Registrierungsdatum: 02.07.2012

Derivat: Ubuntu

Architektur: 32-Bit PC

Desktop: GNOME 2.x

  • Nachricht senden

1

02.07.2012, 18:46

RS232-Adapter unter xubuntu (Netbook)

Hallo, mit Linux an sich kenne ich mich leider nicht so gut aus... Trotzdem binich davon sehr begeistert =)
Aber trotzdem tauchen Probleme auf:
Ich hab ein kleines Netbook, welches ich neben meinem eigentlichen Arbeits-Laptop gerne mit auf Reisen nehme um zu arbeiten.
Auf meinem Laptop habe ich eine VirtualBox laufen, welche mir Windows XP emuliert. (Grundsystem ist Ubuntu 10.04)
Auf diesem System habe ich zwei USB-RS232 Adapter installiert.
Mein Netbook hat als Betriebssystem Xubuntu.
Bei dem Adapter, den ich nutze handelt es sich um einen Standard-Gerät, das allem Anschein nach den FT232-Chip verwendet.
Mitgeliefert zu meinem Adapter wurde natürlich eine Treiber-CD, die man unter meinem virtuellen Windows-System mit Auto-Run installieren kann.
Das klappt bei Linux nicht, da es eine .exe-Datei ist.
Auf der CD befindet sich allerdings netterweise ein Ordner mit einem Linux-Treiber.
In diesem Ordner finden sich vier Dateien: Eine C-Quellcode-Datei, ein C-Header und einmal Makefile und Rules.make
Ich war schon soweit, dass ich das Makefile in der Konsole versucht habe zu öffnen: /home/peter/USB_Adapter/ftdi_sio/Makefile
Das macht er auch brav, aber er kennt angeblich die in dem Makefile geschriebenen Befehle nicht.
Ich habe danach ein kleines Programm in C geschrieben, welches versucht die serielle Schnittstelle zu öffnen...
Das klappt dann leider nicht....Kann mir jemand helfen??? =)
Danke im Vorraus

Gruß
Peter

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »elektrohonk« (07.07.2012, 04:44)


  • »maettu« ist männlich

Beiträge: 3 299

Registrierungsdatum: 14.09.2005

Derivat: Xubuntu

Architektur: 64-Bit PC

Desktop: XFCE

  • Nachricht senden

2

02.07.2012, 22:57

Willst du das ganze jetzt direkt unter Ubuntu oder über das virtuelle Windows verwenden? Weil das sind zwei komplett verschiedene Probleme.

3

03.07.2012, 00:22

Der ftdi_sio-Treiber ist doch ohnehin am System verfügbar. http://packages.ubuntu.com/search?search…=lucid&arch=any
Zeige einmal die Ausgabe von

Quellcode

1
lsmod | grep ftdi
Wenn die leer ist, lade ihn einmal manuell und zeig die Ausgabe des syslog:

Quellcode

1
2
sudo modprobe ftdi_sio
tail -30 /var/log/syslog
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

  • »elektrohonk« ist der Autor dieses Themas

Beiträge: 14

Registrierungsdatum: 02.07.2012

Derivat: Ubuntu

Architektur: 32-Bit PC

Desktop: GNOME 2.x

  • Nachricht senden

4

03.07.2012, 13:56

HalloFredl,

danke für deine Hilfe=)
Hier die abfotografierte Ausgabe an meinem Netbook....
Erstes Bild: Nach Eingabe von lsmod | grep ftdi folgt nichts...
Zweites und drittes Bild: Nach Eingabe von sudo.... und tail -30.....
Viertes Bild: Erneute Eingabe von lsmod.....
Wie kann ich eigentlich sehen, welche COM-Nr. der virtuelle COM-Port hat....Etwa so wie im HW-Manager unter Windoof??
»elektrohonk« hat folgende Bilder angehängt:
  • IMG_2054.JPG
  • IMG_2056.JPG
  • IMG_2055.JPG
  • IMG_2057.JPG

5

03.07.2012, 15:54

HI elektrohonk,

kleiner Tipp zu den Fotos. Im Terminal funktioniert Copy-Paste auch. Allerdings mit STRG+Shift+C und V
Alternativ einfach rechte Maustaste bei markiertem Text.
Das kannst du dann hier mit code-Tags posten. Ist für uns dann einfacher zu lesen.

Zur Com-Nummer, ein

Quellcode

1
 ls /dev 
oder

Quellcode

1
 lsusb 
könnte dir vielleicht helfen.

Viele Grüße
"Das Leben ist zum lachen da, `drum nehm´ ich Psychopharmaka" (Die Ärzte, Living Hell)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Wau Wie Lein« (04.07.2012, 12:46)


DocHifi

unregistriert

6

03.07.2012, 16:25

Hi,
ls usb
muss heißen

Quellcode

1
lsusb

Sonst gibt es diese Antwort:

Quellcode

1
ls: Zugriff auf usb nicht möglich: Datei oder Verzeichnis nicht gefunden
:D
Gruß DH

7

03.07.2012, 22:33

Wenn nach einem Kommando nichts folgt, ist es i.A. ein gutes Zeichen. Zumindest wurde der Treiber geladen, ist also im System verfügbar. Selbst kompilieren nicht nötig :)
welche COM-Nr. der virtuelle COM-Port hat
Normalerweise /dev/ttyS0 (oder /dev/ttyS1)
Das hat mit der Ausgabe von lsusb nichts zu tun. Die wäre aber nicht schlecht um zu sehen, ob der Adapter eine passende USB-ID für den Treiber hat.
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

8

04.07.2012, 12:47

Hi,
ls usb
muss heißen

Quellcode

1
lsusb

Sonst gibt es diese Antwort:

Quellcode

1
ls: Zugriff auf usb nicht möglich: Datei oder Verzeichnis nicht gefunden
:D
Gruß DH


Schande auf meinem Haupt. War im Gedanken schon beim Konzert gestern^^

Bei mir wird mein USB-RS232-Umsetzer als ttyUSB eingebunden, zumindest mit openSuse damals.

VG
"Das Leben ist zum lachen da, `drum nehm´ ich Psychopharmaka" (Die Ärzte, Living Hell)

  • »elektrohonk« ist der Autor dieses Themas

Beiträge: 14

Registrierungsdatum: 02.07.2012

Derivat: Ubuntu

Architektur: 32-Bit PC

Desktop: GNOME 2.x

  • Nachricht senden

9

04.07.2012, 13:38

Hallo!
Danke für Eure Hilfe!
Das Problem ist nun gelöst...
Ich habe gelernt, dass man im Terminal den Code

Quellcode

1
/dev/ttyUSB0

eingeben muss, um die über USB emulierte, serielle Schnittstelle anzusprechen.
Eine "echte", serielle Schnittstelle würde über

Quellcode

1
/dev/ttyS0

angesprochen.
Die virtuelle serielle Schnittstelle im Terminal anzusprechen klappt schonmal...Aber noch immer nicht in meinem C-Programm!!!!
Codeschnipsel aus dem Mini-C-Programm:

Quellcode

1
2
3
4
5
6
7
8
#include "rs232.h"
...
x=OpenComport(0,19200);
if(x!=1){
printf("COM erfolgreich angesprochen!");}
else{
printf("COM nicht ansprechbar!");}
...

Und jetzt die Stelle, an der der Hund begraben liegt:
Der in der Header-Datei (rs232.h) hinterlegte Quelltext (rs232.c) war das Problem
Original:

Quellcode

1
2
3
4
char comports[22][13]={"/dev/ttyS0","/dev/ttyS1","/dev/ttyS2","/dev/ttyS3","/dev/ttyS4","/dev/ttyS5", 
                   	"/dev/ttyS6","/dev/ttyS7","/dev/ttyS8","/dev/ttyS9","/dev/ttyS10","/dev/ttyS11", 
                   	"/dev/ttyS12","/dev/ttyS13","/dev/ttyS14","/dev/ttyS15","/dev/ttyUSB0", 
                   	"/dev/ttyUSB1","/dev/ttyUSB2","/dev/ttyUSB3","/dev/ttyUSB4","/dev/ttyUSB5"};

COM0 (Mein Adapter) wurde also in meinem Programm über /dev/ttyS0 angesprochen...Da es keine "Original"-Schnittstelle ist, musste ich den Quelltext minmal ändern:

Quellcode

1
2
3
4
char comports[22][13]={"/dev/ttyUSB0","/dev/ttyS1","/dev/ttyS2","/dev/ttyS3","/dev/ttyS4","/dev/ttyS5", 
                   	"/dev/ttyS6","/dev/ttyS7","/dev/ttyS8","/dev/ttyS9","/dev/ttyS10","/dev/ttyS11", 
                   	"/dev/ttyS12","/dev/ttyS13","/dev/ttyS14","/dev/ttyS15","/dev/ttyUSB0", 
                   	"/dev/ttyUSB1","/dev/ttyUSB2","/dev/ttyUSB3","/dev/ttyUSB4","/dev/ttyUSB5"};

Ich hab es nun getestet und kann Daten von meinem Netbook zu meinem Laptop über RS232 senden... Ob es andersherum geht, werde ich jetzt herausfinden.
Das ist wunderbar...Denn nun ist das kleine Netbook eine sehr große Arbeitserleichterung für mich!!!
Danke euch allen für Eure Hilfe!

Gruß
Peter 8)

10

06.07.2012, 22:59

Ich habe gelernt, dass man im Terminal den Code
/dev/ttyUSB0
eingeben muss, um die über USB emulierte, serielle Schnittstelle anzusprechen.
In dem Fall, ja. War mein Fehler weiter oben, sorry.

Zu deinem anfänglichen Software-Problem:
Der in der Header-Datei (rs232.h) hinterlegte Quelltext (rs232.c) war das Problem
Man sieht nicht den ganzen Quelltext und vor allem nicht die Funktionsdeklaration von "OpenComport". Trotzdem würde ich vermuten, daß es mit

Quellcode

1
x=OpenComport(16,19200)
auch funktioniert hätte (und noch immer würde). Wozu sonst würde man sich ein Array aus 22 Strings anlegen, wenn man nur den ersten nutzen will ;)
--
Wenn das Problem damit gelöst ist setze bitte noch das passende Präfix vor die Überschrift, damit das jeder gleich erkennen kann. Einfach den ersten Beitrag "bearbeiten" -> Präfix setzen. Danke!
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl