Get 一个显示界面,与数采串口通信

本文介绍了一种使用CR1000数据采集器进行数据收集的方法,该采集器每5秒采集一次数据并存储上传。数据采用TXT文档形式存储,并通过逗号分隔各字段,每个月创建一个新的文件以便于管理和后续分析。

  • 程序第一步:显示

***在这里插入图片描述

  • 数据来源,CR1000数据采集器,5秒采集并存储上传。


  • 第二步:存储


在这里插入图片描述

  • TXT文档存储,逗号分隔,每月创建一个新的文件,可以另存为excel文件进行分析。
使用MFC(Microsoft Foundation Classes)设计STM32单片机通信的串口程序,可按以下步骤进行: ### 创建MFC项目 打开Visual Studio,创建一个新的MFC应用程序项目。在向导中选择“基于对话框”的应用程序类型,然后完成项目创建。 ### 添加串口控件 在对话框资源编辑器中,从工具箱中拖放一个“MSComm”控件到对话框上。该控件用于串口通信。为该控件添加一个成员变量,可在控件上右键选择“添加变量”,按照向导完成变量添加,假设变量名为`m_ctrlComm`。 ### 编写串口初始化代码 在对话框类的适当位置(如按钮点击事件处理函数)编写串口初始化代码,示例如下: ```cpp void CMFCApplication2Dlg::OnBnClickedButton1() { // 若串口已打开,则先关闭 if (m_ctrlComm.get_PortOpen()) m_ctrlComm.put_PortOpen(FALSE); // 设置串口号,这里假设为COM4,需根据实际情况修改 m_ctrlComm.put_CommPort(4); // 打开串口 if (!m_ctrlComm.get_PortOpen()) { m_ctrlComm.put_PortOpen(TRUE); // 打开串口 AfxMessageBox(L" open serial port successfully"); } else AfxMessageBox(L"cannot open serial port"); // 设置串口通信参数,波特率9600,无校验,8个数据位,1个停止位 m_ctrlComm.put_Settings(L"9600,n,8,1"); // 以二进制方式检取数据 m_ctrlComm.put_InputMode(1); // 每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 m_ctrlComm.put_RThreshold(1); // 设置当前接收区数据长度为0 m_ctrlComm.put_InputLen(0); // 先预读缓冲区以清除残留数据 m_ctrlComm.get_Input(); } ``` ### 处理串口接收事件 为`MSComm`控件添加`OnComm`事件处理函数。在类视图中找到对话框类,右键选择“属性”,在属性窗口中选择“消息”,找到`OnComm`消息并添加处理函数。在处理函数中编写接收数据的代码,示例如下: ```cpp void CMFCApplication2Dlg::OnCommMscomm1() { 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(_T("%c"), bt); // 这里可以对接收到的数据进行处理,例如显示界面上 } } Invalidate(); } ``` ### 向STM32发送数据 编写发送数据的代码,示例如下: ```cpp void CMFCApplication2Dlg::SendDataToSTM32(CString strData) { if (m_ctrlComm.get_PortOpen()) { m_ctrlComm.put_Output(COleVariant(strData)); } } ``` ### 配置STM32单片机 在STM32单片机端,需要配置串口通信,包括设置波特率、数据位、停止位等参数,确保MFC程序中的设置一致。可以使用STM32的HAL库或标准库来实现串口通信。 ### 测试调试 编译并运行MFC程序,同时将STM32单片机连接到计算机的串口。通过MFC程序发送数据,观察STM32单片机的响应;或者在STM32单片机发送数据,观察MFC程序是否能正确接收。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值