金牌会员
- 积分
- 2315
- 威望
- 1187
- 贡献
- 724
- 兑换币
- 706
- 注册时间
- 2012-9-13
- 在线时间
- 202 小时
- 毕业学校
- 曲阜师范大学
|
本帖最后由 垆边月晓 于 2018-5-22 14:54 编辑
小车调试时经常需要观察数据,常用的虚拟示波器有VisuaScope,匿名的地面站。visualscope操作方便,仅用鼠标就可以进行拖动和缩放,但是有波特率限制(破解版没有限制但兼容性不好)和通道限制(只能传输4通道,哪怕只用一组数据,也得把四个通道数据传完,非常占用CPU)。匿名的地面站功能很强大,通道数也很多,而且是免费的。但是个人觉得数据观察不太方便,不能任意缩放图像,只能按照选定窗口缩放,而且只可以放大不能缩小。为了更方便各位同学调试,把我写的分享一下。
该示波器有以下几个特点:
1.操作简单。仅用鼠标就可以操作界面:鼠标左键可以任意方向拖动图像,右键上下拖动可以分别缩放X、Y轴图像,滚轮整体缩放图像。双击鼠标自动跟踪波形。
2.点击图像任意位置可以在左下角显示坐标。
3.多达20个数据通道。如果数据量小,可以只用部分通道,节省串口传输时间。
4.最高波特率支持500000,com口可以任意
5.支持串口Hex和文本显示,可以缓存2^64字节数据。 6.免安装,直接打开运行。
附:
20通道数字示波器使用说明
Author:垆边月晓
通讯协议:
0xAA+0xAA+CMD+LEN+DATA0...+DATAx+SUM;
如:AA AA 01 0C 01 0A FF 9C 43 F9 4B 70 00 01 91 F5 85
其中,前两个字节AA是帧头,第三个字节0x01是帧命令CMD(CMD=0x01:通道1~通道10;CMD=0x02:通道11~通道20),
第四个字节0x0C是数据长度LEN,第五位至倒数第二位为数据,最后一位为和校验位。
和校验:从第一位到倒数第二位相加求和得到的一个字节作为校验。
操作说明:
拖动图像:按住鼠标左键拖动
缩放图像:按住鼠标右键拖动或者滑动滑轮
自动跟踪波形:双击鼠标左键
参考例程:
#define BYTE0(dwTemp) (*(char *)(&dwTemp))
#define BYTE1(dwTemp) (*((char *)(&dwTemp) + 1))
#define BYTE2(dwTemp) (*((char *)(&dwTemp) + 2))
#define BYTE3(dwTemp) (*((char *)(&dwTemp) + 3))//0最低,3最高
void Data_Send(void)//备注:10个通道不必全用,如果只使用几个通道,其他通道可以删除(先删后面的通道),节省串口传输时间
{
unsigned char data_to_send[50];
unsigned char _cnt=0;
int _temp;
unsigned char sum = 0,i = 0;
data_to_send[_cnt++]=0xAA;
data_to_send[_cnt++]=0xAA;
data_to_send[_cnt++]=0x01;
data_to_send[_cnt++]=0;
_temp = (int)(0);//通道1
data_to_send[_cnt++]=BYTE1(_temp);//通道1
data_to_send[_cnt++]=BYTE0(_temp);//通道1
_temp = (int)(0);//通道2
data_to_send[_cnt++]=BYTE1(_temp);//通道2
data_to_send[_cnt++]=BYTE0(_temp);//通道2
_temp = (int)(0);//通道3
data_to_send[_cnt++]=BYTE1(_temp);//通道3
data_to_send[_cnt++]=BYTE0(_temp);//通道3
_temp = (int)(0);//通道4
data_to_send[_cnt++]=BYTE1(_temp);//通道4
data_to_send[_cnt++]=BYTE0(_temp);//通道4
_temp = (int)(0);//通道5
data_to_send[_cnt++]=BYTE1(_temp);//通道5
data_to_send[_cnt++]=BYTE0(_temp);//通道5
_temp = (int)(0);//通道6
data_to_send[_cnt++]=BYTE1(_temp);//通道6
data_to_send[_cnt++]=BYTE0(_temp);//通道6
_temp = (int)(0);//通道7
data_to_send[_cnt++]=BYTE1(_temp);//通道7
data_to_send[_cnt++]=BYTE0(_temp);//通道7
_temp = (int)(0);//通道8
data_to_send[_cnt++]=BYTE1(_temp);//通道8
data_to_send[_cnt++]=BYTE0(_temp);//通道8
_temp = (int)(0);//通道9
data_to_send[_cnt++]=BYTE1(_temp);//通道9
data_to_send[_cnt++]=BYTE0(_temp);//通道9
_temp = (int)(0);//通道10
data_to_send[_cnt++]=BYTE1(_temp);//通道10
data_to_send[_cnt++]=BYTE0(_temp);//通道10
data_to_send[3] = _cnt-4;
for( i=0;i<_cnt;i++)
sum += data_to_send;
data_to_send[_cnt++] = sum;
for(i=0;i<_cnt;i++)
uart_putchar(UART1,data_to_send);
}
补充内容 (2018-5-22 15:40):
修复缩放bug,资源在3楼
补充内容 (2018-5-23 15:31):
最新版本v0.2.0增加了可任意通道接收浮点型数据,同时增加了数据显示系数,更方便调试!需要的请留言
补充内容 (2018-6-25 18:00):
v0.2.0资源见27楼
补充内容 (2018-6-25 18:06):
v0.2.0版本取消了exe加壳,打开速度会更快些 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|