关于山外多功能调试助手的虚拟示波器的使用说明

关于山外多功能调试助手的虚拟示波器的使用说明

通信方式:串口(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);
}

完结

下一次更新显示爱心曲线

经验分享 程序员 微信小程序 职场和发展