Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

[RH7.2] LPT aansturen

shoekie
25 antwoorden
  • Ey,

    Hoe kan ik mijn printerport (LPT1/LPT2 ; H378/H278) aansturen vanuit een linux shell of een C-programmaatje?
    Ik wil dus gewoon de waarde 0 tot 255 of 00000000 tot 11111111 naar de LPT poort kunnen verzenden, input enzo is dus niet nodig.

    GRTZ,

    René
  • Door te schrijven naar /dev/lp0 of /dev/lp1 alsof het een bestand is.

    BTW
    Je sig klopt niet, ik mis een soort mensen:

    00
    Mensen die het niet snappen

    01
    Mensen die het wel snappen

    10
    ?

    :D
  • Dus bijvoorbeeld:

    echo 255 > /dev/lp0

    P.S.: Sig klopt wel.. :p
  • Ik zou cat gebruiken, maar in princiepe ja.

    ey
    Je sig klopt nog steeds niet, jij bent dus type 00? ;)

    00, 01 en 10 zijn 3 waarden.
  • ok… thnx.. ga het meteen uitproberen…

    En over de sig.

    Er zijn 10 (dus 2) soorten mensen, mensen die binary begrijpen en mensen die het niet begrijpen…
  • In het jaar kruik hebben ze in India het getal nul al uitgevonden.
  • [quote:bab7501c6a="Bilbo"]In het jaar kruik hebben ze in India het getal nul al uitgevonden.[/quote:bab7501c6a]

    Dit begrijp ik ff niet. Kweet dat in (Centraal-/ of Zuid)-India de 0 is uitgevonden, maar dat is niet echt relevant hierbij. Het 10 staat in het binaire getallen stelsel voor zover ik weet voor 2

    0000=0
    0001=1
    0010=2
    0100=4
    1000=8
    enz.

    Of zit ik er nu naast?

    P.S.: 't is allemaal wel beetje of-topic.. .:p
  • Nee dat heb je goed….. maar binair 00 is 0…….denk maar eens na over een aray waarvan het laatste element soort[2] is…… hoeveel soorten zijn er dan? Nagenoeg alles in de computer wereld is "zero based" - behalve in VB geloof ik maar ken het niet zo goed - en dan vergeet jij dus dat er een soort[0] is.

    PS
    Ook die printerpoorten van jou zijn "zero based" ;)
  • Tsja.. daar heb jij weer gelijk in. In je array zijn er idd 3 soorten, maar aangezien dit niet om een array gaat en het maar een simpel signature is reken ik het hier goed. bij degene die het binaire getallenstelsel begrijpen, zullen ongetwijfeld het wel begrijpen.
  • [quote:82dd53277d="Bilbo"]Nee dat heb je goed….. maar binair 00 is 0…….denk maar eens na over een aray waarvan het laatste element soort[2] is…… hoeveel soorten zijn er dan? Nagenoeg alles in de computer wereld is "zero based" - behalve in VB geloof ik maar ken het niet zo goed - en dan vergeet jij dus dat er een soort[0] is.
    [/quote:82dd53277d]
    Dat is op zich waar, maar volledig irrelevant.

    Als ik jou 2 taart punten geef, dan heb je er toch echt maar twee, niet (0, 1 & 2).

    10 is de binaire representatie van 2 decimaal.

    Als je het over twee entries in een index hebt, kunnen dat [0] en [1] zijn, maar evengoed [1] en [2] of [63] en [497].
  • Ach er wordt een geintje gemaakt met een getallen stelsel…… dan is het toch ok als je de boel wat complexer maakt? Per slot van rekening mag je nooit vergeten dat iets wel eens "zero based" zou kunnen zijn. Je krijgt dan bv een echt probleem als die printer bijvoorbeeld op "lpt1" zit van een linux bak (als dat al zou kunnen).
  • Weer ff terug naar de topic. Het zit nl. zo: Ik wil d.m.v. 8 ledjes die op m'n printerpoort aangesloten zitten de status van m'n systeem snel kunnen bekijken (bv.: doet internet verbinding het? ja -> laat lampje 1 branden)

    Dan zou dus 'echo 2 > /dev/lp0' het moeten doen neem ik aan (want 00000010=2). Maar dat doet het dus niet.
    Alleen het 5e lampje brandt (of het 4e lampje als ik ze omdraai, weet nl niet meer welke pin 1 is) al vanaf het moment dat ik de lampjes op de computer heb aangesloten.

    Hoe zou jij Biblio het met cat doen. Want als ik 'cat 1 > /dev/lp0' intik probeert ie natuurlijk het bestand 1 te lezen die niet bestaat.
  • Je zou eens een kijkje moeten nemen op http://nedlinux.nl/~pascal Pascal heeft eens zitten klooien met juist dat soort dingen. Wellicht dat hij er wat over staan heeft.
  • Yep op http://home.nedlinux.nl/~pascal/lptdrv.pdf
  • Ik denk niet dat je mag aannemen dat 2 00000010 is.

    [code:1:796ae1867e]
    $ echo 2 > test.txt
    $ cat test.txt
    2
    $ hd test.txt
    00000000 32 0a |2.|
    00000002
    [/code:1:796ae1867e]

    Als je 0x32 en 0x0a opzoekt in een ascii tabel, vind je "2" en new line resp.

    Misschien heb ik het helemaal verkeerd, maar volgens mij is het niet zo simpel als je in je laatste bericht weergeeft om die blinkenlights aan de praat te krijgen.

    edit: eerste commando moet echo zijn, niet cat
  • [quote:3ba09f8a01="robian"]Ik denk niet dat je mag aannemen dat 2 00000010 is.

    [code:1:3ba09f8a01]
    $ echo 2 > test.txt
    $ cat test.txt
    2
    $ hd test.txt
    00000000 32 0a |2.|
    00000002
    [/code:1:3ba09f8a01]

    Als je 0x32 en 0x0a opzoekt in een ascii tabel, vind je "2" en new line resp.

    Misschien heb ik het helemaal verkeerd, maar volgens mij is het niet zo simpel als je in je laatste bericht weergeeft om die blinkenlights aan de praat te krijgen.

    edit: eerste commando moet echo zijn, niet cat[/quote:3ba09f8a01]

    Hmmz… Je kan wel gelijk hebben, maar ik denk niet in deze situatie. Als je je nou eens voorstelt dat elk getal voor een lampje staat. 8 lampjes, dus 8 getallen. Als alle acht lampjes uit zijn betekent het dus dat alle 8 getallen 0 moeten zijn. Alle 8 lampjes aan betekent alle 8 getallen zijn 1.
    Omgerekend: 00000000=0 en 11111111=255
    Wanneer ik lampje twee wil aanschakelen is dat in binaire getallen 0000010. Omgerekend zou ik dus het getal 2 naar de lpt poort moeten sturen.
    Zo werkt het iig wel onder windows, maar of het onder linux ook zou is weet ik niet zeker. Begin er ook nog maar net mee
  • [quote:a3e44a8d22="shoekie"]
    Omgerekend zou ik dus het getal 2 naar de lpt poort moeten sturen.
    Zo werkt het iig wel onder windows, maar of het onder linux ook zou is weet ik niet zeker. Begin er ook nog maar net mee[/quote:a3e44a8d22]

    Nee je wil 00000010 naar de printer poort sturen. Dat is niet hetzelfde als 2.

    Eigenlijk komen wij terug bij de discussie over je signature. Die bitreeks is weliswaar een binaraire representatie van int 2 (er moeten dan nog wel wat nullen bij), maar met "echo 2" stuur je niet die bitreeks naar de printer poort.

    Overigens heb ik geen ervaring met dit soort werk, ik spreek slechts uit de kennis die ik denk te hebben over programmeren.
  • Wat je naar de printer zou moeten sturen is ASCII teken 2, maar dan blijf je wel met die newln ziitten
  • [quote:e5d90dcb77="Bilbo"]Wat je naar de printer zou moeten sturen is ASCII teken 2, maar dan blijf je wel met die newln ziitten[/quote:e5d90dcb77]
    Die newline kun je middels echo weglaten (echo -n).

    Echter het gaat juist niet om het teken 2 (00110010, 0x32). Het gaat erom dat er de byte 00000010 wordt gestuurd.

    Wat moest je doen in Windows om het werkend te krijgen. Gebruikte je een programma of kon je vanuit een command-prompt rechtstreeks de leds aansturen?
  • Ik gebruikte daarvoor een dll (Win95io.dll) die ik via een collega van m'n vader heb gegregen. Hierin zaten een aantal subroutines.
    Om iets naar buiten te sturen moest je deze dll in een VB progje laden en dan met de functie 'vbOut nData, nPort' (waarbij nData=0 tot 255 en nPort=&H378 of &h278).
    Ik denk dat ik al weet waar je naar toe wilt. De kans is nl. aanzienlijk dat de dll de waarde variabele nData naar een andere waarde 'omrekend'. In dat geval moet je dus niet getal tussen de 0 en de 255 naar /dev/lp0 sturen, want die kan daar gewoon niet mee.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.