Re: [PARPORT] port doesn't hold states

From: filip (
Date: Fri Apr 11 2003 - 20:56:47 EDT

  • Next message: filip: "Re: [PARPORT] port doesn't hold states"


    Thank you very much for the replay,

    Blaise Gassend <>:
    >If your board is acknowledging the byte it is sent, there is no reason
    >for the parallel port to hold the byte that it is sending. Have you
    >tried not acknowledging?

    How I can not acknowledge?

    >If you just want to set byte on the port, you could use /dev/parport or
    >libieee1284 which would allow you to write the data without worrying
    >about the control bits.

    I used someones code and wrote simple program useing /dev/parport:

    cat port.cpp

    #include <sys/ioctl.h>
    #include <linux/ppdev.h>
    #include <linux/parport.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <errno.h>
    #include <stdio.h>
    #include <sys/time.h>
    #include <string.h>
    #include <stdlib.h>
    #include <iostream.h>

    #define PortName "/dev/parport0"

    int main()
      int desc;
      int buffer;
      int stat;
      unsigned char zz=0,ff=0xff;

      desc = open(PortName,O_RDWR);
      if(desc < 0)
              return -1;

      stat = ioctl(desc,PPCLAIM);
      if(stat) {
              return -1;

      buffer = IEEE1284_MODE_BYTE;

      stat = ioctl(desc,PPSETMODE,&buffer);
      if(stat) {
              return -1;

      for(;;) {
              stat = ioctl(desc,PPWDATA,&zz);
              if(stat) return stat;
              cout << "0x00" << endl;
              stat = ioctl(desc,PPWDATA,&ff);
              if(stat) return stat;
              cout << "0xff" << endl;


    I checked, it works on some machines (generates square on pins - 0.5 Hz, 50%),
    but not on this one with main board:

    Maybe it is a problem with configuration of parport?
    Why it doesn't holt bytes under Linux, but holds under FreeBSD and WinXP?

    I would be grateful for some more suggestions,


    >Quoted from filip on Fri, Apr 11, 2003 at 11:03:32PM +0200.
    >> I want to use /dev/lp0 (lp module) on my PC for controlling
    >> external devices.
    >> The problem is when I wtire 1 byte to /dev/lp0, paralel port
    >> holds this state just for a few ms - if I write to /dev/lp0 0x00
    >> pins change to LOW for a moment, and then some of the returns to HIGH
    >> and some stay LOW.
    >> (I made special plug - so the is no problem with handshake - details on:
    >> lsmod
    >> lp 8864 0 (unused)
    >> parport_pc 18724 1 (autoclean)
    >> parport 34208 1 (autoclean) [lp parport_pc]
    >> cat /proc/sys/dev/parport/parport0/modes
    >> In bios (Setup) I have set SPP mode.
    >> The problem is on this PC on RH7.3 and also on Slackware9.0
    >> but on FreeBSD everything is OK (on FreeBSD I use /dev/lpt0).
    >> It is strange because everything works corect on
    >> my old PC (Pentium160).
    >> Can you help?
    >> Regards,
    >> Filip

    -- To unsubscribe, send mail to: --
    -- with the single word "unsubscribe" in the body of the message. --

    This archive was generated by hypermail 2b29 : Fri Apr 11 2003 - 21:02:05 EDT