Serial.cpp
上传用户:zhouf86
上传日期:2013-02-16
资源大小:244k
文件大小:1k
源码类别:

串口编程

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include <conio.h>
  3. #define WM_COMM WM_USER+100;
  4. class CCOM
  5. {
  6. public:
  7. char readbyte();
  8. void sendbyte(unsigned char sdata);
  9. void sendstrn(CString mess);
  10. void initcom(int PORT=0x2f8);//串口初始化子程序
  11. int port;
  12. };
  13. char CCOM::readbyte()//接收字符子程序
  14. {
  15. int time_limit=50000;
  16. char sta;
  17. while ((sta=inp(port+5) & 0x01) !=1)
  18. { time_limit--;
  19. if (time_limit==0)
  20. return 0;
  21. }
  22. //AfxGetMainWnd()->SendMessage(WM_COMM);
  23. return inp(port);
  24. }
  25. void CCOM::sendbyte(unsigned char sdata)//发送字符子程序
  26. {
  27. int time_limit=50000;
  28. while ((inp(port+5) & 0xf0) != 0x60)
  29. { time_limit--;
  30. if (time_limit==0) break;
  31. }
  32. outp(port,sdata);
  33. }
  34. void CCOM::sendstrn(CString mess)
  35. {
  36. int i,j=mess.GetLength();
  37. for (i=0;i<j; i++)
  38. sendbyte(mess[i]);
  39. /*sendbyte(0X0A); */
  40. }
  41. void CCOM::initcom(int PORT)//串口初始化子程序
  42. {
  43. char i;
  44. outp(PORT+3,0x80);
  45. outp(PORT,0x0C); /* baud rate 9600 */
  46. outp(PORT+1,0);
  47. /*8bit 1stop no even */
  48. outp(PORT+3 ,0x3a);
  49. outp(PORT+3 ,0x03); 
  50. i=inp(PORT+5) & 0xfe; 
  51. outp(PORT+5,i);
  52. }