Testen einer Linux-Lib!?

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag von MARTIN »

Hallo
Jetzt habe ich es hingekriegt (fehlendes CREAD-Flag in termios.c_cflag war das Problem).

Jetzt zu der Library, hier ist die Ursach des Problems die Tatsache dass gleichzeitig /dev/ttyS0 und /dev/ttyS1 geöffnet sind, dann kann ich nichts empfangen, senden funkioniert aber immer. Ich habe aber auch nur eine serielle Schnittstelle.
Einschalten und ausschalten von RTS, DTR funktioniert auch einwandfrei.
Die Lib ist durchaus benutzbar wenn man nur auf ein ttySx gleichzeitig zugreift.
Also, Alles in Allem gute Arbeit matze.

Hier ist der Quellencode, der auf meinem
Rechner funktioniert:

Code: Alles auswählen

;guiteile habe ich weggelassen weil man unter linux nicht immer hat

CompilerIf #PB_Compiler_OS = #PB_OS_Linux
  com1.s = "/dev/ttyS0"
  com2.s = "/dev/ttyS1"
CompilerElse  
  com1.s = "com1"
  com2.s = "com2"
  OpenConsole()
CompilerEndIf

OpenConsole()

HCom1.l = ComOpen(com1 +":50,N,8,1",0,1024,1024);nur 50boud welt besser aussieht

ComSetDTR(HCom1,0)
ComSetRTS(HCom1,0)

string1.s=Input();
zeichen.l = ComOutput(HCom1,string1)
PrintN("<Zeichen gesendet: " +Str(zeichen) +">")

Delay(6500);kleine boudrate deshalb soll laenger warten 

zeichen = ComInputBufferCount(HCom1)
PrintN("<Zeichen im Empfangs-Puffer: " +Str(zeichen) +">")

ComClose(HCom1)

CloseConsole()

End
Bei selbsgebauten Kabeln....
Tja, es komm wohl darauf an wer das Kabel zusammenlötet.
Ist die Schirmung des Kabels in Ordnung und ist es auch nicht zu lang?
Bei den Frequenzen die auf der seriellen Schnittstelle vorhanden sind und wenn man noch die brachialen Spannungsunterschiede zwischen H und L Zuständen (bei mir 24V) berücksichtigt, muss das Kabel locker über 10m lang sein um überhaupt irgendwelche Abschirmung zu brauchen.
Es gibt sonst auch die Möglichkeit mit einem Stecker in dem TD und RD miteinander
Ja das habe ich auch gemacht (loopback).
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag von MARTIN »

Ich habe eine simple Parallel-Port Library geschrieben.
Vielleicht hat jemand auch daran Interesse:Herunterladen
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
m0
Beiträge: 150
Registriert: 12.10.2004 13:55
Wohnort: Immenstadt
Kontaktdaten:

Beitrag von m0 »

Hi!
also bei mir lässt sich der port nicht öffnen (ttyS0) muss man da im linux erst was umstellen (hab kanotix 2005-01) oder woran könnte das liegen?

danke
m0
Schaut euch doch http://www.momo-wagner.de mal an ;)

MfG
m0
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag von MARTIN »

@m0
Höstwahrscheinlich hast du keine Berechtigung um auf ttyS0 zu zugreifen.
Poste mal was dieses befehl sagt:

Code: Alles auswählen

ls -l /dev/ttyS0
Und dieses:

Code: Alles auswählen

groups
Aber wenn das nicht an der berechtigung liegt dann habe ich keinen plan.
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
m0
Beiträge: 150
Registriert: 12.10.2004 13:55
Wohnort: Immenstadt
Kontaktdaten:

Beitrag von m0 »

Hi die befehle geben fogendes aus:
m0@m0-kanotix:~$ ls -l /dev/ttyS0
c--------- 1 root dialout 4, 64 2005-02-09 19:40 /dev/ttyS0
m0@m0-kanotix:~$ groups
m0 dialout fax voice cdrom floppy tape sudo audio dip video games users usb scanner
also was ich da rauslese ist dass ich eigentlich berechtigung haben sollte weil ich ja der gruppe dialout offensichtlich angehöre oder nicht?
gibts noch ne andere möglichkeit?

