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

Dependents:   multiserial_test serial_check_controller receiverA receiver_transmitter ... more

MultiSerial.h

Committer:
lilac0112_1
Date:
2015-03-11
Revision:
32:fde0f01a0c7b
Parent:
30:f2f3c3d6a6be

File content as of revision 32:fde0f01a0c7b:

/* 
 *mbed Multibyte Serial Library
 *This comment is available in Japanese only
 */
 
#ifndef MULTISERIAL_H
#define MULTISERIAL_H

#include "mbed.h"

#define MAX_DATA_NUM 10
#define KEY 0 //number of first data

/** 多バイト通信用クラス 
 *
 * Example:
 * @code
 * #include"mbed.h"
 * #include"MultiSerial.h"   
 * BusOut check(LED3,LED4); 

 * uint8_t send_data[2]={0,0xF};
 * uint8_t get_data[2];
 * MultiSerial send(p9,p10);
 * MultiSerial get(p28,p27);
 *
 * int main(){
 *    
 * send.write(send_data,0x0A,2);
 * get.read(get_data,0x0A,2);
 * for(int i=1;;i++){
 *    
 *       check = get_data[i];
 *       wait(0.1);
 *       if(i==2){i=0;}
 *   
 *   }
 * }
 * @endcode
 */
 
/*
 typedef enum {     
     write,
     read,
     both
     
     }dir_state;
 */    

class MultiSerial{

    public:
    
        /** 多バイト通信用オブジェクト作成 Serialにそのままつなげるよ
         *
         * @param tx Serial tx pin
         * @param rx Serial rx pin
         * @param state 通信方向 read,write,both
         */ 

        MultiSerial(PinName tx,PinName rx);
        
        /**データ読み込みするよ 
         *
         * @param readData 読み込み先の配列アドレス
         * @param readKey 多バイト通信のキーコード
         */

        void    read_data(uint8_t* readData,uint8_t readKey,int readSize);
        
        /**データカキコするよ
         *
         * @param writeData 送るデーターの配列アドレス
         * @param writeKey 多バイト通信のキーコード
         */

        void    write_data(uint8_t* writeData,uint8_t writeKey,int writeSize);

        /**送信割り込み用関数
         *
         *@param none
         */
        void    TX(void);
        /**受信割り込み用関数
         *
         *@param none
         */
        void    RX(void);
        
        void    start_read();
        
        void    start_write();
        
        uint8_t readable_check();
        
        uint8_t re_first_bit();
        
        void    check_rx_wait();
        
        void    safety();

    protected:

        Serial      __serial__;
        
        Timeout     xbee_check;

        volatile    uint8_t*    __readData;
        int                     __readSize;
        volatile    uint8_t     __readKey;

        volatile    uint8_t*    __writeData;
        int                     __writeSize;
        volatile    uint8_t     __writeKey;
        
        volatile    uint8_t     __check_rx;
        
        volatile    uint8_t     __first_bit;

};
#endif