ISerialを用いたサンプル(モデム) | developer.brewmp.com ISerialを用いたサンプル(モデム) | developer.brewmp.com

Developer

ISerialを用いたサンプル(モデム)

Forums:

 電話機とhost PCをシリアルで接続し、電話機側をモデムのように利用するサンプル・アプリを以下の通り公開します。
 今回は実装機能が大きく、ソースにまとまりがありませんが御容赦ください。

1. アプリのインストール方法
 serial_modem.mod/.sig及びprotocol.datを/mod/serial_modemに、serial_modem.mifを/mifに入れます。
 protocol.datはシリアルのボーレート等を指定するテキストです。本ファイルでは9600bps、スタート/ストップビット1、
ノンパリティを指定していますが、ISerialのサポートする範囲で変更可能です。

2. 使用法
 接続後、Tera Term等ターミナル・ソフトでhost PCから次項のコマンドを打ち込むと、電話機側から応答があります。

2. コマンド
●TAPI・Network関連
IEM$IMEI
 IMEIをIMEI=n…nの形で返します。

IEM$RSSI
 電解強度をRSS=-n…nの形で返します。
 なお、電界強度と実際に通信可能かは一致しません。

IEM$SRV
 現在の網で利用可能な通信種別を返します。返り値はSRV=xxxの形で、xxxはNO_SRV、PS_ONLY、CS_ONLY、
CS_PS、N/Aのいずれかです。CSは回線交換=日本では音声通信及びSMS可を、PSはパケット交換サービス=
日本ではデータ通信可を指します。

IEM$TIME
 IEMの内蔵時刻をDATE=yyyy/mm/dd, TIME=hh:mm:ssの形で返します。バッテリー切れ後に起動した場合、
ネットワークを検出し、現在時刻を自動で取得するまで正常な値を返しませんので、ホスト側が年が010
以上であることを確認する必要があります。

●Battery関連
IEM$EXTPWR
 チャージャーの接続状態を示します。
 返り値はCHARGER=xxxの形で、xxxはUNKNOWN、NO_BATT、UNKNOWN_BATT、DEAD_BATT、
NO_CHARGER、NO_CHARGE、CANNOT_CHARGE、INIT、CHARGING、FULLY_CHARGE、OVERVOLTAGE
のいずれかです。

IEM$BATTSTATUS
 バッテリーの状態を示します。
 返り値はBATTSTATUS=xxxの形で、xxxはUNKNOWN、POWERDOWN、LOW、NORMALのいずれかです。

IEM$BATTLEVEL
 バッテリーの残容量を分数形式で示します。
 返り値はBATTLEVEL=n…n/n…nか、BATTLEVEL=N/Aのいずれかです。

●SMS送信
IEM$SMS TEL=n…n, MSG="x…x", ENCODE=x…x
 指定文字列を指定電話番号に送信します。電話番号はそのままASCIIで(例. 09012345678)、本文は"で囲います。
\xnnの形式で、0x01〜0xFFの任意の値を置くことができます。(例. \x22)ENCODEはENCODE=ASCII, ENCODE=
UNICODEのいずれかです。指定しない場合、AEE_DEVICEITEM_TAPI_SMS_ENCODINGに準じますが、IEMの
場合ASCIIです。
 漢字等非LATIN文字を送信する場合、各文字をUTF16のリトルエンディアン方式で表現します。例えば、「漢字」を
送信する場合、IEM$SMS TEL=090xxxxxxxx, MSG="\x22\x6F\x57\x5B", ENCODE=UNICODEと指定します。
 動作中順次ステータスをSMS=x…xの形式で返し、SMS=SUCCESSで終了します。
 なお、日本通信(b-mobile)のデータ通信向けR-UIMでは、CSが利用可能にならないため、SMSが送信できない
点に注意してください。

●HTTPアクセス
IEM$GET URL=http://x…x
 指定URLにアクセスし、動作状態を適時GET=x…xで通知し、取得内容のうち最初の500バイトをGET_CONTENT=
"x…x"の形式で返します。

●GPSアクセス
IEM$GPS METHOD=x…x
 GPSを用いた即位を行い、結果をGPS=(n…n,n..n)の形で返します。
 測位方式はMETHOD=MSBASED、METHOD=MSASSISTED、METHOD=STANDALONEのいずれかかですが、
DoCoMo網ではMS-Assistedをサポートしていないため、METHOD=MSASSITEDは必ずエラーを返します。指定
しない場合、MS-Basedで動作します。

4. 通信例
 [x…x]の部分はhost PCからの入力、それ以外は電話機側からの応答です。
[IEM$RSSI]
RSSI=-84dB
[IEM$TIME]
DATE=2011/xx/xx, TIME=xx:xx:xx
[IEM$SRV]
SRV=PS_ONLY
[IEM$EXTPWR]
EXTPWR=TRUE
[IEM$CHARGER]
CHARGER=UNKNOWN
[IEM$BATTSTATUS]
BATTSTATUS=NORMAL
[IEM$BATTLEVEL]
BATTLEVEL=115/255
[IEM$SMS TEL=090xxxxxxxx, MSG="test"]
MOSMS=SENDING
MOSMS=ERR_INTERNAL ※R-UIMが回線交換可能なものでない(IEM$SV=PS_ONLY)ためです。
IEM$GET URL=http://www.xxx.xxx
GET=STARTING
GET=GETHOSTBYNAME
GET=ACCEPTED
GET=CONNECT
GET=SENDREQUEST
GET=READRESPONSE
GET_TYPE=text/html; charset=UTF-8
GET=READ(258Byte)
GET=READ(241Byte)
GET_CONTENT="