You have been subscribed to a public bug:
This seems to be a failing driver problem.
Doing (C):
unsigned char r;
int hIO = open("/dev/usb/lp0",O_RDWR|O_NONBLOCK); // O_NONBLOCK doesn't
influence behaviour either
ioctl(hIO,PPRSTATUS,&r); // in a more-or-less tight loop
I wouldn't get the right state for the three available status bits of a
USB to parallel converter.
It seems that these bits are delayed, but even when I sleep(1) before ioctl(),
these bits are sometimes wrong.
The same code works perfectly on a true parallel port (/deb/lp0).
Notably, the data output {ioctl(hIO,PPWDATA,&wert)} works as expected.
However, the Windows version works fine on the same machine and the same
converter, on any Windows and any bitness, with a quite similar method:
unsigned char r;
OVERLAPPED o;
HANDLE hIO = OpenUsbPrn(PPort,FILE_FLAG_OVERLAPPED); // complicated
subroutine, see line 343 of:
// www-user.tu-chemnitz.de/~heha/viewzip.cgi/bastelecke/Rund um den
PC/EPROM-Simulator/PEPS-III/peps4win32.zip/src/sendiii.c?auton=C
DeviceIoControl(hIO,IOCTL_USBPRINT_GET_LPT_STATUS,NULL,0,&r,1,&br,&o)
everything works fine.
SUMMARY:
Release of Ubuntu:
Sorrily, the version of Ubuntu is not available. Same behaviour on i32 and
amd64 platforms.
Expected behaviour:
ioctl(hIO,PPRSTATUS,&r) should return the state of three (of five) LPT lines,
after some blocking (upto 1 ms) doing the frame-based USB control (Endpoint0)
transfer.
What happens:
This call seems to block too long (not measured), and returns wrong bits to r.
Even when I sleep() before this call, wrong bit values are returned.
** Affects: cups (Ubuntu)
Importance: Undecided
Status: New
** Tags: bot-comment
--
usb->parallel_printer status failure
https://bugs.launchpad.net/bugs/1156210
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to cups in Ubuntu.
--
Mailing list: https://launchpad.net/~desktop-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help : https://help.launchpad.net/ListHelp