The ASYNC_GETCOMMSTATUS function get the transmission status of the specified COM port. This function has no parameter packet.
The following code fragment uses the ASYNC_GETCOMMSTATUS function to get the transmission status of COM1:
#define INCL_DOSFILEMGR /* File System values */
#define INCL_DOSDEVIOCTL /* DosDevIOCtl values */
#include <os2.h>
HFILE hf; /* File handle for the device */
UCHAR ucStatus; /* The COM port status byte */
ULONG ulStatusLen; /* Length of status (the data packet) */
ULONG ulAction; /* Action taken by DosOpen */
APIRET rc; /* Return code */
rc = DosOpen("COM1", &hf, &ulAction, 0,
FILE_NORMAL, FILE_OPEN,
OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE,
(PEAOP2) NULL);
rc = DosDevIOCtl(hf, /* Device handle */
IOCTL_ASYNC, /* Serial-device control */
ASYNC_GETCOMMSTATUS, /* Get the COM status byte */
NULL, /* No parameter packet */
0, /* Maximum size of parameter packet */
NULL, /* Length of parameter packet */
(PULONG) &ucStatus, /* Data packet */
sizeof(ucStatus), /* Maximum size of data packet */
&ulStatusLen); /* Length of data packet */
.
. /* Use the COM port here. */
.
rc = DosClose(hf);