电竞比分网-中国电竞赛事及体育赛事平台

分享

用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創(chuàng)作實驗,要使用Phyphox官方的Phyphox-BLE庫,這個庫受到Arduino IDE的支持,使創(chuàng)作實驗時,能自動支持到同時有5個實型數據傳輸,這可以從BLE庫的write()函數中看到;但若企圖傳輸10個、20個數據,或者其它類型的數據傳輸,要么不被支持,要么需要自己去重寫write()函數體。

這一篇C51下的多數據協同的研究意義就在于此,我們希望能找到多個數據傳輸的方法,實現多數據的協同工作。

一、c文件

定義好發(fā)送字符串的函數,并初始化串口后:

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>兩個頭文件。這里的代碼是要發(fā)送12#34#56字符串給Phyphox。這個字符串是有格式的,#作為分隔符,到Phyphox Editor里面要使用這個分隔符。

二、Phyphox Editor

當Phyphox Editor中編輯Phyphox文件時,我們只能被允許創(chuàng)建一個Bluetooth視圖,亦即Phyphox只能使用一個藍牙,但能傳輸多少數據是不限制的(實際受藍牙本身的傳輸規(guī)范限制),這樣我們只要傳輸一個帶格式字符串,多數據協同即成功。

我們指定接收到的數據按formattedString轉換,在separator中指定接收的數據由#分開,并在index中指定0,則取出12#34#56中的索引為0的數據:12;再創(chuàng)建一個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條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多