Функция 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.