2012-02-15 2 views
2

나는 이미 비슷한 질문을 올렸지 만 여전히 내 일을 마칠 수 없었으므로이 두 번째 시도는 으로하고 싶습니다. 내 걸림돌을 더 분명하게 진술하십시오.모뎀에 AT 명령을 보내는 ADB 셸 스크립트 - 셸로 제어를 되돌릴 수없고 출력을 캡처 할 수 없음

기본적으로 나는 안드로이드 폰의 adb 쉘에 있으며, AT 명령을 보내 GPRS 모뎀과 통신하고 있습니다. 명령을 모뎀을 나타내는 장치 파일로 리디렉션하면됩니다. 그리고 백그라운드에서 실행중인 cat 유틸리티를 사용하여 (이전에 시작한) 응답을 다시 읽을 수 있습니다. 필자는 하나의 AT 명령을 보내고 응답을 다시 읽을 수있는 스크립트 에서이 스크립트를 구현했습니다. 예를 들어 다음은 + cops로 보내는 스크립트입니다. 운영자의 이름을 얻기 위해 모바일에 캠핑된다

# ./sendATCommand 
./sendATCommand 
# 
+COPS: 0,0,"AT&T",6 

OK 
/dev/pts/7: invalid length 

을 지금 여기에 두 가지 문제는 내가 해결할 수있는 다음과 같습니다 :

  1. 나는 다음과 같이

    #SendATCommand script 
    cat /dev/pts/7 & 
    echo -e at+cops?\\r > /dev/pts/7 
    

    출력 본다 여전히 수동으로 ENTER 버튼을 눌러서 adb 쉘 프롬프트 "#"를 가져와야합니다. 프로그래밍 방식으로 "#"프롬프트에 을 반환하는 방법이 있습니까? 다시 말하지만, 필자는 adb 쉘에 있습니다.

  2. 표시된 응답은 변수 나 파일 모두에서 캡처 할 수 없습니다 (예 : (#/sendATCommand> output.txt) Output.txt 파일은 비어 있습니다. 다양한 리다이렉션을 시도했지만 여전히 얻을 수 없었습니다. 그것은 작동합니다.

이 사람이 나에게 (이제까지 가능한 경우) 그 두 가지 문제를 해결하는 데 도움 주실 래요? 결국 내가이 작은 스크립트가 PC에서 실행되는 "슈퍼"스크립트 (예를 들어, 펄 또는 파워 쉘)에서 호출 되고 싶어 내 안드로이드 장치는 입니다. 두 가지 문제가 해결 될 때까지는 아무 것도 할 수 없습니다. 미리 감사드립니다. 미리 감사드립니다. 미리 감사드립니다 ..

+0

왜 '\\ r'이 있습니까? '\ r'뿐만 아니라'\ n'을 시도하거나 더 일반적으로'\ r'이 관련되어 있으면'\ r \ n'을 사용합니다. 왜 당신은 '무효 길이'메시지를 받는다고 생각합니까? 안드로이드 사람이 아니라, 이것이 내가 제공해야하는 전부입니다. 행운을 빕니다. – shellter

+0

당신의 제안을 시도해 보았습니다 - 효과가 없습니다. 이중 백 슬래시 (\\ r) 만 사용 가능합니다. 아직 해결되지 않았어. –

+0

AT 명령 줄은 (아마도 이스케이프 된)'\ r'으로 끝나야합니다. http://stackoverflow.com/a/21503919/23118.'\ n'을 사용하지 마십시오. – hlovdal

답변

0

y atinout 정확히 무엇을 요구하는지 알아야하는 프로그램 : 명령 줄에서 AT 명령을 보내고 출력을 캡처하는 프로그램. 귀하의 경우에는

이 결과는

$ echo 'at+cops?' | atinout - /dev/pts/7 - 
+COPS: 0,0,"AT&T",6 

OK 
$ 

처럼해야하며, 출력은 단지 마지막 - 대신 파일 이름을 넣어 캡처.

0

출력을 파일로 리디렉션하는 것과 비슷한 문제가있었습니다. echo 명령 앞에 CMD/c을 추가하여 문제를 해결했습니다. 나는. 내가 올바르게 이해하면 명령이 실행을 마칠 때까지 대기하고 출력을 파일로 리다이렉트 할 필요가 있음을 시스템에 알릴 필요가있다. 나는 DOS에서 그것을하고 있었다.

ANDROID에서 실행 중이므로 sh -c을 명령 앞에 추가하십시오. 희망이 도움이됩니다.