Android 응용 프로그램과 함께 휴대 전화의 GSM 모듈에 AT 명령을 보내려고합니다. 그러나 결과를 다시 읽을 때 cat
명령이 아무 것도 읽지 않기 때문에 응답을 얻지 못하는 것 같습니다.Android - AT 명령을 사용하여 내장 GSM 모듈과 통신합니다.
내 코드 : 출력의
Process p = null;
for(int i = 0; i < 100; i++) {
try {
Log.i("APP","reading");
p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
InputStream is = p.getInputStream();
int len = 0;
int tries = 10;
byte[] buff = new byte[4096];
StringBuilder sb = new StringBuilder();
os.writeBytes("pkill -9 -f cat\necho -e \"ATI\\r\" > dev/smd0 && cat dev/smd0\n");
while (is.available() <= 0 && tries > 0) {
try {
Log.e("APP","unsuccessful");
Thread.sleep(500);
tries--;
} catch (Exception ex) {
}
}
while (tries > 0 && is.available() > 0) {
len = is.read(buff);
if (len <= 0) break;
String seg = new String(buff, 0, len);
Log.i("APP", seg);
sb.append(seg);
}
os.writeBytes("exit\n");
os.flush();
os.close();
is.close();
p.getErrorStream().close();
Toast.makeText(this, sb.toString(), Toast.LENGTH_LONG).show();
Thread.sleep(2000);
} catch (IOException e) {
throw new RuntimeException(e);
} catch (InterruptedException e)
{
throw new RuntimeException(e);
}
}
예 :