Android 台灣中文網
標題:
Arduino藍芽傳送數據至Android的問題
[打印本頁]
作者:
adsl123449
時間:
2014-2-6 16:11
標題:
Arduino藍芽傳送數據至Android的問題
請問各位先輩,我要用android接收arduino傳過來的溫度跟超音波數據
但是兩筆數據都只能在一個Text上顯示,我上網google找了好幾天
還是找不到怎麼判斷把兩筆數據分開放在不同Text上
麻煩各位先輩給小弟指點迷津一下,謝謝。
Android Code如下↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
這是一部分的Code,從網路抓下來的範例稍微有修改過
h = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case RECIEVE_MESSAGE: // 如果接受訊息
byte[] readBuf = (byte[]) msg.obj;
String strIncom = new String(readBuf, 0, msg.arg1); // 從字節數組創建字符串
sb.append(strIncom); // 追加字符串
int endOfLineIndex = sb.indexOf("
"); // 確定最終的行
if (endOfLineIndex > 0) { // 如果行結束
String sbprint = sb.substring(0,endOfLineIndex); // 提取字符串
sb.delete(0, sb.length());
int intprint = new Integer(sbprint).intValue();
TempView.setText(""+intprint);
}
break;
}
};
};
public void run() {
byte[] buffer = new byte[1024]; // 緩衝存儲
int bytes; //返回的字節讀取()
// 監控的InputStream,直到發生異常
while (true) {
try {
// 從InputStream中讀取
bytes = mmInStream.read(buffer); // 獲取的字節數和消息的“buffer”
h.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget();// 發送到消息隊列處理程序
} catch (IOException e) {
break;
}
}
}
作者:
kansas73
時間:
2014-2-14 23:06
設兩個陣列分別處存兩筆傳過來的資料這樣就可以分開顯示了
作者:
odom
時間:
2015-5-1 09:13
本帖最後由 odom 於 2015-5-1 09:15 編輯
kansas73 發表於 2014-2-14 23:06
設兩個陣列分別處存兩筆傳過來的資料這樣就可以分開顯示了
請問大大要怎麼分兩個陣列 小的不會寫想請教@@
#include <Ultrasonic.h>
#include <Servo.h>
#define TRIGGER_PIN A2
#define ECHO_PIN A3
#define M1_in1 12
#define M1_in2 11
#define M2_in3 10
#define M2_in4 9
int speed;
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
int incomingByte; //讀取進來的資料存放位置。
const byte ENB = 5;
const byte ENA = 6;
unsigned long Time; //time
void setup() {
Serial.begin(57600); //設定傳輸速度
// 設定LED 燈的接腳
pinMode(M1_in1,OUTPUT);
pinMode(M1_in2,OUTPUT);
pinMode(M2_in3,OUTPUT);
pinMode(M2_in4,OUTPUT);
speed = 100;
}
void Go_Ahead() {
digitalWrite(M1_in1, HIGH);
digitalWrite(M1_in2, LOW);
digitalWrite(M2_in3, HIGH);
digitalWrite(M2_in4, LOW);
delay(1000);
}
void Stop(){
digitalWrite(M1_in1, LOW);
digitalWrite(M1_in2, LOW);
digitalWrite(M2_in3, LOW);
digitalWrite(M2_in4, LOW);
delay(1000);
}
void Go_Back(){
digitalWrite(M1_in1, LOW);
digitalWrite(M1_in2, HIGH);
digitalWrite(M2_in3, LOW);
digitalWrite(M2_in4, HIGH);
delay(1000);
}
void Left(){
digitalWrite(M1_in1, LOW);
digitalWrite(M1_in2, LOW);
digitalWrite(M2_in3, HIGH);
digitalWrite(M2_in4, LOW);
delay(1000);
}
void Right(){
digitalWrite(M1_in1, HIGH);
digitalWrite(M1_in2, LOW);
digitalWrite(M2_in3, LOW);
digitalWrite(M2_in4, LOW);
delay(1000);
}
void a(){
float cmMsec;
long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
Serial.print("CM: ");
Serial.print(cmMsec);
Serial.print("
");
}
void b(){
int sV;
sV = analogRead(A0);
Serial.print("Flame:");
Serial.println(sV);
Serial.print("
");
}
void c(){
int va; // 煙霧
va=analogRead(A1);
Serial.print("Smoke:");
Serial.println(va,DEC);
Serial.print("
");
delay(1000);
}
void loop() { //超音波
analogWrite(ENA, speed); //輸出 PWM 脈衝到 ENA
analogWrite(ENB, speed); //輸出 PWM 脈衝到 ENB
a();
b();
c();
// 看看是否有資料進來?
if (Serial.available() > 0) { //馬達
// 讀取資料
incomingByte = Serial.read();
if (incomingByte == "A")
Go_Ahead();
else if (incomingByte == "B")
Stop();
else if (incomingByte == "C")
Go_Back();
else if (incomingByte == "D")
Left();
else if (incomingByte == "E")
Right();
}
{
}
}
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1