如何使用MScomm控件
来源:互联网 发布:mysql自动备份数据库 编辑:程序博客网 时间:2024/05/16 00:56
作者:flydream0
转自:http://blog.csdn.net/flydream0/article/details/8029590
1:如果添加MSComm控件?
见:http://blog.csdn.net/flydream0/article/details/8002012
2:为对话框添加MSComm控件成员变量
右击MSComm控件,然后选择Add Variable...
3:为对话框添加OnComm事件
右击MSComm控件,然后选择Add Event Handle..
4:打开/关闭串口.
- void Ctbox_debug_viewDlg::OnBnClickedBtOpen()
- {
- // TODO: Add your control notification handler code here
- if(m_mscomm.get_PortOpen())
- {
- m_mscomm.put_PortOpen(FALSE);
- GetDlgItem(IDC_BT_OPEN)->SetWindowText(_T("打开"));
- ShowInfo(_T("关闭串口成功!"));
- m_OpenStatus =false;
- return;
- }
- UpdateData(TRUE);
- m_OpenStatus =true;
- //当前端口号
- m_mscomm.put_CommPort(m_Port+1);//端口号
- m_mscomm.put_InBufferSize(1024);//接收缓冲区
- m_mscomm.put_OutBufferSize(1024);//发送缓冲区
- m_mscomm.put_InputLen(0);//设置当前接收区数据长度为0,表示全部读取
- m_mscomm.put_InputMode(1);//以二进制方式读写数据
- m_mscomm.put_RThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
- //波特率
- DWORD baudrate;
- switch(m_CombolBaudrate.GetCurSel())
- {
- case 0:
- baudrate =115200;
- break;
- case 1:
- baudrate =9600;
- break;
- default:
- ASSERT(FALSE);
- break;
- }
- CString setting;
- setting.Format(_T("%d,n,8,1"),baudrate);
- m_mscomm.put_Settings(setting/*_T("115200,n,8,1")*/);//波特率,无校验,8个数据位,1个停止1位
- m_mscomm.put_PortOpen(TRUE);//打开串口
- GetDlgItem(IDC_BT_OPEN)->SetWindowText(_T("关闭"));
- ShowInfo(_T("打开串口成功!"));
- }
5:接收串口数据
- void Ctbox_debug_viewDlg::OnCommMscomm1()
- {
- // TODO: Add your message handler code here
- short curEvent =m_mscomm.get_CommEvent();
- switch(curEvent)
- {
- case CMscomm1::comEvReceive:
- EvReceiveHandle();
- break;
- }
- }
- void Ctbox_debug_viewDlg::EvReceiveHandle(void)
- {
- static unsigned int cnt=0;
- VARIANT variant_inp;
- COleSafeArray safearray_inp;
- long len,k;
- /*unsigned intdata[1024]={0};*/
- BYTE rxdata[1024];//设置BYTE数组
- CString strtemp;
- cnt++;
- variant_inp= m_mscomm.get_Input();//读取缓冲区
- safearray_inp= variant_inp;//变量转换
- len= safearray_inp.GetOneDimSize();//得到有效的数据长度
- for (k=0;k<len;k++)
- {
- safearray_inp.GetElement(&k,rxdata+k);
- }
- /*char c_char; */
- for (k=0;k<len;k++)
- {
- strtemp.Format(_T("%c"),*(rxdata+k));
- m_RecveString +=strtemp;
- if(*(rxdata+k) =='\n')
- {
- ShowInfoByFilter(m_RecveString);
- m_RecveString ="";
- }
- }
- }
6:发送串口数据
- void Ctbox_debug_viewDlg::OnBnClickedBtSend()
- {
- // TODO: Add your control notification handler code here
- if(m_OpenStatus ==false)
- {
- AfxMessageBox(_T("请先打开串口"));
- return;
- }
- UpdateData(TRUE);
- if(m_SendString.IsEmpty())
- return;
- if(m_AutoAddLF)
- {
- m_SendString +="\r\n";
- }
- m_mscomm.put_Output(COleVariant(m_SendString));
- ShowInfo(m_SendString);
- }
- 如何使用MScomm控件
- 如何使用MScomm控件
- 如何使用MScomm控件
- C++ builder 中如何使用Mscomm控件
- 如何使用串口通信控件Mscomm
- MSComm控件使用详解
- MSComm控件使用详解
- MSComm控件使用详解
- MSComm控件使用详解
- MSComm控件使用详解
- MSComm控件使用
- MSComm控件的使用
- MSComm控件使用详解
- VS2008使用MSComm控件
- MSComm控件使用详解
- MSComm控件使用详解
- mscomm控件使用详解
- 如何使用mscomm串口控件在.net中编程
- 【Android】获取当前连接的wifi IP地址
- php 解决Notice: Undefined index:
- 黑马程序员--函数
- linux性能之iostat
- Android开发——MediaProvider源码分析(1)
- 如何使用MScomm控件
- HDU4631(杭电2013多校第三场1011)
- Lucene介绍
- 如何在安装部署时实现注册MSComm控件
- HDU 4544
- 为什么要始终使用PreparedStatement代替Statement
- java之容器
- Unity3D MonoDevelop 编辑器背景色设置
- ARM中的RO段、RW段和ZI段的区别