MFC/基于对话框的MFC上位机串口通信(C++实现)简单例程

首先,在  vs2008  环境下创建  MFC  运用程序
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
设置项目名称为  ComTest (这个地方随意命名,根据个人习惯),点击确定后, 点击下一步
出现如下界面
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
选择“基于对话框”模式然后直接点击完成即可(其他选项按默认方式),点击完成后出现如下界面
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
解决资源管理器中自动给你生成好代码目录(可点击菜单栏“视图”选项打开解决方案资源管理器),如下图所示
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
我们再次回到对话框编辑窗口,删除自动生产的控件(静态文本控件、确定和取消按钮控件),并在工具箱里添加两个button按钮和编辑框,之后的界面如下图所示:
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
然后把最重要的串口通信控件加入到工具箱中,因为默认的工具箱是不带 MS 串口通信控件的。添加方法如下:在工具箱界面点击鼠标右键出现如下界面:
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
然后点击选择项出现如下界面,然后选择“COM 组件”
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
找到并选中该项
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
最后点击确定键,就成功添加 MS 串口通讯控件了,工具箱中就会出现串口控件图标了
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
我们吧串口控件添加到对话框里,位置随意,运行的时候是看不见的,所以最终界面是这样子的
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程

下面开始添加变量,首先 IDC_MSCOMM1 添加控制变量: m_ctrlComm ,在串口通信图标上右键点击选择添加变量,如图:
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
完成就可以了,控件ID和类别是可以选的,下面为按钮和编辑框添加变量时选不同的就行了。
两个编辑框,一个用于接收显示数据ID设置IDC_EDIT_RXDATA(在控件属性框里设置),另一个用于输入发送数据,ID设置IDC_EDIT_TXDATA,两岸按钮,一个用于发送数据,将其ID设为IDC_BUTTON_MANUALSEND,另一个用于清空接收的编辑框,ID默认就行,不再赘述。

 接着添加变量,为IDC_EDIT_RXDATA添加CString变量m_strRXData, 为IDC_EDIT_TXDATA添加CString变量m_strTXData。说 明: m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。方法同上面添加串口控制变量一样,选择控件ID和类型即可,如图:
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
添加串口事件消息处理函数OnComm()
回到对话框编辑界面,鼠标左键点击串口控件按钮,然后在对应的属性栏,点击闪电按钮(控件事件)
[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程

[转载]VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
添加串口事件消息处理函数,并将函数名改为OnComm,在上图中所示位置改就行。
我们在OnComm()函数加入相 应的处理代码就能实现自已想要的功能了。请你在函数中加入如下代码:

void CSCommDlg::OnComm()
{
// TODO: 在此处添加消息处理程序代码
VARIANT variant_inp;       
COleSafeArray safearray_inp;       
LONG len,k;     
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.       
CString strtemp;       
if(m_ctrlComm.get_CommEvent()==2) //事件值为2表示接收缓冲区内有字符       
{                 
  以下你可以根据自己的通信协议加入处理代码 
            variant_inp=m_ctrlComm.get_Input(); //读缓冲区  
            safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
            len=safearray_inp.GetOneDimSize(); //得到有效数据长度           
   for(k=0;k<len;k++)                   
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组             
for(k=0;k<len;k++)                              //将数组转换为Cstring型变量     
         {                
               BYTE bt=*(char*)(rxdata+k);//字符型        
               strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放    
此处编译有错误,可在项目属性->配置属性->常规里将“字符集”改为使用多字节字符集即可
               m_strRXData+=strtemp; //加入接收编辑框对应字符串        
           }
     }       
     UpdateData(FALSE); //更新编辑框内容 
}


打开串口和设置串口参数 
你可以在你需要的时候打开串口,例如在程序中做一个开始按钮,在该按钮的处理函数中打开串口。现在我们在主对话框的 CSCommTestDlg::OnInitDialog() 打开串口,找到 // TODO: Add extra initialization here,并在下面 加入如下代码:   

// TODO: 在此添加额外的初始化代码
m_ctrlComm.put_CommPort(5);
//选择串口号5(笔记本没有串口,用的虚拟串口,可以使用软件vspd创建)
m_ctrlComm.put_PortOpen(TRUE);
//打开串口
m_ctrlComm.put_RThreshold(2);
//收到两个字节引发OnComm事件
m_ctrlComm.put_InputMode(1);
//输入模式选为二进制
m_ctrlComm.put_Settings(_T("9600,n,8,1"));
//设置串口参数,波特率,无奇偶校验,位停止位,位数据位
m_ctrlComm.put_InputMode(1);   // 以二进制方式检取数据 
m_ctrlComm.put_RThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 
m_ctrlComm.put_InputLen(0); //设置当前接收区数据长度为0 
m_ctrlComm.get_Input();//先预读缓冲区以清除残留数据  

发送数据
先为发送按钮添加一个单击消息即BN_CLICKED处理函数,方法和串口事件控制函数的添加方法一样(只不过是在实践中的 OnBnClickedButtonManualsend里添加 ),不再赘述, 在函数中添加如下代码:

// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);   //读取编辑框内容
m_ctrlComm.put_Output(COleVariant(m_strTXData)); //发送数据

运行程序,在发送编辑框中随意输入点什么,单击发送按钮,这时候在另一端的串口调试助手(或别的调试工具)接收框里就会有数据出现啦。

最后那个“清除接收框”的按钮还没有用到,为它添加点击触发时间,在函数里添加如下代码即可:
void CSCommDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
m_strRXData="";
UpdateData(FALSE);
}

