Android - ทำไงถึงสตริงจะเก็บทั้งหมดได้ครับ รับครั้งละ 14 ตัว ตามโค้ดด้านล่างนะครับ
Code (Android-Java)
package bb.newuart;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View;
import ioio.lib.api.*;
import ioio.lib.api.exception.ConnectionLostException;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Timer;
import java.util.TimerTask;
import android.view.View.OnClickListener;
import ioio.lib.util.BaseIOIOLooper;
import ioio.lib.util.IOIOLooper;
import ioio.lib.util.android.IOIOActivity;
import ioio.lib.api.DigitalOutput;
public class NewUart extends IOIOActivity {
Button bntSend;
EditText txtTX,txtRX,txtRTD;
Timer timer = new Timer();
Handler handler = new Handler();
TimerTask timetask;
TextView textView1;
TextView textView2;
TextView textView3;
TextView textView5;
TextView textView6;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bntSend = (Button)findViewById(R.id.bntSend);
txtTX = (EditText)findViewById(R.id.txtTX);
txtRX = (EditText)findViewById(R.id.txtRX);
txtRTD = (EditText)findViewById(R.id.txtRTD);
textView1 = (TextView)findViewById(R.id.Sec);
textView2 = (TextView)findViewById(R.id.Point);
textView3 = (TextView)findViewById(R.id.MS);
textView5 = (TextView)findViewById(R.id.Mode);
textView6 = (TextView)findViewById(R.id.PF);
}
class Looper extends BaseIOIOLooper {
DigitalOutput Dout;
Uart uart;
OutputStream out;
InputStream in;
int float_avg;
protected void setup() throws ConnectionLostException {
uart = ioio_.openUart(3, 4, 9600, Uart.Parity.NONE, Uart.StopBits.ONE);
in = uart.getInputStream();
out = uart.getOutputStream();
Dout = ioio_.openDigitalOutput(0,true);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Connected!",Toast.LENGTH_LONG).show();
doTask();
}
});
bntSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//doTask();
try{
byte[] wrBuff = txtTX.getText().toString().getBytes();
out.write(wrBuff);
Thread.sleep(200);
//ShowTotal(wrBuff);
//byte[] total = new byte[in.available()];
//in.read(total);
//txtRTD.setText(new String(total));
} catch (IOException e){
e.printStackTrace();
} catch (InterruptedException e){
e.printStackTrace();
}
}
});
}
@SuppressLint("NewApi")
public void doTask(){
timetask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
byte[] rdBuff;
try {
rdBuff = new byte[in.available()];
in.read(rdBuff);
int len = rdBuff.length;
if(len == 14){
txtRX.setText(new String(rdBuff));
byte[] arr2 = Arrays.copyOf(rdBuff, 14);
String addStr = new String(arr2);
ShowTotal(addStr);
} else
txtRX.setText("I0E");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}};
timer.schedule(timetask, 0, 1000); // Every 1 second
}
public void ShowTotal(String arr2){
arr2.toString();
String str = arr2;
String str11,str12,str13,str14,str10;
str14 = str.substring(1, 2);
str13 = str.substring(3, 4);
str12 = str.substring(6, 7);
str11 = str.substring(8, 10);
str10 = str.substring(10, 12);
int y = Integer.parseInt(str10);
int x = Integer.parseInt(str11);
x = ArrAddMS(x);
y = ArrAddS(y);
ArrayList<String> myArrList2 = new ArrayList<String>();
myArrList2.add(str13);
String myArr3;
myArr3 = myArrList2.toString();
ArrayList<String> myArrList1 = new ArrayList<String>();
myArrList1.add(str14);
String myArr1;
myArr1 = myArrList1.toString();
ArrayList<String> myArrList3 = new ArrayList<String>();
myArrList3.add(str12);
String myArr2;
myArr2 = myArrList3.toString();
textView2.setText("Point : " + myArr3);
textView5.setText("Mode : " + myArr1);
textView6.setText("Pass/Fail : " + myArr2);
//StringBuffer StrBuf = new StringBuffer();
//StrBuf.append(str12);
//textView2.setText(StrBuf);
txtRTD.setText(str14 + str13 + str12 + str11 + ":" + str10);
}
public void Loop() throws ConnectionLostException {
Dout.write(true);
}
public int ArrAddS (int x){
ArrayList<Integer> arr_value = new ArrayList<Integer>();
arr_value.add(x);
totalMS(arr_value);
return x;
}
public int ArrAddMS (int y){
ArrayList<Integer> arr_value = new ArrayList<Integer>();
arr_value.add(y);
totalS(arr_value);
return y;
}
public void totalS (ArrayList<Integer> arr_value){
int int_total = 0;
for(int i = 0 ; i < arr_value.size() ; i++) {
int_total += (Integer) arr_value.get(i);
}
float_avg = (int)int_total / arr_value.size();
String b = String.valueOf(float_avg);
textView1.setText("Time AVG : " + b + ":");
return ;
}
public void totalMS (ArrayList<Integer> arr_value){
int int_total = 0;
for(int i = 0 ; i < arr_value.size() ; i++) {
int_total += (Integer) arr_value.get(i);
}
float_avg = (int)int_total / arr_value.size();
String b = String.valueOf(float_avg);
textView3.setText(b);
return ;
}
}
protected IOIOLooper createIOIOLooper() {
return new Looper();
}
}
รับเข้ามาชุดละ 14 ตัว เช่น RA0A00P024350E นะครับ มาเป็นชุดแบบนี้เรื่อยๆครับ
ผู้รู้ช่วยแก้ให้หน่อยนะครับหรือเสนอแนะนิดนึงครับ ขอบคุณครับ
Tag : Mobile, Android, JAVA
Date :
2013-08-31 16:15:56
By :
GooDbyJudy
View :
1154
Reply :
2
เวลาแสดงผลก็แสดงค่าที่ substring ต่อกันเรื่อยๆอ่ะกัน ตัวได้เป็น A ตัวสองใส่ A มาอีกก็แสดง AA แบบนี้อ่ะครับ ตรงที่แสดงออกทุกอันเลยครับ รวมทั้งเวลาที่เอาไปหาค่าเฉลี่ยด้วยครับ
Date :
2013-08-31 16:21:22
By :
GooDbyJudy
Code เยอะแบบนี้ดูแล้วเข้าใจยากน่ะครับ
Date :
2013-09-01 06:33:19
By :
mr.win
Load balance : Server 05