uint8_t型とunsigned char型に対応した多バイトシリアル通信用ライブラリ

Dependents:   multiserial_test serial_check_controller receiverA receiver_transmitter ... more

MultiSerial.h

Committer:
Hatter
Date:
2014-08-21
Revision:
1:123ee4ce9fe4
Parent:
0:77c15e33dfd1
Child:
6:49c82ca5aa37

File content as of revision 1:123ee4ce9fe4:

/* 
 *mbed Multibyte Serial Library
 *This comment is available in Japanese only
 */



#ifndef MBED_MULTISERIAL
#define MBED_MULTISERIAL

#include"mbed.h"

#define __SIZE(array) (sizeof(array) / sizeof(array[0]))

/** 多バイト通信用クラス 
 *
 * Example:
 * @code
 *     #include"mbed.h"
 *   #include"MultiSerial.h"
 *   
 *   MultiSerial test1(p9,p10);
 *   MultiSerial test2(USBTX,USBRX);
 *
 *   int main(){
 *
 *   uint8_t data1[5]={0};
 *   test1.write(data1, 0xAA);
 *   uint8_t data2[8]={0};
 *   test2.read(data2, 0xAA);    
 *   
 *   
 *   for(;;);  
 * }
 * @endcode
 */


class MultiSerial {

    public:
    
       /** 多バイト通信用オブジェクト作成 Serialにそのままつなげるよ
        *
        * @param tx Serial tx pin
        * @param rx Serial rx pin
        */  
        MultiSerial(PinName tx,PinName rx);
        
       /**データ読み込みするよ 
        *
        * @param value 読み込み先の配列アドレス
        * @param size 配列の要素数
        * @param keycode 多バイト通信のキーコード
        */
        void start_read(uint8_t* value,int size,uint8_t keycode);

       /**データカキコするよ
        *
        * @param value 送るデーターの配列アドレス
        * @param size 配列の要素数
        * @param keycode 多バイト通信のキーコード
        */

        void start_write(uint8_t* value,int size,uint8_t keycode);
/*        
        void writeAttach(void (*func)()){
             __serial__.attach(func,Serial::TxIrq);
            }
            
        void readAttach(void(*func)()){     
        __serial__.attach(func,Serial::RxIrq);
            }
*/          
        /**シリアル通信 受信割り込み ルーチン 
        * @param none
        */           
        void RX(void);
       /**シリアル通信 送信バッファ空き割り込みルーチン
        * @param none
        */
        void TX(void);
           
       /** データ読み込み起動するよ
        *
        * @param value 読み込み先の配列アドレス
        * @param keycode 多バイト通信のキーコード
        */            
        void read(uint8_t* value,uint8_t keycode);
       /**データカキコ起動するよ 
        *
        * @param value 送信データの配列アドレス
        * @param keycode 多バイト通信のキーコード
        */            

        void write(uint8_t* value,uint8_t keycode);
        
protected:
  
    Serial __serial__;
    uint8_t *__readData;
    uint8_t *__writeData;
    int __readSize;
    int __writeSize;
    uint8_t __readKey;
    uint8_t __writeKey;
    
};
#endif