ComControl.h
上传用户:asikq0571
上传日期:2014-07-12
资源大小:528k
文件大小:2k
源码类别:

Internet/IE编程

开发平台:

Visual C++

  1. // ComControl.h: interface for the CComControl class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_COMCONTROL_H__ED00AC9E_EFAB_46E7_BDD3_18951E15DABF__INCLUDED_)
  5. #define AFX_COMCONTROL_H__ED00AC9E_EFAB_46E7_BDD3_18951E15DABF__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. //串口监测线程
  10. UINT ComThreadProc(LPVOID para);
  11. class CComControl : public CObject  
  12. {
  13. friend UINT ComThreadProc(LPVOID para);
  14. public:
  15. CComControl();
  16. virtual ~CComControl();
  17. public:
  18. virtual void Serialize(CArchive &ar);
  19. int                 m_nStopBits;    //停止位
  20. int                 m_nDataBits;    //数据位
  21. CString m_szPortName; //串口名
  22. int m_nBaudRate; //波特率
  23. int m_nParity; //校验方式
  24. HWND     m_hOwner;    //所有者窗口句柄,串口事件将通知此窗口
  25. HANDLE ComHandle() //串口句柄,通过该句柄,用户可以以自己的方式工作
  26. {
  27. return m_hCom;
  28. }
  29. DWORD BytesInQue(); //返回输入队列中字节数
  30. DWORD BytesOutQue(); //返回输出队列中字节数
  31. bool PortOpened() //返回端口是否是打开的
  32. {
  33. return m_hCom != INVALID_HANDLE_VALUE;
  34. }
  35. //打开关闭串口
  36. bool OpenPort(); //打开串口,一般先调用SetParam
  37. bool OpenPort(int nPortNo, DCB& dcb, COMMTIMEOUTS& timeouts); //直接用给定参数打开串口
  38. void ClosePort(); //关闭串口
  39. //设置参数
  40. void SetParam(); //通过对话框设置串口参数
  41. void SetParam(LPCTSTR szPortName, int nBaudRate, int nParity);
  42. //读写函数,他们将阻塞调用线程,直到成功或超时或发生错误
  43. BOOL Send(BYTE* pBuff, DWORD dwBytesToSend); //发送数据
  44. BOOL Send(BYTE* pBuff, DWORD dwBytesToSend, DWORD& dwBytesSended);
  45. BOOL Receive(BYTE* pBuff, DWORD dwBytesToRead); //接收数据
  46. BOOL Receive(BYTE* pBuff, DWORD dwBytesToRead, DWORD& dwBytesReaded);
  47. //清除串口缓冲区和错误标志
  48. void ClearPort();
  49. void ClearErr();
  50. private:
  51. HANDLE m_hCom; //端口句柄
  52. BOOL volatile m_bExit;
  53. CWinThread* m_pThread; //串口线程
  54. OVERLAPPED m_ovWrite; //用于发送的数据OVERLAPPED结构
  55. OVERLAPPED m_ovRead; //用于接收数据的OVERLAPPED结构
  56. //private function
  57. //init com object
  58. void InitCom();
  59. };
  60. #endif // !defined(AFX_COMCONTROL_H__ED00AC9E_EFAB_46E7_BDD3_18951E15DABF__INCLUDED_)