![]() |
![]() |
|
![]() |
||||||||||||||||||
![]() |
![]() |
![]() |
||||||||||||||||
|
![]() |
|
![]() |
|
||||||||||||||
![]() |
![]() |
Класс CSerialPort - интерфейс обмена данными с последовательным портом / Ввод/Вывод / Система. Общее |
![]() |
Класс CSerialPort v1.03 - интерфейс обмена данными с последовательным портом.Автор: PJ Naughter Скачать исходник - 18 Kb Добро пожаловать в MFC класс CSerialPort, который позволяет осуществлять любые операции с последовательным портом. В Классе имеется довольно большой набор функций. Расширенные возможности
Использование
Краткий пример использования класса: try { CSerialPort port; port.Open(1, 1200, CSerialPort::NoParity, 8, CSerialPort::OneStopBit, CSerialPort::XonXoffFlowControl); char sBuf[] = "This should appear on the serial port"; port.Write(sBuf, strlen(sBuf)); port.Flush(); port.Close(); } catch (CSerialException* pEx) { TRACE(_T("Handle Exception, Message:%s\n"), pEx->GetErrorMessage()); pEx->Delete(); } Функции, содержащиеся в классеCSerialException::CSerialException
CSerialException::CSerialExceptionCSerialException( DWORD dwError = 0); Parameters dwError Ошибка, которая вызвада исключение. Remarks Данная функция вызывается, если создан объект CSerialException. To throw a CSerialException, call the global function AfxThrowSerialException. If you call if using the default value for dwError, then internally it will call GetLastError for you.
CSerialException::GetErrorMessagevirtual BOOL GetErrorMessage( LPTSTR lpszError, UINT nMaxError,
PUINT pnHelpContext = NULL ); Return Value 1) Ненулевое, если функция выполнилась успешно; иначе 0, если текстовое сообщение не доступно. 2) CString представление ошибки Parameters lpszError указатель на буфер, который будет содержать сообщение об ошибке. nMaxError The maximum number of characters the buffer can hold, including the NULL terminator. pnHelpContext The address of a UINT that will receive the help context ID. If NULL, no ID will be returned. Remarks Call this member function to provide text about an error that has occurred.
CSerialException::m_dwErrorRemarks The error that caused the exception. This error value is a system error code as found in WINERROR.H. For a list of Win32 error codes, see Error Codes in the Win32 SDK.
CSerialPort::CSerialPortCSerialPort(); Remarks Стандартный конструктор класса. Устанавливает переменные класса в значения по умолчанию.
CSerialPort::~CSerialPort~CSerialPort(); Remarks Стандартный деструктор класса. Закрывает порт, если он был открыт.
CSerialException::Openvoid Open( int nPort, DWORD dwBaud = 9600, Parity parity
= NoParity, BYTE DataBits = 8, StopBits stopbits =
OneStopBit, FlowControl fc = NoFlowControl, BOOL bOverlapped =
FALSE); Parameters nPort Номер порт, который будет открыт. dwBaud Скорость порта в бодах parity Контроль чётности. Может принимать следующие значения: enum Parity Databits Количество бит данных stopbits Количество стоповых бит. Может принимать следующие значения: enum StopBits fc Метод использующийся для контроля потока данных. Может принимать след. значения: enum FlowControl bOverlapped TRUE если Вы хотите открыть в режиме overlapped, иначе FALSE для использования блокирующих вызовов. Remarks Функция открывает коммуникационный порт. Внутри класса, для открытия порта, будет использоваться функция CreateFile , а затем SetState для установления различных установок RS-232 . При возникновении ошибки, сработает CSerialException
CSerialPort::CloseClose(); Remarks Закрывает уже открытый коммуникационный порт.
CSerialPort::Attachvoid Attach(HANDLE hComm); Parameters hComm SDK обработчик открытого порта. Remarks Позволяет приаттачить экземпляр CSerialPort к существующему обработчику коммуникационного порта. Данная функция работает подобно CWnd::Attach в MFC.
CSerialPort::DetachHANDLE Detach(); Return Value HANDLE порта. Remarks Делает обратное действие предыдущей функции Attach. Соответственно работает аналогично MFC функции CWnd::Detach.
CSerialPort::operator HANDLEoperator HANDLE(); Return Value HANDLE порта. Remarks Позволяет получить обработчик порта. Можно использовать это хэндл для вызова Windows API напрямую
CSerialPort::IsOpenBOOL IsOpen() const Return Value TRUE если порт открыт, иначе FALSE
CSerialPort::Dumpvoid Dump(CDumpContext& dc) const Remarks Стандартная функция MFC для диагностики
CSerialPort::Read \ ReadExDWORD Read(void* lpBuf, DWORD dwCount); Return Value 1) Количество прочитанных байт. 2) TRUE если overlapped чтение завершилось синхронно, FALSE если операция завершилась асинхронно. Parameters lpBuf Указатель на буфер, куда будут считаны данные из последовательного порта dwCount Указывает количество байт, которые надо считать из последовательного порта. overlapped ссылка на структуру OVERLAPPED. Необходимо, если порт был открыт в режиме overlapped. Remarks Эти 3 функции являются надстройками над SDK вызовами ReadFile и ReadFileEx. Вторая версия функции Read для режима overlapped.
CSerialPort::Write \ WriteExDWORD Write(const void* lpBuf, DWORD dwCount); Return Value 1) Количество записанных байт. 2) TRUE если overlapped запись завершилась синхронно, FALSE если операция завершилась асинхронно. Parameters lpBuf Указатель на буфер, содержащий данные для записи в последовательный порт dwCount Указывает количество байт, которые надо записать в последовательный порт. overlapped ссылка на структуру OVERLAPPED. Необходимо, если порт был открыт в режиме overlapped. Remarks Эти 3 функции являются надстройками над SDK вызовами WriteFile и WriteFileEx. Вторая версия функции Write для режима overlapped.
CSerialPort::TransmitCharvoid TransmitChar(char cChar) const Remarks Простая надстройка для SDK функции TransmitCommChar. Смотрите Win32 SDK для подробной информации.
CSerialPort::GetOverlappedResultvoid GetOverlappedResult(OVERLAPPED& overlapped, DWORD& dwBytesTransferred,
BOOL bWait) Remarks Простая надстройка для SDK функции GetOverlappedResult. Смотрите Win32 SDK для подробной информации.
CSerialPort::CancelIovoid CancelIo() Remarks Простая надстройка для SDK функции CancelIo. Смотрите Win32 SDK для подробной информации. Данная функция доступна только в NT 4 или Windows 98 или выше.
CSerialPort::GetConfigvoid GetConfig(COMMCONFIG& config) Remarks Простая надстройка для SDK функции GetCommConfig. Смотрите Win32 SDK для подробной информации.
CSerialPort::GetDefaultConfigstatic void GetDefaultConfig(int nPort, COMMCONFIG& config) Remarks Простая надстройка для SDK функции GetDefaultCommConfig. Смотрите Win32 SDK для подробной информации.
CSerialPort::SetConfigvoid SetConfig(COMMCONFIG& config) Remarks Простая надстройка для SDK функции SetCommConfig. Смотрите Win32 SDK для подробной информации.
CSerialPort::SetDefaultConfigstatic void SetDefaultConfig(int nPort, COMMCONFIG& config) Remarks Простая надстройка для SDK функции SetDefaultCommConfig. Смотрите Win32 SDK для подробной информации.
CSerialPort::ClearBreakvoid ClearBreak() Remarks Простая надстройка для SDK функции ClearCommBreak. Смотрите Win32 SDK для подробной информации.
CSerialPort::SetBreakvoid SetBreak() Remarks Простая надстройка для SDK функции SetCommBreak. Смотрите Win32 SDK для подробной информации.
CSerialPort::ClearErrorvoid ClearError(DWORD& dwErrors) Remarks Простая надстройка для SDK функции ClearCommError. Смотрите Win32 SDK для подробной информации.
CSerialPort::GetStatusvoid GetStatus(COMMSTAT& stat) Remarks Простая надстройка для SDK функции GetCommStatus. Смотрите Win32 SDK для подробной информации.
CSerialPort::GetStatevoid GetState(DCB& dcb) Remarks Простая надстройка для SDK функции GetCommState. Смотрите Win32 SDK для подробной информации.
CSerialPort::SetStatevoid SetState(DCB& dcb) Remarks Простая надстройка для SDK функции SetCommState. Смотрите Win32 SDK для подробной информации.
CSerialPort::Escapevoid Escape(DWORD dwFunc) Remarks Простая надстройка для SDK функции EscapeCommFunction. Смотрите Win32 SDK для подробной информации.
CSerialPort::ClearDTRvoid ClearDTR() Remarks Calls the Escape function using the constant CLRDTR which lowers the DTR line.
CSerialPort::ClearRTSvoid ClearRTS() Remarks Calls the Escape function using the constant CLRRTS which lowers the RTS line.
CSerialPort::SetDTRvoid SetDTR() Remarks Calls the Escape function using the constant SETDTR which raises the DTR line.
CSerialPort::SetRTSvoid SetRTS() Remarks Calls the Escape function using the constant SETRTS which raises the RTS line.
CSerialPort::SetXOFFvoid SetXOFF() Remarks Calls the Escape function using the constant SETXOFF which causes transmission to act as if an XOFF character has been received..
CSerialPort::SetXONvoid SetXON() Remarks Calls the Escape function using the constant SETXON which causes transmission to act as if an XON character has been received..
CSerialPort::GetPropertiesvoid GetProperties(COMMPROP& properties) Remarks Простая надстройка для SDK функции GetCommProperties. Смотрите Win32 SDK для подробной информации.
CSerialPort::GetModemStatusvoid GetModemStatus(DWORD& dwModemStatus) Remarks Простая надстройка для SDK функции GetCommModemStatus. Смотрите Win32 SDK для подробной информации.
CSerialPort::SetTimeoutsvoid SetTimeouts(COMMTIMEOUTS& timeouts) Remarks Простая надстройка для SDK функции SetCommTimeouts. Смотрите Win32 SDK для подробной информации.
CSerialPort::GetTimeoutsvoid GetTimeouts(COMMTIMEOUTS& timeouts) Remarks Простая надстройка для SDK функции GetCommTimeouts. Смотрите Win32 SDK для подробной информации.
CSerialPort::Set0Timeoutvoid Set0Timeout() Remarks Устанавливает тайм аут посылки с приёма в 0. This cause writes to return immediately and for reads to return with whatever data is waiting in the receive buffer rather than wait for the specified amount of bytes to arrive.
CSerialPort::Set0WriteTimeoutvoid Set0WriteTimeout() Remarks Устанавливает передающий тайм аут в 0.
CSerialPort::Set0ReadTimeoutvoid Set0ReadTimeout() Remarks Устанавливает тайм аут считывания в 0. This cause reads to return with whatever data is waiting in the receive buffer rather than wait for the specified amount of bytes to arrive.
CSerialPort::SetMaskvoid SetMask(DWORD dwMask) Remarks Простая надстройка для SDK функции SetCommMask. Смотрите Win32 SDK для подробной информации.
CSerialPort::GetMaskvoid GetMask(DWORD& dwMask) Remarks Простая надстройка для SDK функции GetCommMask. Смотрите Win32 SDK для подробной информации.
CSerialPort::WaitEventvoid WaitEvent(DWORD& dwMask) Remarks Простая надстройка для SDK функции WaitCommEvent. Вторая WaitEvent это overlapped версия. Смотрите Win32 SDK для подробной информации.
CSerialPort::Flushvoid Flush() Remarks Простая надстройка для SDK функции FlushFileBuffers. Смотрите Win32 SDK для подробной информации.
CSerialPort::Purgevoid Purge(DWORD dwFlags) Remarks Простая надстройка для SDK функции PurgeComm. Смотрите Win32 SDK для подробной информации.
CSerialPort::TerminateOutstandingWritesvoid TerminateOutstandingWrites() Remarks Calls the Purge function using the constant PURGE_TXABORT which terminates all outstanding write operations and returns immediately, even if the write operations have not been completed.
CSerialPort::TerminateOutstandingReadsvoid TerminateOutstandingReads() Remarks Calls the Purge function using the constant PURGE_RXABORT which terminates all outstanding read operations and returns immediately, even if the read operations have not been completed.
CSerialPort::ClearWriteBuffervoid ClearWriteBuffer() Remarks Очищает выходной буфер, используя константу PURGE_TXCLEAR..
CSerialPort::ClearReadBuffervoid ClearReadBuffer() Remarks Очищает входной буфер, используя константу PURGE_RXCLEAR..
CSerialPort::Setupvoid Setup(DWORD dwInQueue, DWORD dwOutQueue) Remarks Простая надстройка для SDK функции SetupComm. Смотрите Win32 SDK для подробной информации.
CSerialPort::OnCompletionvirtual void OnCompletion(DWORD dwErrorCode, DWORD dwCount,
LPOVERLAPPED lpOverlapped); Parameters dwErrorCode Specifies the I/O completion status. This parameter may be one of the following values:
dwCount Указывает на количество переданных байт. Если ошибка, то этот параметр - ноль lpOverlapped Указательна на структуру OVERLAPPED , определённую для ассинхронных I/O функций. Remarks Данная функция вызывается, как процедура завершения для различных ассинхронных вызовов в WriteEx или ReadEx. В Вашем наследованном от CSerialPort классе, Вы можете определить собственную функцию для реакции на ассинхронные вызовы.
|
![]() |
![]() |
![]() |
|