最简单的Modem(无线网卡)程序

源代码在线查看: 在vc上应用mscomm控件轻松搞定串口编程.txt

软件大小: 356 K
上传用户: angela5683
关键词: Modem 无线网卡 程序
下载地址: 免注册下载 普通下载 VIP

相关代码

				在VC上应用mscomm控件轻松搞定串口编程
				关键词: activeX                                           
				
				/////对应的工程是 test_mscomm.rar(在我的网络u盘,
				
				
				以下演示的是在MFC利用mscomm进行串口编程的例子
				
				1。建立mfc工程,都会撒。  
				   将控件加进来:打开“Project->Add To Project->Components and Controls->Registered Activex Controls”,然后选择控件:Microsoft Communication Control,version 6.0插入到当前的工程中。这样就将类 CMSComm 的相关文件 mscomm.cpp 和 mscomm.h 一并加入到了工程中。编程时只需将控件对话中的 MSComm 控件拖至你的应用对话框中就OK了
				
				2。定义串口对象:
				    CMSComm      m_MSComm;
				
				3。串口初始化:
				   
				DWORD style=WS_VISIBLE;
				m_MSComm.Create(NULL,style,CRect(0,0,0,0),this,IDC_MSCOMM);
				if(m_MSComm.GetPortOpen()) //如果串口是打开的,则行关闭串口
				{
				 m_MSComm.SetPortOpen(FALSE);
				}
				m_MSComm.SetCommPort(1); //选择COM1
				m_MSComm.SetInBufferSize(1024); //接收缓冲区
				m_MSComm.SetOutBufferSize(1024);//发送缓冲区
				m_MSComm.SetInputLen(0);//设置当前接收区数据长度为0,表示全部读取
				m_MSComm.SetInputMode(1);//以二进制方式读写数据
				m_MSComm.SetRThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
				m_MSComm.SetSettings("9600,n,8,1");//波特率9600无检验位,8个数据位,1个停止位
				if(!m_MSComm.GetPortOpen())//如果串口没有打开则打开
				 m_MSComm.SetPortOpen(TRUE);//打开串口
				else
				{
				 m_MSComm.SetOutBufferCount(0);
				 AfxMessageBox("Open The Serial Port 1 Failurre!");
				}
				
				
				4。串口数据读写:
				
				  MSComm 类的读写函数比较简单:GetInput()和SetOutput()。函数原形分别为VARIANT GetInput()和void SetOutput(const VARIANT newValue),均使用VARIANT类型。但PC机发送和接收数据时习惯用字符串形式。MSDN中查阅VARIANT类型,可以用BSTR表示字符串,但所有的BSTR都包含宽字符,而只有Windows NT支持宽字符,Windows 9X并不支持。所以要完成一个适应各平台的串口应用程序必须解决这个问题。这里使用CbyteArray即可解决之。
				
				
				发数据:在对话框对加入 按钮 控件并给你添加消息
				   void CTest_mscommDlg::OnSend() 
				{
				 // TODO: Add your control notification handler code here
				 int i,Count;
				 CString m_SendData;
				 m_SendData="Hello!"; 
				 Count=m_SendData.GetLength();
				 CByteArray m_Array;
				 
				 m_Array.RemoveAll();
				 m_Array.SetSize(Count);
				 
				 for(i=0;i  m_Array.SetAt(i,m_SendData[i]);
				 m_MSComm.SetOutput(COleVariant(m_Array));
				
				}
				
				
				收数据:给串口控件添加消息 
				void CTest_mscommDlg::OnOnCommMscomm() 
				{
				 VARIANT m_input;
				 char *str,*str1;
				 int k,nEvent,i;
				 CString str2,m_RcvData;
				 nEvent=m_MSComm.GetCommEvent();
				 switch(nEvent)
				 {
				 case 2:
				  k=m_MSComm.GetInBufferCount();     //接收缓冲区的字符数目
				  if(k>0)
				  {
				   m_input=m_MSComm.GetInput();
				   str=(char*)(unsigned char*)m_input.parray->pvData;
				  }
				  i=0;
				  str1=str;
				  while(i  {
				   i++;
				   str1++;
				  }
				  *str1='\0';                              
				  str2=(const char*)str;             //清除字符串中的不必要字符
				  m_RcvData=(const char *)str;
				 }
				 //数据显示处理
				
				m_disp+=m_RcvData;
				
				UpdateData(false);
				
				}
				
				以上程序在vc6。0编译通过,在2个pc机上测试通过。
				
				
							

相关资源