关于山外多功能调试助手的虚拟示波器的使用说明
通信方式:串口(uart)协议
设定波特率,数据位,校验位,停止位等等
关于虚拟串口的特性
1. 支持8通道的波形,并且自定义波形名称
2. 支持同时预览或可选择预览和隐藏
3. 支持数据类型涵盖:uint8_t,int8_t, uint16_t,int16_t,uint32_t,int32_t,float,double
4. 支持x,y轴的缩放功能,
5. 支持数据导入,导出
6. 自动跟踪
串口传输协议
[0x03],[0xFC],[数据*n],[0xFC],[0x03]
下位机发送数据一次数据,先发帧头[0x03],[0xFC],然后发波形数据(一个字节的发送),最后发送帧尾,完成一次发送。
代码实现
这里使用aduino框架来实现的
void shanwai_oscilloscope_send(uint8_t *data, uint8_t len)
{
const uint8_t cmdhead[2] = {0x03, 0xfc};
const uint8_t cmdtail[2] = {0xfc, 0x03};
Serial.write(cmdhead, sizeof(cmdhead));
Serial.write((uint8_t *)data,sizeof(uint8_t)*len);
Serial.write(cmdtail, sizeof(cmdtail));
}
uint16_t 单个数据类型
void setup() {
Serial.begin(9600);
}
uint16_t sensorValue;
void loop() {
sensorValue = analogRead(27);
shanwai_oscilloscope_send((uint8_t *)&sensorValue,sizeof(sensorValue));
delay(100);
}
图:ESP32 引脚(27)浮空电压
uint16_t 数组类型
void setup() {
Serial.begin(9600);
}
uint16_t sensorValue[2];
void loop() {
sensorValue[0] = analogRead(27);
sensorValue[1]++;
shanwai_oscilloscope_send((uint8_t *)sensorValue, sizeof(sensorValue));
if (sensorValue[1] >= 100)
{
sensorValue[1]=0;
}
delay(100);
}
图:ESP32 引脚(27)浮空电压 红色 ,三角波信号 蓝色
void setup() {
Serial.begin(9600);
}
float sensorValue[2];
void loop() {
sensorValue[0] = analogRead(27)*3.3/3096;
sensorValue[1] += 10.0;
shanwai_oscilloscope_send((uint8_t *)sensorValue, sizeof(sensorValue));
if (sensorValue[1] >= 100)
{
sensorValue[1]=0;
}
delay(100);
}
完结
注意的是:想要显示的数据类型和通道数量与软件里的配置保持一直即可。
软件的来源:见百度
更新:若后续在其他平台上,该文章会继续更新
免责声明:仅仅是自己调试心得,记录于此,防止遗忘
下一次更新显示爱心曲线
未完待续