SerialPort类连接串口

一、VC6.0下,建立MFC(.exe)工程。

图1:建立工程

二、引入类文件:

1、把SerialPort.cpp和SerialPort.h文件复制到工程目录文件夹内。

2、点击"工程"菜单,“添加工程”子目录的“Files”子项。

3、选取工程目录文件夹内的SerialPort.cpp和SerialPort.h文件,点击确定按钮。

查看FileView视图内,已经成功添加相关类文件。

4、在SerialPortTestDlg.h文件内添加语句,引入SerialPort类。

/*----------------------------------------- *SerialPortTestDlg.h文件 *---------------------------------------*/ #include"SerialPort.h"//添加CSerailPort类的头文件

三、声明类对象和接口状态变量。

  1. /*-----------------------------------------
  2. *SerialPortTestDlg.h文件
  3. *---------------------------------------*/
  4. classCSerialPortTestDlg:publicCDialog
  5. {
  6. //Construction
  7. public:
  8. CSerialPortm_SerialPort;//CSerailPort类对象
  9. BOOLm_bSerialPortOpened;//标志串口是否打开
  10. //自动生成代码省略……
  11. protected:
  12. //自动生成代码省略……
  13. };

四、界面设计和初始化代码。

1、设计界面

图2:设计界面

2、修改控件的ID,名称如图3所示。

3、添加控制变量:

“查看”菜单,进入“建立类向导”,弹出对话框,添加控件变量,如图3所示。

图3:添加控制变量

4、系统初始化代码

  1. /*-----------------------------------------
  2. *SerialPortTestDlg.cpp文件
  3. *---------------------------------------*/
  4. BOOLCSerialPortTestDlg::OnInitDialog()
  5. {
  6. CDialog::OnInitDialog();
  7. //TODO:Addextrainitializationhere
  8. /*-------------------------------------------------
  9. *初始化
  10. *-------------------------------------------------*/
  11. m_ctrlComboComPort.SetCurSel(0);//初始选择串口1
  12. //以下两句分别设置“打开串口”、“关闭串口”两个按状态的使能状态
  13. GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);
  14. GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened);
  15. returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
  16. }

五、连接串口。

  1. /*-------------------------------------------------
  2. *打开串口
  3. *-------------------------------------------------*/
  4. voidCSerialPortTestDlg::OnButtonOpen()
  5. {
  6. //TODO:Addyourcontrolnotificationhandlercodehere
  7. intnPort=m_ctrlComboComPort.GetCurSel()+1;//得到串口号,想想为什么要加1
  8. if(m_SerialPort.InitPort(this,nPort,9600,'N',8,1,EV_RXFLAG|EV_RXCHAR,512))
  9. {//能正确打开串口
  10. m_SerialPort.StartMonitoring();
  11. m_bSerialPortOpened=TRUE;
  12. }
  13. else//不能正确打开串口时
  14. {
  15. AfxMessageBox("没有发现此串口或被占用");
  16. m_bSerialPortOpened=FALSE;
  17. }
  18. //按钮可用和不可用处理
  19. GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);
  20. GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened);
  21. }

六、断开串口。

  1. /*-------------------------------------------------
  2. *关闭串口
  3. *-------------------------------------------------*/
  4. voidCSerialPortTestDlg::OnButtonClose()
  5. {
  6. //TODO:Addyourcontrolnotificationhandlercodehere
  7. m_SerialPort.ClosePort();//关闭串口
  8. m_bSerialPortOpened=FALSE;
  9. //按钮可用和不可用处理
  10. GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);
  11. GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened);
  12. }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值