玩转X-CTR100 | X-PrintfScope波形显示

更多塔克创新资讯欢迎登陆【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/

X-CTR100控制器配套的X-PrintfScope串口波形显示功能的使用,如其名,软件最大亮点是可以通过C语言Printf函数实现波形显示功能,使用简单灵活。另外也支持常规的串口通信协议,实现高效率传输。

原理介绍

X-CTR100控制器配套X-PrintfScope串口波形显示软件,具有八个显示通道,最大特点是可通过C标准库函数printf增加@标识实现数据波形显示,例如printf("@%d %f ",a,b)可实现一个整形一个浮点类型数据波形显示,使用方便灵活。Printf协议使用字符编码方式,虽然使用方便灵活,但传输效率相对较低,本软件也支持高效的Data协议传输方式。

X-PrintfScope基于功能强大的Iocomp控件设计,软件界面及功能介绍如下图所示,详细使用请参考软件帮助或软件使用说明文档,本教程对软件基本操作进行说明。

串口设置

- 软件启动后,会自动搜索可用的串口,并在端口号下拉框处显示可用串口。如果有可用串口单击"OPEN"按钮即可打开对应串口,并且显示串口状态和参数信息(S:COM3_ON 115200 N 8 1),串口参数为默认参数(波特率:115200,校验位:NONE,数据位:8,停止位1)。

- 多个可用串口时,端口号下拉框可选择和切换不同串口。

- 波特率下拉框可以选择不同波特率。

- SET按钮可以打开不常用的‘校验位‘‘数据位‘‘停止位‘串口参数设置对话框。

- 进入串口参数设置对话框可进行参数设置,完成后单击参数更新即可完成参数设置。考虑到常用情况,参数设置不具有记忆性,每次进入均显示常用的默认参数值。

- 不支持串口热插拔,热插拔会报错误,建议关闭串口后再进行串口插拔。

波形显示

- 具有八个波形显示通道,使用不同颜色表示

- 波形可以拖动、放大、缩小操作

- 示波器上方具有帧数和帧率显示

- 建议最大发送帧率为120,帧率与电脑显示性能有关,帧率过大容易导致波形显示延迟

- CLEAR按钮实现波形和数据清除

- VIEW按钮实现数据显示(待实现)

- SAVE按钮实现数据保存为txt格式文件,文件名默认为"xx月xx日xx时xx分xx秒_.txt",其中xx为当前时间,"_"后可增加内容字符描述。

- LOAD按钮可实现保存数据的波形显示(待实现)

- Axes栏X、Y滑动条可进行X轴和Y轴数据缩放操作

通道操作

- Channel栏SET按钮可实现波形通道相关操作,单击可进入通道设置对话框

- 通道设置对话框 Name栏可定义波形通道名称

- View复选框可控制该通道波形是否显示

- Scale栏为输出与输入的比例系数

- Shift栏为输出与输入的唯一系数

- Scale和Shift可以方便进行波形显示范围的控制,方便进行不同数量级波形同屏显示

Printf通信协议

- Printf协议:通过C语言Printf函数增加@标识实现数据波形显示。

- 显示示例函数:printf("@%d %d %f %f \r\n", a, b, x, y);,实际发送数据 @876 142 12.35 48.357

- @为帧头标识符,回车换行\r\n为帧尾标识符。

- @帧头后面紧跟数据。

- 每个数据后面加一个空格,作为数据标识符。

- 支持整型%d和浮点%f两种数据类型。

- 数据数量为1~8,几个数据对应几个显示通道

Data通信协议

- Data协议为高效率的数据编码协议,传输效率比Printf协议高。

- 协议内容:0xAA + 0x55 + 数据个数 + 预留位 + 数据1低8位 + 数据1高8位 + …… + 校验和。

- 数据个数:根据需要可以选择1~8,对应数据1~数据8。

- 预留位:0x00

- 数据内容:数据位为16进制整型数据,低8位在前,高8位在后。数据数量与前面数据个数位对应。

- 校验和:前面数据累加和的低8位。

- 范例:帧数据‘aa 55 03 00 43 fe 2a ff 74 ff df‘

发送功能

- 为方便系统调试,设计了数据发送功能,可实现下位机命令交互功能。

- 可以在Send区,发送您发送的任意字符。

- 支持16进制发送,勾选‘Hex‘复选框后,发送的时候将对发送区的内容进行16进制和字符互转。

- Num为发送的字节数。

例程-Printf协议例程

使用MPU6050作为数据源,使用C语言Printf函数实现对MPU6050传感器3轴加速度、3轴陀螺仪、温度数据7个数据源进行波形显示,其中加速度陀螺仪为整型数据,温度为浮点数据。

硬件说明

硬件资源:

  • 串口UART1
  • LED灯
  • MPU6050运动传感器

软件说明

通过MPU6050相关X-API接口进行数据采集,并将采集的数据通过printf函数输出,主程序代码如下。


int main(void)

{

float tmp;

int16_t acel[3];

int16_t gyro[3];

//XRT1初始化

AX_Init(115200);

//模块初始化及配置

AX_MPU6050_Init(); //MPU6050初始化

AX_MPU6050_SetAccRange(AX_ACC_RANGE_2G); //设置加速度量程

AX_MPU6050_SetGyroRange(AX_GYRO_RANGE_250); //设置陀螺仪量程

AX_MPU6050_SetGyroSmplRate(200); //设置陀螺仪采样率

AX_MPU6050_SetDLPF(AX_DLPF_ACC94_GYRO98); //设置低通滤波器带宽

while (1)

{

AX_MPU6050_GetAccData(acel); //读取三轴加速度数据

AX_MPU6050_GetGyroData(gyro); //读取三轴陀螺仪数据

tmp = AX_MPU6050_GetTempValue(); //读取温度传感器数据

printf("@%d %d %d %d %d %d %f \r\n",acel[0],acel[1],acel[2],gyro[0],gyro[1],gyro[2],tmp);

AX_Delayms(7);

AX_LEDG_Toggle();

}

}

