关于串口接受数据并实时绘制波形的疑问

问题描述

关于串口接受数据并实时绘制波形的疑问

想用单片机采集心电数据,并通过串口将数据实时传输给上位机并显示心电波形,用VC++编写界面。
问题1:假设单片机设置采样率为250Hz,串口通信需要时间,1s内通过串口助手接受的数据小于250个,这是不是不能保证数据的实时性呢?
问题2:数据传输间隔比较短,来一个数据就画一次图,波形是不是变化很快?看了网上的例子,通过定时器定时取串口接收的数据并画图,画的数据不是该时刻串口接收数据,而且不是所有串口接收的数据都能画出来,这样是不是就会造成波形失真呢?
求给一下思路,谁有例子可以供参考啊?

解决方案

单片机以固定的频率向串口发送数据,上位机定时读取串口数据,串口的数据会缓存的,你不用担心读取不到,或者丢失。只要你读取的频率和单片机发送的频率能配合上,就不用担心你所说的不实时的问题。
最后,在这里,波形失真,与通讯无关,与你怎么获取和绘制这些数据有关。

解决方案二:

在数据的准确性和实时性之间做一个平衡

解决方案三:

用mschart控件,或者自己绘图。

时间: 2024-10-27 19:27:46

关于串口接受数据并实时绘制波形的疑问的相关文章

mfc-MFC串口数据绘制波形图,如何将WPARAM 型的数据作为纵坐标绘制随时间变化的波形图呢,求代码

问题描述 MFC串口数据绘制波形图,如何将WPARAM 型的数据作为纵坐标绘制随时间变化的波形图呢,求代码 我的纵坐标是-400到400,怎么确定纵坐标,求代码,急急急,拜托了 解决方案 lz前一个问题记得及时采纳.这里,你的wapram应该是消息的一个参数,关键看消息的发出方怎么定义的. 解决方案二: 直接类型转换把坐标的数据转成WPARAM,消息收到后,再类型转换回来

c++-为什么串口在接受数据的时候 其余按键都不起作用了

问题描述 为什么串口在接受数据的时候 其余按键都不起作用了 void CSCommTestDlg::OnButtonOpen() { SelectCom(); SelsectSpeed(); //m_ctrlComm.SetCommPort(m_iCom); //串口1 m_ctrlComm.SetInBufferSize(1024); //设置输入缓冲区的大小,Bytes m_ctrlComm.SetOutBufferSize(512); //设置输入缓冲区的大小,Bytes m_ctrlCo

内存-我把串口接受的数据放到数组里面进行处理,

问题描述 我把串口接受的数据放到数组里面进行处理, 现在遇到一个问题,这个串口可能会不停工作,工作一天以上,这样的话这个数组应该怎么动态申请内存呢 解决方案 new或者malloc,但是也可以不动态申请,固定一个缓冲区.就你的需求,没必要动态申请 解决方案二: 申请多少内容,不是根据工作多少时间,无是根据接收到多少数据量! 如果数据量不大,就可以一次完成内存申请:如果数据量不确定,就必须采用动态分配 ralloc & reralloc 的方法.

串口接受的十六进制数据如何赋值给int型的变量呢

问题描述 串口接受的十六进制数据如何赋值给int型的变量呢 我定义一个int变量 int h=0:接受的一个串口数据为WPARAM ch,我想把这个ch赋值给h,h=(int)ch:这样为什么不可以呢,也就是我想要把接受到的00变为int型的0,01变为1 应该怎么转换呢 解决方案 你用的什么编译器?我用vc2010编译可以通过. 解决方案二: 我也觉得可以,你输出下wparam,是不是没有获取到值 解决方案三: 试试sprintf()函数 解决方案四: 通过串口,你最好先将数字转成字符串,如

串口读取数据如何以表格形式实时显示

问题描述 各位,本人纯菜鸟,刚接触C#没几天,想要用串口读取下位机数据并在上位机上以表格形式显示,类似下图所示的.在网上看了看,有的说是要用datagridview还要连接数据库,但是不太明确实施的步骤.请教各位指点一下思路,比如应该用什么控件,先干什么,后干什么等等,先谢过. 解决方案 解决方案二:1.连接串口采集数据2.将采集到的数据整理存储到datatable3.将datatable绑定到datagridview解决方案三:首先你得会串口最简单的也要通过DataReceived把需要的数据

缓存-关于串口接收数据缓冲问题

问题描述 关于串口接收数据缓冲问题 我用串口测试实时接收一个2k采样率的正弦波并显示波形,不管是我自己写的程序还是Labview 都出现了同一个问题,就是一开始波形的频率是对的,然后我进入中断一会,回来继续接收数据 感觉波形被压缩了一样,突然来了一大堆数据,过一会就会恢复正常.这是缓存区哪里的问题呢?接收缓冲,传输缓冲? 解决方案 接收缓冲吧,数据没被处理. 解决方案二: 在中断时,串口设备还在不断的发送数据: 中断结束,恢复正常时:接收缓存区有一大堆数据,这时你有两种处理方式: 1.把这些数据

实时大数据存储-实时大数据写入数据库

问题描述 实时大数据写入数据库 项目:IOCP的多线程(工作线程)解析大量客户端发送过来的数据:这个数据量是非常大的,上千个客户端,每50MS发送一个数据包过来,要把他们写入数据库.以下是我做的两种设计,均不能成功. 1.简单地通过程序一条一条地执行SQL语句写入数据库,失败,效率极低,淘汰. 2.我目前的处理是把这个SQL语句做一个拼接(...+SQL语句+;+SQL 语句+:+...),然后一并执行,写入数据库,但是这么设计的话,内存会一直涨,因为写入数据库的速率小于IOCP解析出来的数据所

mfc-基于MFC的对话框绘制波形

问题描述 基于MFC的对话框绘制波形 现有一个txt的文本文件,里面存放着16进制的数据,MFC怎么获取这个数据并绘制出动态的波形 解决方案 MFC绘制有背景图像的对话框 解决方案二: http://download.csdn.net/download/tianyu524/1110247 解决方案三: CFile类打开读出文件,CDC类绘制窗口.

串口通信-android蓝牙串口接收数据

问题描述 android蓝牙串口接收数据 最近在做android手机蓝牙和单片机通信,一直被接收数据完整性这个问题困扰. 为了使一次通信的包保持完整,我就构思了发送12位的包,包头(1)+数据(8)+校验(2)+包尾(1),校验为求和校验.单片机发送数据的函数如下 void SendString(uchar *dat) //发送12位的包 包头(1)+数据(8)+校验(2)+包尾(1) { uchar i,j; uint check=0; //求和校验 SendChar(0x01); //0x0