インタープラン製無線モジュールIM920と通信を行うライブラリです

IM920.cpp

Committer:
kim1212
Date:
2017-03-11
Revision:
0:4d4bdea0e93d

File content as of revision 0:4d4bdea0e93d:

#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;
}