分享

用STC89C52连接Phyphox(多数据协同)

 新用户5228KeDY 2021-10-10

用STC89C52连接Phyphox(多数据协同)

这一篇笔记,尽管是使用51单片机实现的,但从原理以及未来的实用性上看,显然适用于Arduino、ESP32以及8266等其他常见单片机,集成蓝牙与不集成蓝牙都是一样的,只要走蓝牙通道。

转眼蓝牙连接Phyphox的研究已经是第7篇笔记了,先列一下表:

  1. 用STC89C52连接Phyphox(综述)
  2. 用STC89C52连接Phyphox(串口)
  3. 用STC89C52连接Phyphox(烧录)
  4. 用STC89C52连接Phyphox(蓝牙)
  5. 用STC89C52连接Phyphox(Phyphox)
  6. 用STC89C52连接Phyphox(Ds18b20)
  7. 用STC89C52连接Phyphox(多数据协同)←本篇
  8. 用STC89C52连接Phyphox(双向数据传输)←挖坑,以后填

我们真的要使用STC89C52RC做实验的话,大概率要碰到同时采集两种或两种以上的传感器数据的情况,例如伏安法测电阻,测定二极管伏安特性曲线等,可能希望电压、电流同时能够送到Phyphox才好。使用ESP32创作实验,要使用Phyphox官方的Phyphox-BLE库,这个库受到Arduino IDE的支持,使创作实验时,能自动支持到同时有5个实型数据传输,这可以从BLE库的write()函数中看到;但若企图传输10个、20个数据,或者其它类型的数据传输,要么不被支持,要么需要自己去重写write()函数体。

这一篇C51下的多数据协同的研究意义就在于此,我们希望能找到多个数据传输的方法,实现多数据的协同工作。

一、c文件

定义好发送字符串的函数,并初始化串口后:

void main()
{
    char buf[10];
 uchar code char_temp[3]={'\r','\n'};
    while(1)
    {
       ……
    strcpy(buf,"12#34#56");
    PostString(buf); 
    PostString(char_temp);
       delayms(5);
    }
}

strcpy函数需要#include <string.h> 和 #include <stdio.h>两个头文件。这里的代码是要发送12#34#56字符串给Phyphox。这个字符串是有格式的,#作为分隔符,到Phyphox Editor里面要使用这个分隔符。

二、Phyphox Editor

当Phyphox Editor中编辑Phyphox文件时,我们只能被允许创建一个Bluetooth视图,亦即Phyphox只能使用一个蓝牙,但能传输多少数据是不限制的(实际受蓝牙本身的传输规范限制),这样我们只要传输一个带格式字符串,多数据协同即成功。

我们指定接收到的数据按formattedString转换,在separator中指定接收的数据由#分开,并在index中指定0,则取出12#34#56中的索引为0的数据:12;再创建一个output变量,指定index为2,则取出12#34#56中的索引为2的数据:56。

编写Analysis部分。把两个输出变量送给两个value:

到Download/Transfor标签里下载回phyphox文件,运行,看到名称为11111的value里面正确显示了12#34#56分割后的数据12,即12.00;名称为2222的value里面显示了分割后的56,即56.00。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多