Модемы и факс-модемы. Программирование для MS-DOS и Windows

       

Функция WriteComm


Функция WriteComm записывает символы в выходную очередь COM-порта. Прототип функции представлен ниже:

int WriteComm(    int idComDev, const void FAR* lpvBuf,

                                           

int cbWrite);

Параметр idComDev содержит идентификатор COM-порта, используемого для передачи данных.

Параметр lpvBuf является дальним указателем на буфер, содержащий передаваемые данные.

Последний параметр функции cbWrite определяет количество символов в буфере lpvBuf, предназначенных для передачи.

        Обратите внимание на то, что значение параметра cbWrite не должно быть больше, чем размер буфера lpvBuf

В случае успешного выполнения функции возвращаемое ей значение определяет количество символов, записанное в выходную очередь COM-порта. Если во время выполнения функции произошла ошибка, функция возвращает отрицательное значение. Абсолютное значение возвращаемой величины определяет количество символов, успешно записанных в выходную очередь.

В случае возникновения ошибки ее причину можно выяснить с помощью функции GetCommError.

Если в очереди передатчика недостаточно места, функция WriteComm может удалить данные из этой очереди. Поэтому перед вызовом функции WriteComm приложение должно проверить наличие достаточного свободного пространства в очереди передатчика. Для этого следует воспользоваться функцией GetCommError.

При открытии COM-порта функцией OpenComm следует указать размер выходной очереди не меньше, чем максимальный предполагаемый размер передаваемых строк.

В качестве примера использования функции WriteComm мы приводим исходный текст функции WriteCommChar, записывающей в выходную очередь один символ:

//==========================================================



// Функция WriteCommChar

//==========================================================

BOOL WriteCommChar(int nPortID, int nChar)

{

     

int iErr = 0;

     

iErr = WriteComm(nPortID, (LPSTR)&nChar, 1))

     

if(iErr != 1)

     

{

            

GetCommError(nPortID, NULL);

            

return FALSE;

     

}

     

return TRUE;

}

В качестве первого параметра функции WriteCommChar передается идентификатор COM-порта, в который необходимо передать символ. Второй параметр должен содержать код передаваемого символа.

Функция WriteCommChar вызывает функцию WriteComm и пытается записать в выходную очередь COM-порта один символ.

Если WriteComm возвращает единицу, значит символ успешно записан и функция WriteCommChar возвращает значение TRUE. В противном случае для того чтобы сбросить флаги ошибок вызывается функция GetCommError и WriteCommChar возвращает FALSE.



Содержание раздела