Hallo da ja der LPT/Parallel Port leider an neuen Boards kaum noch zu finden stellt sich mir die Frage kann ich einen usb zu lpt Adapter genauso ansteuern wie ein normalen onboard LPT?
(zum ansteuern werden ioperm und outb benutzt)
Anmeldungsdatum: Beiträge: 173 |
Hallo da ja der LPT/Parallel Port leider an neuen Boards kaum noch zu finden stellt sich mir die Frage kann ich einen usb zu lpt Adapter genauso ansteuern wie ein normalen onboard LPT? (zum ansteuern werden ioperm und outb benutzt) |
Anmeldungsdatum: Beiträge: 1279 |
Ich kenne das jetzt nur bei einem seriellen USB Adapter - ich denke es ist vergleichbar. Da war der genauso ansteuerbar, jedoch haben die USB-angestöpselten devices andere Namen "usb...." |
(Themenstarter)
Anmeldungsdatum: Beiträge: 173 |
hmm an sich steuere ich den lpt Port über eine Adresse an nicht über den Device Namen/Pfad werde mir morgen einfach mal son ding besorgen und schauen ob es funktioniert |
Anmeldungsdatum: Beiträge: 1279 |
pmgzed schrieb:
Was machst du da? Wie meinst du das? |
(Themenstarter)
Anmeldungsdatum: Beiträge: 173 |
ich habe da eine selbstgebastelte schaltung die ich mit den router steuern will deshalb ist es wichtig das ich steuern kann wo spannung anliegt und das mache ich mit outb wofür ich aber die adresse des ports brauche also beim pc standartmäßung 0x378 /dev/lpt bzw /deb/usb/lpt kann ich nicht verwenden ☹ |
Anmeldungsdatum: Beiträge: 1279 |
Welche Spannung willst du denn steuern? Die einzelnen Signale werden bei einem 'open' auf die Schnittstelle hochgezogen bzw. bei einem 'close' runtergefahren. Welche das schlussendlich sind, hängt von den Schnittstellen TTY-Parametern ab (ioctl). |
(Themenstarter)
Anmeldungsdatum: Beiträge: 173 |
kennst vlt diese steckdosen die man mit ner fernbedinung an und auschalten kann dafür baue ich mir grade eine schaltung damit ich über lpt und der Schaltung dann die einzelnen "Knpöfe" der Fernbedinung "drücken" kann hatte schon ne testschaltung hat auchganz gut geklapt nur hatte ich die an einen pc mit onboard lpt angeschlossen nun will ich das ganze an meinen Router (dd-wrt) anschließen der hat aber nur usb deshalb der Adapter da ich wie gesagt den onoard lpt hatte habe ich mich mit der methode mit open devicepfad nicht auseinandergesetzt also kenne ich bis jetzt garnicht vlt hast ja nen link wo man das mal nachlesen kann? |
Anmeldungsdatum: Beiträge: 1279 |
Nun, Steckdosenleisten gibt es auch mit USB-Anschluss (z.B. bei Amazon) mit Suchbegriff USB Steckdosenleiste werden dann auch die Bücher angezeigt, in denen drin steht, wie man schöne Sachen damit programmieren kann ☺ –- Nun mit dem open verändert man ja die Handshake-Dinger. Wenn man die anderen Pins setzen will, sind das ja einfach Nutzdaten, die man ausgibt. Man sendet da einfach was. An so eine Schnittstelle kann man ja z.B. auch einen Drucker anschließen. In einer Programmiersprache deiner Wahl machst du auf das Device ein open erhälst damit einen Descriptor und dann schreibst du Daten drauf. Bei dir wird es einfach die Busbreite an Bits sein, die du schreiben musst und alle Dinger sind gesetzt(?) Wie gesagt, ich schließe so darauf, weil ich es nur mit seriellen Schnittstellen zu tun hatte. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 173 |
Also an sich kenne ich das von Windows so mit den Open der nachteil ist das immer erin bestimmter Status zurückgemeldet werden muss und das wollte ich nicht deshalb hatte ich mich für outb entschieden da ich da nocht über den Treiber gehe sondern die Pins direct ansteuern kann das mit den Usb Steckdoesen kannte ich noch garnicht ist aber auch zu Teuer und unflexibel da ich durch die ganze wohnung Kabel legen müsste und die anschlüsse sind sehr begrenzt über die Funk dosen ist es für mich besser da ich für das stück nur ca 5€ zahle und bis zu 1024 steckdosen mit schalten kann |
Anmeldungsdatum: Beiträge: 1279 |
Ja, den Handshake muss deine Hardware können - dafür ist die Schnittstelle halt gebaut. Alternative Schaltungen: http://www.franksteinberg.de/hardsteu.htm vielleicht hilft das ... Mit outb kannst du jedenfalls nicht weitermachen, wenn du keine Schnittstelle an Board hast. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 173 |
so habe ein paar Fortschritte gemacht aber hab auch wieder neue Probs also an meinen Test Pc habe ich 3 eingebaute lpts 1 onboard 2 eine extra PCI Karte diese kann und konnte ich mit outb ansteuern neu ist das ich die Ports auch mit fopen / putc setzen kann beim usb /dev/usb/lp0 klapt das leider nicht am PC ☹ edit... so jetzt nach einen neustart klapt das ansteuern am normalen onboard LPT über den PC nicht mehr woran kann das den liegen? er bleibt beim fopen stehen ?? nun nachdem ich schon am verzweifeln war habe ich den USB LPT Adapter einfach mal an meinen Router angesteckt und ganz dreist eine "echo test > /dev/lp0" eingetippt und ich war erstaunt als die led´s geplinkt hatten also wieder Sonne am Horizont ☺ so jetzt komme ich zu meinen 2 Problemen 1. wenn ich versuche mein Programm auf den Rrouter (dd-wrt) zu starten dann bekomme ich ein "./test.bin: line 3: syntax error: ")" unexpected" woran könnte das liegen? 2. ich kann nur LPT Ports ansteuern wenn die auf /dev/lp0 /dev/lp1 ... gemountet sind Ports wie /dev/parport0 /dev/parport1 /dev/usb/lp0 klappen nicht und stellt sich mir die Frage wie bekomme ich mein USB zu LPT Adapter als /dev/lp4 gemountet so das ich den usb/lpt port auch an meinen Test PC ansteuern kann auf den Router klappt es einfach so da ist der Port auch an der richtigen Stelle gemountet |
Anmeldungsdatum: Beiträge: 1279 |
pmgzed schrieb:
Hast du auch ein 'flush' hinterher gejagt? Bei USB ist ein intelligenter Bus dazwischen, der wird nicht einfach jedes einzelne Zeichen ohne weitere Erkenntnis raushauen. pmgzed schrieb:
ich vermute, Handshake-Signale sind "zufällig" verstubbelt. Was hängt da als Gerät am Port? pmgzed schrieb:
Steht ja da: da ist ein test.bin und hat einen Syntax-Error auf Zeile 3 - zumindest merkt er es auf Zeile 3 pmgzed schrieb:
Da wird nix "gemountet". Die Devices werden vom Kernel erkannt und von ihm bekommen die einen Namen. /dev/usb/lp0 ist nicht dasselbe wir /dev/lp0. Die Idee, man könne das einfach "umbenennen" und dann wird es funktionieren, läuft ins Leere. Das USB-Ding hat ja auch einen anderen Treiber, weil es andere Kommunikationsarten verwendet. Das Verhalten kann nie perfekt 100% gleich sein (wie bereits oben erwähnt, ist da ja ein intelligenter Bus dazwischen, der kann nicht einfach Zeichen raus hauen, ohne dass er andere in der Performance dramatisch einschränken würde - man bedenke, dass da ja vom blöden Parallel-Port bis zur schnellen Platte, alles dran hängen kann) |
![]() Anmeldungsdatum: Beiträge: 7174 Wohnort: Wolfen (S-A) |
Hi pmgzed, der Zugriff auf das Device /dev/lp* oder /dev/usb/lp* ist in der Tat das was du tun solltest. Alles andere unterläuft das Betriebssystem und bringt mehr oder weniger sicher Probleme. Über ioctl() und Konsorten kann man mit solch einem Device auch viel mehr machen als es nur beschreiben und lesen, darüber läuft u.a. der gesamte Handshake (auf Betriebssystem-Ebene). LG, track |
(Themenstarter)
Anmeldungsdatum: Beiträge: 173 |
Hi track ich habe das ganze jetzt mit dem ioctl ausprobiert diews klapt aber nur mit /dev/parport und nicht mit /dev/lp auf den Router habe och leider kein /dev/parport was ist den eigentlich jetzt der unterschied zwichen /devlp0 und /dev/parport0 auf meine PC habe ich beides beim router nicht? @theinlein ja habe fflush benutzt nochmal wegen den Syntax-Error auf Zeile 3 - zumindest merkt er es auf Zeile 3 der code schaut so aus #include <iostream> int main() { printf("test"); } wüsste nicht was an zeile 3 falsch sein sollte?^^ möcht mich noch bei euch allen bedanken das ihr so viel gedult mitbringt ☺ |
Anmeldungsdatum: Beiträge: 1279 |
Das ist womöglich was im include falsch oder zwischen include und main ist noch etwas in der Zeile was er nicht verkraftet ? 'lp' steht eigentlich für 'line printer'. Da ist ja i.d.R. noch eine Vorverarbeitung für Durcker angeklemmt. Wenn parport 'parallel port' bedeutet, klingt das logisch. mach mal lsmod | grep parport |