インタープラン製無線モジュールIM920と通信を行うライブラリです
Diff: IM920.cpp
- Revision:
- 0:4d4bdea0e93d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IM920.cpp Sat Mar 11 03:30:34 2017 +0000 @@ -0,0 +1,63 @@ +#include "IM920.h" +#include "mbed.h" + +IM920::IM920(PinName RadioTx,PinName RadioRx,PinName Busy): _Radio(RadioTx,RadioRx),_Busy(Busy){ + +RadioInit(); + +} + + +void IM920::RadioInit(){ + char commandbuf[50]; + + _Radio.baud(19200);//初期状態のボーレートは19200 + + while(_Busy!=0); + sprintf(commandbuf,"%s,%d","SBRT",BAUD_LATE); + SendCommand(commandbuf);//ボーレートは38400 + wait_ms(5); + + _Radio.baud(BAUD_LATE);//マイコン側ボーレート変更 + + SendBufClear(commandbuf);//送信バッファクリア + sprintf(commandbuf,"%s,%s","STCH",FREQ);//データ作成 + SendCommand(commandbuf);//ch2 + + SendBufClear(commandbuf);//送信バッファクリア + sprintf(commandbuf,"%s,%d","STPO",POWER);//データ作成 送信出力 + SendCommand(commandbuf);//ch2 + + SendBufClear(commandbuf);//送信バッファクリア + sprintf(commandbuf,"%s,%d","STRT",SPEED);//データ作成 高速通信モード + SendCommand(commandbuf);//ch2 + + SendBufClear(commandbuf);//送信バッファクリア + sprintf(commandbuf,"%s,%s","SRID",ID);//データ作成 + SendCommand(commandbuf);//相手方IDを設定 + +} + +void IM920::SendCommand(char* data){ + while(_Busy!=0); + _Radio.printf("%s",data); + _Radio.putc(0x0d); + _Radio.putc(0x0a); + wait_ms(5); +} + +void IM920::SendBufClear(char* buf){ + int i=0; + for(;i<50;i++) buf[i]=0; +} + +bool IM920::SendData(char* data){ + if(_Busy!=1){ + char sdata[70]; + sprintf(sdata,"%s,%s","TXDA ",data); + _Radio.printf(sdata); + _Radio.putc(0x0d); + _Radio.putc(0x0a); + return true; + }else return false; +} \ No newline at end of file