我有下面的shell腳本(期望),我試圖發送短信。我引用了許多堆棧溢出引用,並發現ctrl-z映射到\ x1a。但是,即使將它附加到消息併發送到端口或將ctrl z單獨發送到端口也沒有幫助我。它稍後超時。Shell腳本AT命令:無法通過串口發送短信
腳本被寫入發送pdu格式的短信。無論如何,我相信,這是發送ctrl-z到端口的通用問題。如果您覺得該腳本有其他錯誤,請分享相同的解決方案。
另外,下面提到的長度(34)是根據規範的(PDU_LENGTH -2)/ 2的長度。該長度不包括ctrl-z字符。
at_command = 「AT + CMGS = 34 \ R」 MESSAGE_CONTENT = 「0011000C810056890 ......」
腳本:
set PROMPT "0"
set timeout "$COMMAND_TIMEOUT"
send "$at_command"
expect {
"OK" { puts "Command Accepted\n"; }
"ERROR" { puts "Command Failed\n"; }
timeout { puts "Unable to connect to $HOSTIP at $HOSTPORT"; exit 1 }
"*>*" { set PROMPT "1"; }
}
if { "$PROMPT" == "1" } {
send "$message_content"
send "\x1a"
expect {
"OK" { puts "\nCommand accepted"; }
"ERROR" { puts "\nCommand failed"; }
"*>*" { puts "CTRL-Z dint reach UT. Error..."; }
"*" { puts "Unexpected return value received"; }
}
}
非常肯定的腳本發送$ MESSAGE_CONTENT 「到港,但退出後立即發送 」$ MESSAGE_CONTENT「
OUTPUT:
AT+CMGS=34
>
是'有message_content''末\ r'?發送信息後,你沒有收到任何回覆嗎? – Dinesh
@Dinesh:它也可以。 – Vasanth
發送郵件內容後,「預計」。 (可能有一些迴應)。然後發送嘗試發送'ctrl + z'。刪除'expect *'。我懷疑這一點。爲什麼你首先需要這個? – Dinesh