Отправка строки из приложения Arduino в приложение обработки на Android через Bluetooth - PullRequest
0 голосов
/ 30 ноября 2018

Я довольно новичок в Arduino и Processing, и я также впервые задаю вопрос о кодировании в Интернете.В настоящее время я пытаюсь сделать следующее для школьного проекта: я хочу отправить строку с данными от датчиков на моем Arduino на телефон или планшет Android через Bluetooth.Для простоты я уменьшил сложность кода, удалив каждую часть моего кода, которая не пытается облегчить перенос String из Arduino в Processing на Android.Следующий код просто пытается отправить строку «S01E» в приложение обработки на моем телефоне, сохраняя строку в «Информация о строке» и отображая эту строку в виде текста (info, 20, 110);element.

Дополнительная информация: Bluetooth-модуль Arduino - это «Bluefruit EZ-Ling BLuetooth Shield».Телефон Samsung Galaxy S8.Приложение обработки генерируется в режиме обработки Android.Мой телефон успешно сопряжен с Arduino по Bluetooth.

Код успешно компилируется, но показывает только мой текст («тестовый текст», 20, 120);на моем телефоне, но не на моем тексте (info, 20, 110); я предполагаю, что это означает, что строка не принимается и строка информации остается пустой.

Как я могу продолжить отсюда?Есть ли очевидные проблемы в моем коде.И как я могу правильно отлаживать свой код с помощью странного стека технологий, которые я использую?

Код обработки:

import netP5.*;

import android.content.Intent;
import android.os.Bundle;

import ketai.net.bluetooth.*;
import ketai.ui.*;
import ketai.net.*;

KetaiBluetooth bt;
boolean isConfiguring = true;


String info = "";
KetaiList klist;
ArrayList devicesDiscovered = new ArrayList();

// States of the two sensors
int B1in = 0;
int B2in = 0;

//********************************************************************
// The following code is required to enable bluetooth at startup.
//********************************************************************


void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  bt = new KetaiBluetooth(this);
}

void onActivityResult(int requestCode, int resultCode, Intent data) {
  bt.onActivityResult(requestCode, resultCode, data);
}

void setup() {
 size(displayWidth, displayHeight);
 frameRate(10);
 orientation(PORTRAIT);
 background(255);
 stroke(160);
 fill(50);

 //start listening for BT connections
 bt.start();
 //at app start select device…
 isConfiguring = true;
}

void draw() {
  background(255);

  text(info,20,110);
  text("test text",20,120);
  println(info);

}

void onKetaiListSelection(KetaiList klist)
{
  String selection = klist.getSelection();
  bt.connectToDeviceByName(selection);

  //dispose of list for now
  klist = null;
}

//Call back method to manage data received
void onBluetoothDataEvent(String who, byte[] data) {
 if (isConfiguring)
 return;
 //received
 info = new String(data);
}

А вот мой код Arduino:

#include <SoftwareSerial.h>

SoftwareSerial bt(2,3); // RX, TX


// Enthält den String, der an den PC geschickt wird
String data = "S01E";

// Serielle Schnittstelle einrichten, pinModes setzen
void setup() {

  bt.begin(9600);
  Serial.begin(9600);
}
void loop() {

  Serial.println(data);

}

Я также задавал тот же вопрос на discourse.processing.org.Ссылка на мой вопрос: https://discourse.processing.org/t/sending-string-from-arduino-to-processing-app-on-android-over-bluetooth/6106

1 Ответ

0 голосов
/ 30 ноября 2018

Не могли бы вы попробовать это?

 void setup() {
  isConfiguring = true;
  size(displayWidth, displayHeight);
  frameRate(10);
  orientation(PORTRAIT);
  background(255);
  stroke(160);
  fill(50);

  //start listening for BT connections
  bt.start();
  //at app start select device…
  isConfiguring = false;
 }

Кажется, что функция, которую вы используете для извлечения данных из события Bluetooth, просто возвращается, потому что ваш логический флаг никогда не меняется с true.

...