hallo,
Hardware Assus Tablet MemoPad
Android: 4.1.2
im augenblick versuche ich Daten eines microcontroller via usb-Otg kabel
zu lesen.
mit hilfe von original: Android SerialMonitorLite funktioniert das auch.
keine Probleme
da ich nur lesen moechte, hab dann eine kleine app entwickelt.
dass funktioniert auch.
nun die fehler:
- wenn ich nur den code ohne den ausdokumentierten teil laufen lasse
ist alles ok
- sobald der ausdokumentierte code ins spiel kommt
- Fehler: Applikation wurde leider beendet
da ich das im augenblick nicht debuggen kann , haengt ja am controller.
in der entwicklung von apps bin ich ein newbie . mach das erst seit ca.4 wochen.
im ausdokumentierten teile ist auch code-varianten die ich ausprobiert habe
ich waere froh, wenn mir jemand helfen koennte
ich moechte aus dem InputString: "$11:22:33:-44:" via convert ein integer tokArray machen, dann
anschliessend die werte des array einzelnen variable zu weisen.
um tips tricks hinweise waere ich dankbar
gruss stephan
als attachment: SerialReader.java
private Runnable mLoop = new Runnable() {
@Override
public void run() {
int len;
byte[] rbuf = new byte[4096];
for (;;) {// this is the main loop for transferring
// ////////////////////////////////////////////////////////
// Read and Display to Terminal
// ////////////////////////////////////////////////////////
len = mSerial.read(rbuf);
rbuf[len] = 0;
if (len > 0) {
//Log.d(TAG, "Read Length : " + len);
switch (mDisplayType) {
case DISP_CHAR:
setSerialDataToTextView(mDisplayType, rbuf, len, "", "");
break;
case DISP_DEC:
setSerialDataToTextView(mDisplayType, rbuf, len, "013", "010");
break;
case DISP_HEX:
setSerialDataToTextView(mDisplayType, rbuf, len, "0d", "0a");
break;
}
mHandler.post(new Runnable() {
public void run() {
if (mTvSerial.length() > TEXT_MAX_SIZE) {
StringBuilder sb = new StringBuilder();
sb.append(mTvSerial.getText());
sb.delete(0, TEXT_MAX_SIZE / 2);
mTvSerial.setText(sb);
}
// This is OK running
// mTvSerial.append(mText);
myStr = mText.toString();
delims = "[$:]+";
tokens = myStr.split(delims);
mylen = tokens.length;
mTvSerial.append("Len: "+tokens.length);
for(int i = 0; i < tokens.length; i++)
{
// show string Tok
mTvSerial.append("Tok: "+tokens[i]);
}
mTvSerial.append("Tok 0:" +tokens[0]+ ",Tok 1: "+tokens[1]+", Tok 2: "+tokens[2]+", Tok 3: "+tokens[3]);
/*
int j = 0;
for(j = 0; j < mylen; j++)
{
// mTvSerial.append("for: "+j);
try {
tokArr[j] = Integer.parseInt(tokens[j]);
}catch (NumberFormatException nfe)
{
// nfe.printStackTrace();
}
if(j==0) gx = tokArr[0];
if(j==1) gy = tokArr[1];
if(j==2) gz = tokArr[2];
if(j==3) compass = tokArr[3];
}
tokArr[0] = Integer.parseInt(tokens[0]);
tokArr[1] = Integer.parseInt(tokens[1]);
tokArr[2] = Integer.parseInt(tokens[2]);
tokArr[3] = Integer.parseInt(tokens[3]);
gx = tokArr[0];
gy = tokArr[1];
gz = tokArr[2];
compass = tokArr[3];
mTvSerial.append("GZ:" +gz+ ",GY: "+gy+", GZ: "+gz+", Compass: "+compass);
// tokenizer();
// convert from string to integer
for(int i = 0; i < tokens.length; i++)
tokArr[i] = Integer.parseInt(tokens[i]
tokArr[0] = Integer.parseInt(tokens[0]);
tokArr[1] = Integer.parseInt(tokens[1]);
tokArr[2] = Integer.parseInt(tokens[2]);
tokArr[3] = Integer.parseInt(tokens[3]);
gx = tokArr[0];
gy = tokArr[1];
gz = tokArr[2];
compass = tokArr[3];
*/
// mTvSerial.append("gx :"+gx+", gy : "+gy+", gz :"+gz+", compass :"+compass);
mTvSerial.append("ParseConvert OK");
mText.setLength(0);
mSvText.fullScroll(ScrollView.FOCUS_DOWN);
// tokenizer();
}
});
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (mStop) {
mRunningMainLoop = false;
return;
}
}
}
};
Alles anzeigen