如何通过蓝牙将Android应用程序连接到Raspberry Pi,以便发送数字文本文件?

时间:2016-10-03 19:00:25

标签: android linux bluetooth raspberry-pi3

我正在使用Android Studio中的Android应用程序和在NOOBS上运行的Raspberry Pi 3。我想让应用程序从文本文件中查询Pi的数字,或者如果需要,只查询整个文本文件。

到目前为止,我已经按照本教程:( http://www.instructables.com/id/Control-Raspberry-Pi-GPIO-Using-an-App/?ALLSTEPS)制作了一个应用程序来操作连接到Raspberry Pi的GPIO的LED。我很成功,但这并没有使用蓝牙。我试过它主要是为了确认我可以在Android应用和Raspberry Pi之间做些什么。

然后我尝试了本教程:( http://www.instructables.com/id/Android-Bluetooth-Control-LED-Part-2/?ALLSTEPS)创建一个Android应用程序,通过蓝牙连接,以控制LED。但是,本教程使用的是Arduino,而不是Raspberry Pi。因此,Arduino草图不​​适用于Pi。我尝试编写自己的C程序,模仿Arduino草图正在做什么,但它对我不起作用。我在本教程中的尝试失败了。我将发布下面尝试编写的代码,以防有人帮助我修复我的C程序,并可能再次尝试这个。

我通过Android应用蓝牙连接编写的用于控制Raspberry Pi上的LED的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wiringSerial.h>
#include <wiringPi.h>

#define LED 11 // Pin 17

void ledOn();
void ledOff();

char command[4];
char strin[4];
int ledon = 0;
int strtolVal;
int fd;
char sgc[4];
int sgci;

void ledOn() {
    digitalWrite(LED, 1);
}

void ledOff() {
    digitalWrite(LED, 0);
}

int main() {
    fd = serialOpen("/dev/rfcomm1", 115200);
    wiringPiSetup();
    pinMode(11, OUTPUT); // physical #11, GPIO #17

    while(1) {

        if(serialDataAvail(fd) > 0) {
            sgci = serialGetchar(fd);
        }

        sgci = serialGetchar(fd);
        sgc[0] = sgci + '0';

        if(strcmp(sgc, "0") == 0) {
            ledOff();
        } else if (strcmp(sgc, "1") == 0) {
            ledOn();
        }   
    } // end while loop
} // end main()

控制LED不是我的最终目标,所以我不太关心我有一个可用的Android应用程序来控制LED,更关心的是我可以通过蓝牙在Android应用和Pi之间获得一些工作。因此,我的新目标是能够在Android应用中显示文本,该应用是通过蓝牙从Pi接收的。

我已经无休止地搜索了这个问题的解决方案,而且连接不是通过蓝牙,或者应用程序连接到Pi之外的其他东西。如果不知何故,那里有一些东西正是我正在寻找的东西,那么我为我糟糕的搜索技巧道歉。

1 个答案:

答案 0 :(得分:0)

我几分钟前就类似主题提出了另一个类似的问题: Data transfer via bluetooth between paired Android and Raspberry PI