闭串口 如果串口是打开的, 如果串口是打开的 m_MSComm.SetPortOpen(FALSE); m_MSComm.SetCommPort(2); //选择 COM2 选择 m_MSComm.SetInBufferSize(1024); //接收缓冲区 接收缓冲区 m_MSComm.SetOutBufferSize(1024); //发送缓冲区 发送缓冲区 m_MSComm.SetInputLen(0); //设置当前接收区数据长度为 0,表示全部 设置当前接收区数据长度为 表示全部 读取 m_MSComm.SetInputMode(1); //以二进制方式读写数据 以二进制方式读写数据 m_MSComm.SetRThreshold(5); //接收缓冲区有 5 个及 5 个以上字符时, 个以上字符时, 接收缓冲区有 将引发接收数据的 OnComm 事件 m_MSComm.SetSettings("9600,n,8,1"); //波特率:9600,无检验位,8 个数据位, 波特率: 波特率 ,无检验位, 个数据位, 1 个停止位 if(!m_MSComm.GetPortOpen()) //如果串口没有打开则打开 如果串口没有打开则打开 m_MSComm.SetPortOpen(TRUE); //打开串口 打开串口 else AfxMessageBox("Open Serial Port Failure!"); m_MSComm.GetInput(); //先预读缓冲区以清除残留数据 先预读缓冲区
以清除残留数据 return 0; } 5、 根据编程任务完成串口数据的读写并显示在视图中 、 代码如下; 代码如下 void CSDICommView::OnComm()
{ // TODO: Add your control notification handler code here VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata[2048]; //设置 BYTE 数组 设置 CString strtemp; CString strDisp; //用于显示接收数据 用于显示接收数据 if(m_MSComm.GetCommEvent()==2) { variant_inp=m_MSComm.GetInput(); //读缓冲区 读缓冲区 safearray_inp=variant_inp; //VARIANT 型变量转换为 ColeSafeArray 型变量 len=safearray_inp.GetOneDimSize(); //得到有效数据长度 得到有效数据长度 for(k=0;k
TextOut(200,100,"COM2 接收到:"+strDisp);//显示接收到的数据 接收到: 显示接收到的数据 ReleaseDC(pDC); strtemp.Format("OK,'%s' Received ",strDisp); m_MSComm.SetOutput(COleVariant(strtemp));//发送数据 发送数据 发送数 } } /////////////手工添加的代码结束 手工添加的代码结束//////////////////////////////////////////////////// 手工添加的代码结束
应用 MSComm 控件控制多个串口
任务: 任务:在基础对话框的 MFC 应用程序中应用 MSComm 控件编程实现对