先和大家kuan两句,哈哈。因为之前参加智能车想用波形显示来调节PID,找了很多工具也没有成功,心里也知道串口一次就是只能发送八位数据,很多时候可以用字符显示16位的,但是就不是数据,而是字符串,字符串和数据最大的不同应该在于是否能计算的差别吧,所以字符串肯定是不能用图形表示的。之后看到山外这款串口助手虚拟示波器“类型”中明明有无符号16位的,但是查了很多资料都没有发送16位数据的代码,也在其中放弃过找寻其他的软件,但是心里又一直坚信着这款软件的功能应该不会骗我的,哈哈,就试了几次代码,发现终于成功了。哈哈,挺开心的吧,自己一直相信的事情实现了,好啦不多说上正题!
1.工具:山外多功能调试助手
软件界面如图:
(软件非原创,下文的代码只能说是对于这个软件功能的扩展和补充)
(界面直观,非常友好~,哈哈)
2.代码:
这里用虚拟示波器画出图形是有协议的,如代码中一样,先发送前命令{0x03,0xFC};之后即发送对应的数据,以无符号 16 位为例,是先发送低八位,再发送高八位,其他的数据类型也是如此,由低八位到高八位发送数据,如 virtual_Osc_send_data 函数,当然,同时绘制多条波形图也是在这里,即用循环控制发送不同数组就 OK,如 virtual_Osc_send_array 函数;最后发送后命令{0xFC,0x03},代表数据发送完成。
即发送格式:
前命令{0x03,0xFC}+由低 8 位依次到高 8 位的数据+后命令{0xFC,0x03}。
(供大家参考,拿走不谢噢~)
#define uint unsigned int
#define uchar unsigned char
void UART_PutChar(uchar value)
{
}
void virtual_osc_send_data(uint value)
{
uchar value_h,value_l;
uchar cmdf[2] = {0x03,0xFC};
uchar cmdr[2] = {0xFC,0x03};
UART_PutChar(cmdf[0]);
UART_PutChar(cmdf[1]);
value_l=value%256;
value_h=value/256;
UART_PutChar(value_l);
UART_PutChar(value_h);
UART_PutChar(cmdr[0]);
UART_PutChar(cmdr[1]);
}
void virtual_osc_send_array(uint *array,uchar len)
{
uchar value_h[8],value_l[8],i;
uchar cmdf[2] = {0x03,0xFC};
uchar cmdr[2] = {0xFC,0x03};
UART_PutChar(cmdf[0]);
UART_PutChar(cmdf[1]);
for(i=0;i<len;i++)
{
value_l[i]=array[i]%256;
value_h[i]=array[i]/256;
UART_PutChar(value_l[i]);
UART_PutChar(value_h[i]);
}
UART_PutChar(cmdr[0]);
UART_PutChar(cmdr[1]);
}
void virtual_Osc_Test(void)
{
unsigned int MICVmin[8];
while(1)
{
MICVmin[0]=ADC_Read(ADC0);
MICVmin[1]=ADC_Read(ADC1);
MICVmin[2]=ADC_Read(ADC2);
MICVmin[3]=ADC_Read(ADC3);
MICVmin[4]=ADC_Read(ADC4);
MICVmin[5]=ADC_Read(ADC5);
MICVmin[6]=ADC_Read(ADC6);
MICVmin[7]=ADC_Read(ADC7);
virtual_osc_send_array(MICVmin,8);
}
}
3.说明:
(这里也要细心噢~)
定义了同时发送的数组个数以及数据类型要和软件对应,比如同时发送8个数组,发送的数据类型为无符号16位数,即如图设置:
4.运行效果:
(当当当 当~,这不就出来啦)
5.现在我们就可以愉快地用串口发送数据用图形表示出来啦~
软件获取:
1.关注公众号“脑补空间”发送“山外助手”即可获取网盘链接~
2.直接下载我的资源:https://download.csdn.net/download/weixin_46582567/76124961?spm=1001.2014.3001.5503
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)