这样简单的串口通信就基本完成了。


参考 http://blog.sina.com.cn/s/blog_b586ae640101py8d.html

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MFC串口助手上位机源码是一种用于控制串口操作的应用程序源码。MFC(Microsoft Foundation Class)是一种用于开发Windows应用程序的类库,串口助手上位机源码使用MFC框架实现串口通信的功能。 首先,该源码基于MFC的CSerialPort类来管理串口连接。它通过调用一系列函数来打开、关闭、配置串口,并提供了发送和接收数据的功能。这样,用户可以通过该上位机源码实现串口设备的通信。 其次,该上位机源码提供了图形化界面,使用者可以通过界面设置串口的参数,如波特率、数据位、停止位等。用户还可以在程序界面上输入要发送的数据,并通过点击发送按钮将数据发送到串口设备。同时,该上位机源码显示接收到的数据,并提供清除接收框的功能。 此外,该源码还提供了一些额外的功能,如保存接收到的数据到文件,以便之后的数据分析。用户还可以通过设置定时器来定时发送数据,以实现串口设备的交互操作。 总之,MFC串口助手上位机源码是一种基于MFC框架的应用程序源码,通过该源码实现了对串口设备的控制、数据的发送和接收,并提供了图形化界面和一些额外功能。用户可以根据自己的需求进行修改和拓展。 ### 回答2: MFC串口助手上位机的源码实际上是基于MFC(Microsoft Foundation Class)库开发的串口通信程序。该程序主要用于在计算机上与外部设备进行串口通信实现数据的接收和发送。 MFC串口助手上位机的源码通常包含以下几个主要部分: 1. 界面设计:通过MFC的图形界面设计工具,设计程序的主窗口和其他相关界面,包括显示接收到的数据、发送数据的输入框、串口配置参数等。 2. 串口通信功能:使用MFC提供的串口通信类,如CSerialPort,实现串口的打开、关闭、配置、发送和接收等功能。可以通过设定波特率、数据位、校验位和停止位等参数,与外部设备进行正常的串口通信。 3. 数据处理:根据实际需求,对接收到的数据进行解析和处理。例如,可以将接收到的数据显示在界面上,或者根据特定的数据格式进行解析,并进行相应的操作。 4. 扩展功能:根据实际需求,可以添加其他的功能,如数据保存、数据分析、数据转发等。这些功能可以通过界面上的按钮或菜单实现,或者通过添加相应的事件和函数实现MFC串口助手上位机的源码可以作为一个起点,根据具体需求进行修改和扩展。可以根据实际情况,适当调整界面设计,增加新的功能模块,甚至实现数据库或其他外部设备的交互等。 总之,MFC串口助手上位机的源码主要是为了提供一个基于MFC库的串口通信程序,方便用户与外部设备进行数据的交互和通信。使用该源码,可以快速构建并定制一个符合自己需求的串口通信应用程序。 ### 回答3: MFC串口助手上位机源码是一种用于控制串口设备的程序源代码。MFC(Microsoft Foundation Class)是微软公司的一种基于Windows的程序框架,用于开发Windows应用程序。上位机源码通常用于串口调试和控制领域,可以通过串口与下位机(嵌入式系统、传感器等)进行通信。 MFC串口助手上位机源码主要包括以下功能: 1. 串口参数设置:通过界面输入或下拉框选择,设置串口的波特率、数据位、停止位、校验位等参数。 2. 串口开关:通过按钮或复选框控制串口的打开和关闭,确保与下位机的连接状态。 3. 数据发送与接收:提供文本输入框或组合框,用户可以输入要发送的数据包或选择预定义命令。发送数据时,调用串口通信API将数据传输到下位机;接收数据时,监听并处理下位机返回的数据。 4. 数据显示:在用户界面上以文本窗口的形式实时显示发送和接收的数据,便于用户查看和分析通信过程。 5. 数据格式转换:对接收到的数据进行解析和转换,将原始数据转换为可读性高的格式,如16进制、ASCII码等。 6. 数据保存:提供文件保存按钮,允许用户将发送和接收的数据保存到本地计算机,用于后续分析和记录。 7. 快捷命令:通过添加快捷命令列表,用户可以保存常用命令,方便快速发送。 通过编写MFC串口助手上位机源码,我们可以实现串口设备的简单操作和控制,方便用户进行串口通信调试和数据收发。该源码可以根据具体需求进行定制和扩展,以满足不同应用场景下的串口通信需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值