本帖最后由 麦穗 于 2018-8-17 08:58 编辑
简介顾名思义,虚拟示波器并不是真实的示波器,简单地说而是一款PC端开发的监控数据变化曲线的软件,与下位机进行通信。这种类型软件网上有很多,我现在推荐的是我前几年用的一款虚拟示波Data_Scope,在调试中起到了很大的帮助,感觉还不错,推荐给大家。用此软件可以监控速度变化曲线,角度变化曲线,AD值变化曲线等等,你想要监控的重要变量情况都可以。相比于串口调试助手,能以曲线形式更直观的显示变化情况。
使用说明基本原理虚拟示波器与串口调试助手一样,需要下位机将数据通过UART发送数据到上位机端,Data_Scope示波器需要库函数支持,主要作用是将要发送的数据打包成指定的协议格式发送出去。该示波器主持10通道监控,即支持测量10个变量的变化情况。软件界面如下:
使用方法1.将下载的库函数移植工程里。
2.通过如下函数SendDisplay调用显示。在SendDisplay中将需要发送的变量通过DataScope_Get_Channel_Data函数进行协议编写再发送,该函数形式为: DataScope_Get_Channel_Data(要发送的变量,发送显示的通道数)。
例子中仅对ADValue变量进行显示。若还需要显示其他变量可以对其相应的调用开启(一个通道只能显示一个变量) /*************************虚拟示波器调用显示******************** 功能说明:示波器发送函数* 说明: 针对STM32开发* 函数返回:*//**************************************************************/ void SendDisplay()
{
unsigned char i; //计数变量
unsigned char Send_Count; //串口需要发送的数据个数
DataScope_Get_Channel_Data( ADValue, 1 );
// DataScope_Get_Channel_Data(Value1, 2 );
// DataScope_Get_Channel_Data(Value2, 3 );
// DataScope_Get_Channel_Data( Value3, 4 );
// DataScope_Get_Channel_Data(Value4, 5 );
// DataScope_Get_Channel_Data(Value5, 6 );
// DataScope_Get_Channel_Data(Value6, 7 );
// DataScope_Get_Channel_Data( Value7, 8 );
// DataScope_Get_Channel_Data(Value8, 9 );
// DataScope_Get_Channel_Data(Value9, 10);
Send_Count = DataScope_Data_Generate(10); //生成10个通道的 格式化帧数据,返回帧数据长度
for( i = 0 ; i < Send_Count; i++) //循环发送,直到发送完毕
{
printf("%c",DataScope_OutPut_Buffer);//发送字符
}
delay_ms(50);//帧间隔时间。 不同场合情况可能不一样,建议实测为准。 }
几项注意(1)SendDisplay函数中的printf()为发送一个字符,如果不用printf,可以用自己带的寄存器或库函数编写。比如采用STM32,则printf( )可以用如下代替: while((USART1->SR&0X40)==0);//获取发送状态标志位(stm32) USART_SendData(USART1,DataScope_OutPut_Buffer);//发送数据 (2)发送完一帧数据包后必须要延时,这个延时根据不同场合可能不一样,需要实测。这个也是这款软件存在的一些缺点和不足,这种延时可能会占用系统时间而影响其他运行,可以通过定时器或实时操作系统等方法改善。
|