ADB shell script to send AT commands to a modem-ca

2019-02-19 17:56发布

I already posted similar question, but still could not get my job done, so this a a second attempt, where I would like to more clearly state my stumbling block.

So basically I am in Android phone's adb shell, communicating with the GPRS modem by sending AT commands. I am able to do it by redirecting at command to the device file representing the modem; and I can read back the response using cat utility running on the background (started earlier). I implemented it in a script which can send a single AT command and read back the response. For example, here is the script to send at+cops? to get the name of the operator the mobile is camping on:

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

The output looks as follows:

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

OK 
/dev/pts/7: invalid length 

Now here are two problems which I cannot resolve:

  1. I still need to manually press ENTER button to get back adb shell prompt "#". Is there a way to return to "#" prompt programmatically? Again, I am in adb shell.
  2. The displayed response cannot be captured, neither in a variable, nor in file, (such as(#./sendATCommand > output.txt) Output.txt file will be empty. I tried various redirections, but still did not get it to work.

Can anyone please help me resolve those two problems (if ever possible)? Ultimately I want this little script to be called from a "super" script (e.g. Perl or Powershell) running on PC to which my Android device is connected, but there is no way to do it until those two problems resolved. Thanks a lot in advance!

2条回答
Summer. ? 凉城
2楼-- · 2019-02-19 18:20

I suggest that you try out my atinout program which should be exactly what you are asking for: a program to send AT commands from the command line and capture the output.

In your case the result should be like

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

OK
$

and to capture the output just put a file name instead of the last -.

查看更多
太酷不给撩
3楼-- · 2019-02-19 18:23

I had similar problems with redirecting output to file. I resolved my problem by adding CMD /c in front of the echo command. I.e. if I understand correctly you need to tell the system that it needs to wait until command finishes executing and only then redirect output to a file. I was doing it in DOS.

Since you are running on ANDROID try adding sh -c in front of your command. Hope it helps.

查看更多
登录 后发表回答