Seite 2 von 3

Verfasst: 11.04.2005 15:43
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).

Verfasst: 17.04.2005 19:30
von MARTIN
Ich habe eine simple Parallel-Port Library geschrieben.
Vielleicht hat jemand auch daran Interesse:Herunterladen

Verfasst: 18.04.2005 13:59
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

Verfasst: 18.04.2005 15:48
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.

Verfasst: 18.04.2005 17:50
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

Verfasst: 18.04.2005 20:40
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 ?

Verfasst: 19.04.2005 11:54
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

Verfasst: 19.04.2005 12:50
von m0
danke daran lags jetzt ist der port mal offen jetzt werd ich mal weitertesten!

Verfasst: 19.04.2005 13:05
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

Verfasst: 19.04.2005 17:50
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)