第一章 界面: 1、建立工程,绘制界面: 、建立工程,绘制界面
2、修改对应控件的 ID,为相应控件添加变量 、 为相应控件添加变量
控件 发送按钮
ID IDC_BUTTON_MANUALSEND
对应控件变量
响应函数 CSCommTestDlg::OnButtonManualsend()
发送编辑框 IDC_EDIT_TXDATA 接收编辑框 IDC_EDIT_RXDATA IDC_MSCOMM1 对话框 IDD_SCOMMTEST_DIALOG
3、初始化串口“设置 MSComm 控件的属性 、初始化串口“ 打开 Class Wizard —>Member Varibles 页, 如下图, 选中控件 IDC_MSCOMM1, 再点击 【Add
Varialbe…】,在 CSCommTestDlg 类中为控件 IDC_MSCOMM1 添加 CMSComm 类型控 制变量 m_ctrlComm。
4、在 CSCommTestDlg::OnInitDialog()函数中写入多串口的初始化语句,串口初始化语句由
IDC_MSCOMM1 的 CMSComm 的控制变量 m_ctrlComm 来设置串口控件的属性。
代码如下: // TODO: Add extra initialization here,添加格外的初始化语句在这。 //初始化语句是程序开始运行的就运行的语句。 m_ctrlComm.SetCommPort(1); //选择 COM1 m_ctrlComm.SetInputMode(1); //输入方式为二进制方式 m_ctrlComm.SetInBufferSize(1024); //设置输入缓冲区大小 m_ctrlComm.SetOutBufferSize(512); //设置输出缓冲区大小 //波特率 9600,无校验,8 个数据位,1 个停止位 m_ctrlComm.SetSettings("9600,n,8,1"); if(!m_ctrlComm.GetPortOpen()) m_ctrlComm.SetPortOpen(TRUE);//打开串口 //参数 1 表示每当串口接收缓冲区中有多于 //或等于 1 个字符时将引发一个接收数据的 OnComm 事件 m_ctrlComm.SetRThreshold(1); m_ctrlComm.SetInputLen(0); //设置当前接收区数据长度为 0 m_ctrlComm.GetInput(); //先预读缓冲区以清除残留数据 return TRUE; // return TRUE 5、为 MSComm 控件添加响应函数 unless you set the focus to a control
当有串口事件发生时,程序调用响应函数来处理数据,如下图;
在 Message 中双击消息 OnComm( 或单击“Add Function”按钮),单击 ok,就 为串口添加了串口处理处理函数。 该函数的只要任务从串口接收数据并显示在接收编辑框中。 需要添加代码如下: void CSCommTestDlg::OnComm() { // TODO: Add your control notification handler code here VARIANT variant_inp; COleSafeArray safearray_inp;
LONG len,k; BYTE rxdata[2048]; //设置 BYTE 数组 CString strtemp; if(m_ctrlComm.GetCommEvent()==2) //事件值为 2 表示接收缓冲区内有字 符 { variant_inp=m_ctrlComm.GetInput(); //读缓冲区 safearray_inp=variant_inp; //VARIANT 型 变 量 转 换 为 ColeSafeArray 型变量 len=safearray_inp.GetOneDimSize(); //得到有效数据长度 for(k=0;k
tRXData 为控件接收编辑框对应的变量。 } UpdateData(FALSE); //更新编辑框内容 }
6、为发送按钮控件添加响应函数 、为发送按钮控件添加响应函数 为发送按钮控件添加一个单击 后处理函数,即 BN _CLICKED 处理函数,操作如下图:
双击 BN _CLICKED 添加 OnButtonManualsend()函数。 该函数的主要功能将发送编辑框中的内容发送大串口缓冲区 需要添加的函数如下: void CSCommTestDlg::OnButtonManualsend() //发送按钮控件 {
// TODO: Add your control notification handler code here UpdateData(TRUE); //读取编辑框内容 m_ctrlComm.SetOutput(COleVariant(m_strEditTXData));//发送数据 在测试程序时,一点要把硬件串口连上。
总结 利用 MSComm 控件进行串口编程的基本步骤
1、 在建立的工程中插入 MSComm 控件;