实现效果

波形显示效果如下图所示,软件会自动对数据进行跟踪显示,本例程帧率可以达到90,方便观察数据可以拖动窗口到全屏显示。

使用串口助手查看数据内容,如下图所示。

原文地址:https://www.cnblogs.com/xtark/p/9251501.html

时间: 2024-11-09 01:37:04

玩转X-CTR100 | X-PrintfScope波形显示的相关文章

[转] 基于C#的波形显示控件的实现

转自 基于C#的波形显示控件的实现[附完整源码下载] 编者记: 09年暑假正好在学院实验室呆了一段时间,做了个完整的上位机软件(具体实现:根据下位机的指令,实现通过串口来操纵下位机进行实验,并将采集的数据进行处理和保存,并以图形的方式显示),整个项目边学C# WinForm边设计,这个波形显示控件就是项目中的一部分,也花了自己绝大多数时间.此外,顺便将该波形显示控件当作自己毕业设计的内容,下文实际上是节选自自己的本科毕业论文,希望对大家能有所帮助.代码以及文章有疏漏.错误.不妥之处在所难免,欢迎

C# 串口波形显示

C#做的串口示波器,可以实现动态波形显示的效果. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Text.

Modelsim设置数据以模拟波形显示

选中希望以模拟波形显示的信号,右击选择format->Analog(automatic) 如果你的数据是用无符号数表示一个完整的波形的,那么可能显示出来的波形样子是下面的样子,不过不要紧,这是因为modelsim默认是按照有符号数据解析波形数据的缘故,我们可以再进行一次设置修改. 选中希望显示波形的信号,右击,选择Radix->Unsigned. 设置完成后,波形就如下所示了: 是不是发现虽然波形已经是完整的正弦波了,但是波形有部分却跑到其他信号的地盘去了呢?这也不要紧,是模拟波形的显示范围设

modelsim仿真时让状态机波形显示状态的名字

在使用Verilog编写有限状态机等逻辑的时候,状态机的各个状态通常以参数表示(如IDLE等).当使用ModelSim仿真的时候,状态机变量在wave窗口中以二进制编码的形式显示,如下面所示,这种显示形式不是很直观,但我们可以使用ModelSim提供的命令将状态机变量以“文本”形式的参数名显示,从而有利于调试. 下面以一个实例来说明. 代码来源:http://www.cnblogs.com/oomusou/archive/2011/06/05/fsm_coding_style.html 源文件:

python 实现wav的波形显示(时域和频域)

音频处理中,经常要看一下啊频域图是什么样子的,这里自己写了一个小程序,可以完美的同步显示时域和频域图,直接上代码: 1 #wave data -xlxw 2 3 #import 4 import wave as we 5 import numpy as np 6 import matplotlib.pyplot as plt 7 import sys 8 9 def wavread(path): 10 wavfile = we.open(path,"rb") 11 params = w

51获取6050原始数据并通过匿名上位机显示波形

其实之前就用stm32获取过6050的原始数据,但是当时只是为了用而用,对他的理解并不深入,也不明白到底是怎么获得这些数据的. 这几天回归原始,通过STC89C52RC,再一次对6050进行驱动,并获取原始数据.经过几天的努力,现在其实感觉6050没有想象中的那么复杂,复杂的是后面对他的数据进行的滤波和姿态解算.获取数据其实就是对里面的一些寄存器进行配置.但是要求熟练掌握单片机的 IIC 通信协议.通信协议这东西其实看着很简单,但是实际用起来有很多细节方面的东旭需要注意.关于具体 IIC 的通信

调用CImg库显示WAV格式音频波形

在做傅里叶变换和小波变换时经常要通过显示波形来检验算法,但通过visual studio之类显示波形又显得麻烦,而且不能跨平台. CImg是一个跨平台的C++的图像处理库,提供的图像处理等功能十分强大,而且加入项目中十分轻便,只需将头文件包含在项目中即可,十分轻便. 可自行到http://www.cimg.eu/下载 利用它来在linux.Mac OS X中显示波形,再合适不过了,下面是音频波形显示的代码. 主函数 main.cpp #include <iostream> #include &

四轴飞行器1.4 姿态解算和Matlab实时姿态显示

原创文章,欢迎转载,转载请注明出处 MPU6050数据读取出来后,经过一个星期的努力,姿态解算和在matlab上的实时显示姿态终于完成了. 1:完成matlab的串口,并且实时通过波形显示数据 2:添加RTT查看CPU使用率的扩展功能,MPU6050读取数据的优化 3:四元素表示的坐标变化,四元素与欧拉角的关系和Madgwick的IMUupdate算法 4:飞控数据采集线程和数据处理线程的安排,类似于生产者与消费者的关系. 先放个效果视频... 如果看不了视频,请打开视屏网址:http://v.

C#用serialPort和chart控件实现简单波形绘制

先看最终的效果图: 主要实现功能是将串口发送过来的数据按波形显示 注:本例是以串口调试助手和虚拟串口VSPD软件模拟串口发送数据的,详细说明见下文 说明: serialPort的ReadByte()方法用于从System.IO.Ports.SerialPort输入缓冲区中同步读取一个字节. chart控件的spline为曲线图,以光滑的曲线连接各点. 几个代码块说明: (1) private void SearchAndAddSerialToCombobox(SerialPort Myport,