方便调试传感器输出做的一个软件,可以把串口的数据绘制曲线到一张图表上…
显示int16数据类型的曲线。支持4个图表16条曲线。异步显示, 刷新速率只与设置的速率相关。
数据说明:
例如我要传送的int为
int x = 0x0102;
int y = 0xFFFF;
int z = 0x5151;
单片机则发送到串口的数据为
0xA0 //包头
0x22 //x 一个字节拆分为两个字节发送 低四位先发送
0x00
0x11 //小端 低位在低地址
0x00
0xFF//y
0xFF
0xFF
0xFF
0X11//z
0x55
0x11
0X55 //这个例子是显示一个图表的3条曲线 如需更多则在包尾前继续发送数据
0x0A //包尾
以上显示在第一个图表的x,y,z 三条曲线
需要注意的是不显示的曲线也要在其对应的位置填充4个字节,例如我要第一个图表的X,Y,和A绘制但Z不绘制,那就应该在包中Z的数据位置发送00 00 00 00
点击下载:SerialPortPlot
hi,打扰了,
对于你的协议的解释有点没看明白,其一,例子中实际传送的数据和目的数据对应不上,所以看不出来具体协议;其二,四个图标其它三个怎么操作呢?期待你的解答,谢谢。
表达能力有点糟糕…抱歉…
1、int x = 0×0102; 小端模式在内存里就是 0x02 0x01,每个字节分两个字节发送,低四位先发,高四位后发,那就是先发0x02中的0x2,再发0x02中的0x0,发送时高低四位要一样,所以0x2发送的数据是0x22,如此类推int x = 0×0102; 发送的数据依次就是0x22 0x00 0x11 0x00。
2、在一个包里四个int数据为一组,紧接着包头标识的4个int数据会显示在第一个图表里,第5个int数据就会显示在第二个图表里,如此类推。
例如包中内容依次为(从左到右,从上到下)
0xA0 //包头标识
0x22 0x00 0x11 0x00 //第1个int数 0x0102 将显示在第一个图表的x轴
0x22 0x44 0x11 0x33 //第2个int数 0x3142 将显示在第一个图表的y轴
0x55 0x88 0x11 0x66 //第3个int数 0x6185 将显示在第一个图表的z轴
0x22 0x44 0x55 0x00 //第4个int数 0x0542 将显示在第一个图表的a轴
0x22 0x00 0x11 0x00 //第5个int数 0x0102 将显示在第二个图表的x轴
0x22 0x44 0x11 0x33 //第6个int数 0x3142 将显示在第二个图表的y轴
0x22 0x00 0x11 0x00 //第7个int数 0x0102 将显示在第二个图表的z轴
0x22 0x00 0x11 0x00 //第8个int数 0x0102 将显示在第二个图表的a轴
0x22 0x00 0x11 0x00 //第9个int数 0x0102 将显示在第三个图表的x轴
0x22 0x44 0x11 0x33 //第10个int数 0x3142 将显示在第三个图表的y轴
0x22 0x00 0x11 0x00 //第11个int数 0x0102 将显示在第三个图表的z轴
0x22 0x00 0x11 0x00 //第12个int数 0x0102 将显示在第三个图表的a轴
0x22 0x00 0x11 0x00 //第13个int数 0x0102 将显示在第四个图表的x轴
0x22 0x44 0x11 0x33 //第14个int数 0x3142 将显示在第四个图表的y轴
0x22 0x00 0x11 0x00 //第15个int数 0x0102 将显示在第四个图表的z轴
0x22 0x00 0x11 0x00 //第16个int数 0x0102 将显示在第四个图表的a轴
0x0A //包尾标识
你好,方便公布源码吗,我也想做一个这样的上位机,谢啦
你留下邮箱我发给你吧…那时写得很糟糕…不好贴出来
racede ,能否也帮我传一份源代码,多谢。