2011/12/14

[軟體][Linux] SMS 之路 (一) 發送簡訊

前言
最近很忙,所以很久沒寫網誌了,剛剛遇到一點問題,所以想想還是回頭來寫一下筆記。

問題
* Linux 底下如何發送簡訊?

環境配置
* Linux 的開發環境
* 一張 2G/3G 網卡
* 一張可以正常的 SIM 卡

執行動作
* 打開 Linux (不管你是用 vbox/vmware 還是實機的 Linux)
* 把網卡大力插進去

接著應該會在裝置底下看到網卡浮出來:

它有可能長這個樣子,如果你跟我一樣用比較舊的 Kernel ,或著跑到 ttyACM0 如果你的 kernel 很清楚的認為它是 modem 的裝置。

接著就要開始玩弄它了,因為 kernel 把它當成是 serial 的裝置,所以你需要一個 terminal 連接它才能開始跟它溝通。

那麼,我會建議使用:
* putty (linux 版) 初學者建議
* minicom (console 工具) 如果你嫌 GUI 很麻煩的話,建議用這個

putty 選裝置 /dev/ttyUSB3 + serial + baurate (可能是 115200 之類的)
minicom -s 選 serial protocol 調整 device 跟 baurate

接著下來要和 3G網卡/modem 溝通,時間很夠就先把網卡的 AT Command List 看過一遍。
這樣可以發中文簡訊到某人的手機裡:

這樣可以發一堆數字到某人的手機裡:

...
要罵我了嗎?好啦,讓我解釋一下:
AT Command 是和 modem 溝通的指令集,所以下這些 command 可以讓 modem 知道你想做什麼事情。
AT+CMGF=0 代表你想送簡訊的模式是 PDU mode 這個 mode 底下的簡訊是編碼過的,裡頭會帶上 SMS 訊息中心的電話號碼,跟你的訊息本文,還有接受者的電話號碼。
AT+CMGS=22 代表你的訊息本文長度是 22,下面接的那一串就是編碼過後的樣子。

...
嗯,應該還會再罵我一次,因為這樣還是不知道怎麼做 PDU 的編碼。
可以參考一下 http://www.dreamfabric.com/sms 上面有說明 SMS PDU 的編碼格式。

如果你跟我一樣很懶得去看,那這裡也有編碼器

--
參考網址:
* Fred Shell scirpt 發送簡訊 http://fred-zone.blogspot.com/2010/04/blog-post.html
* PDU 編碼參考http://www.dreamfabric.com/sms/
* SMS Tutorial http://www.developershome.com/sms/howToReceiveSMSUsingPC.asp
* SMS 中文編碼 http://en.wikipedia.org/wiki/UTF-16
* AT Command 發送 SMS 的方法 http://www.smssolutions.net/tutorials/gsm/sendsmsat/
張貼留言

[Windows] 好用的小工具: AutoHotKey

做為一個 Linux 的愛好者,轉移到 Windows 上面的時候,往往難以適應 Windows 調整快捷鍵的方式,所以 google 了一下,結果發現很多人愛用的 "Auto Hot key"。不多說,就來給一個範例說明如何使用 Auto Hot key 來...