![[Contents]](../images/toc_d.gif) 
 ![[Index]](../images/index.gif) 
 ![[Help]](../images/help_d.gif) 
 ![[Retrace]](../images/retrace_d.gif) 
 ![[Browse <]](../images/prev.gif) 
 ![[Browse >]](../images/next.gif) 
You read from the parallel device by passing an ioextpar to the device with cmd_read set in io_command, the number of bytes to be read set in io_Length and the address of the read buffer set in io_Data. #define READ_BUFFER_SIZE 256 /* Reserve SIZE bytes of storage */ char ParallelReadBuffer[READ_BUFFER_SIZE]; ParallelIO->IOPar.io_Length = READ_BUFFER_SIZE; ParallelIO->IOPar.io_Data = (APTR)&ParallelReadBuffer[0]; ParallelIO->IOPar.io_Command = CMD_READ; DoIO((struct IORequest *)ParallelIO); If you use this example, your task will be put to sleep waiting until the parallel device reads 256 bytes (or terminates early). Early termination can be caused by error conditions.