Danke schonmal!!
m0
Schaut euch doch http://www.momo-wagner.de mal an ;)

MfG
m0
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag von MARTIN »

igentlich berechtigung haben sollte weil ich ja der gruppe dialout offensichtlich angehöre oder nicht
Ja, du gehörst der gruppe dialuot, berechtigung hast du trotzem nicht:

Code: Alles auswählen

c---------

Loge dich als root ein und gib folgendes ein:

Code: Alles auswählen

chmod 660 /dev/ttyS0
Also Schreib- und Leserechte für besitzer und die gruppe.
Wenn das nicht hilft dann habe ich kein Plan.
gibts noch ne andere möglichkeit?
Für was ?
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
matze
Beiträge: 9
Registriert: 28.10.2004 12:01
Wohnort: Nachrodt (NRW)
Kontaktdaten:

Beitrag von matze »

Hallo!

@MARTIN
Kannst du mir das Problem mit dem gleichzeitigen Öffnen der Schnittstellen näher beschreiben?
Wenn ich bei mir ttyS0 und ttyS1 gleichzeitig in einem Programm öffne, habe ich auch die Möglichkeit Daten zwischen ihnen auszutauschen.
Tja, es komm wohl darauf an wer das Kabel zusammenlötet.
Ich wollte deine fachliche und handwerkliche Kompetenz nicht in Frage stellen! :)
Es ist nur schwer, nach einigen Zeilen Text, sein Gegenüber richtig einzuschätzen.

Hier die aktuelle Version (kleine Korrekturen und Anpassungen an MVCOM)
http://www.mgross.gmxhome.de/serial_lib_180405.tar


Gruß
Matze
m0
Beiträge: 150
Registriert: 12.10.2004 13:55
Wohnort: Immenstadt
Kontaktdaten:

Beitrag von m0 »

danke daran lags jetzt ist der port mal offen jetzt werd ich mal weitertesten!
Schaut euch doch http://www.momo-wagner.de mal an ;)

MfG
m0
m0
Beiträge: 150
Registriert: 12.10.2004 13:55
Wohnort: Immenstadt
Kontaktdaten:

Beitrag von m0 »

HEY sau stark!!!!!!!!!! Vielen Dank mit dieser Lib habt ihr mein Projekt echt um Welten weitergebracht!!! Läuft wunderbarst könnte nicht besser sein!!!

Danke
m0
Schaut euch doch http://www.momo-wagner.de mal an ;)

MfG
m0
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag von MARTIN »

@matze
Ich glaube ich habe zu früh gemeckert.
Ich weiss zwar nicht warum aber jetzt funktioniert. Ich weiss echt nicht was da vorher los war. Wäre möglich dass ich einen Tipfehler im Namen einer Variable gemacht habe aber ich habe Code mehr mals auf solche Fehler geprüft und der ist auch nicht lang.Echt, keine Ahnung.

Jeden falls kann ich jetzt gleichzeitig dev/ttsS0-1 öffnen und alles funktioniert.
Selbstverständlich bringt Schreiben oder Lesen auf ttyS1 nicht viel weil mein Rechner nur eine serielle Schnittstelle hat (an 0x3FE) aber das hat nichts mit deiner library zu tun.
Also bei mir Entwarnung, soweit funktioniert alles.Ich habe leider nur loopack zum testen (kein zweit Rechner).


Eigentlich wäre zimlich unlogisch dass es bei dir funktioniert und bei mir nicht. Ich nehme an du hast irgend ein 2.6er kernel und es könnte nur an dem kernelmodul für die serielle Schnittstelle liegen.Ich habe aber auch 2.6er kernel ( und es würde höstwahrscheinlich mit einem 2.2 kernel funktionieren, bei mir funktionieren auch diverse Beispiele für kernel 2.2)
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
Antworten