一种高效DSO波形显示算法的实现

时间:2011-07-26来源:网络

首先,声明一个wavebuff类型的指针pdl,pdl指向封装采样数据的链表。如果示波器仅有一个通道处于工作状态,则pdl→next指向NULL;如果双通道同时工作,则将激活状态的通道数据封装于链表的头结点,next指向封装另一通道数据的结点。以链表的方式封装数据,灵活方便,节省内存,扩展性强,如果有其他功能需求可以自由扩展链表长度。波形需要由经过处理的采样值构造系列直线段逼近得到。直线段的参数由CLINE类型的数据结构封装。遮蔽分析主要是为了在两通道同时工作的情况下,尽量减少画点。清屏和绘图分析是为了将待擦除线段与待绘制线段进行比较,重复线段保留,多余线段擦除,进一步达到减少画点的目的。
c.JPG
2.1 构造绘图线段
画波形函数是由画点函数按照一定的算法写出的,不同的算法绘制波形在速度和效果上会有所不同。波形显示算法要求达到波形粗细均匀,连续,绘制的速度快。示波器每屏显示600个离散数据。如果仅是将经处理后的采样离散数据在LCD对应的位置画出点来,波形不是连续的,而是离散的点,且看起来不清晰。构造绘图线段的作用就是根据相邻离散数据的大小关系得到绘制连续波形的一系列直线段的上下端点数值,流程图如图3所示。其方法如下:定义一个wavebuff类型的指针pdl。如果当前点的值大于与之相邻的下一点的值即pdl→buff[i]>pdl→buff[i+1],那么当前点所对应的直线段的上端点值hi=pdl→buff[i],下端点值lo=pdl→buff[i+1]+1;如果pdl→buff[i]pdl→buff[i+1],则hi=pdl→buff[i+1]-1,lo=pdl→buff[i];如果pdl→buff[i]=pdl→buff[i+1],则hi=lo=buff[i]。这样,离散的点就被一系列直线段所代替,构成连续的波形。波形的显示区域有一定范围,d_limit是显示区域的下边界值;u_limit是上边界值;如果整个直线段都超出上下界的范围,整个直线段将被舍去,不显示。如果直线段仅是下端超出下边界,那么直线段的下端值就被赋为下边界的值;同理,相反情况下,直线段的上端值就被赋为上边界的值。

d.JPG

1 2 3

关键词: 算法 实现 显示 波形 DSO 高效

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版