serial_extend library for array data transmission and reception

Dependents:   receives_robot_wheel

Committer:
bousiya03
Date:
Sat Oct 04 12:19:26 2014 +0000
Revision:
0:fbf5705f90cc
Child:
1:e808dd01f134
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bousiya03 0:fbf5705f90cc 1 /*
bousiya03 0:fbf5705f90cc 2 *mbed array data serial Library
bousiya03 0:fbf5705f90cc 3 *This comment is available in Japanese only
bousiya03 0:fbf5705f90cc 4 */
bousiya03 0:fbf5705f90cc 5
bousiya03 0:fbf5705f90cc 6
bousiya03 0:fbf5705f90cc 7 #ifndef serial_extend_H
bousiya03 0:fbf5705f90cc 8 #define serial_extend_H
bousiya03 0:fbf5705f90cc 9
bousiya03 0:fbf5705f90cc 10 #include "mbed.h"
bousiya03 0:fbf5705f90cc 11
bousiya03 0:fbf5705f90cc 12 #define __SIZE(array) (sizeof(array) / sizeof(array[0]))
bousiya03 0:fbf5705f90cc 13
bousiya03 0:fbf5705f90cc 14
bousiya03 0:fbf5705f90cc 15 #define MAX_DATA_NUM 10
bousiya03 0:fbf5705f90cc 16 #define KEY 0//number of first data
bousiya03 0:fbf5705f90cc 17
bousiya03 0:fbf5705f90cc 18 /** 多バイト通信用クラス 
bousiya03 0:fbf5705f90cc 19 *
bousiya03 0:fbf5705f90cc 20 * Example:
bousiya03 0:fbf5705f90cc 21 * @code
bousiya03 0:fbf5705f90cc 22 * #include"mbed.h"
bousiya03 0:fbf5705f90cc 23 * #include"serial_extend.h"
bousiya03 0:fbf5705f90cc 24 * BusOut check(LED3,LED4);
bousiya03 0:fbf5705f90cc 25
bousiya03 0:fbf5705f90cc 26 * uint8_t send_data[2]={0,0xF};
bousiya03 0:fbf5705f90cc 27 * uint8_t get_data[2];
bousiya03 0:fbf5705f90cc 28 * serial_extend send(p9,p10);
bousiya03 0:fbf5705f90cc 29 * serial_extend get(p28,p27);
bousiya03 0:fbf5705f90cc 30 *
bousiya03 0:fbf5705f90cc 31 * int main(){
bousiya03 0:fbf5705f90cc 32 *
bousiya03 0:fbf5705f90cc 33 * send.write(send_data,0x0A);
bousiya03 0:fbf5705f90cc 34 * get.read(get_data,0x0A);
bousiya03 0:fbf5705f90cc 35 * for(int i=1;;i++){
bousiya03 0:fbf5705f90cc 36 *
bousiya03 0:fbf5705f90cc 37 * check = get_data[i];
bousiya03 0:fbf5705f90cc 38 * wait(0.1);
bousiya03 0:fbf5705f90cc 39 * if(i==2){i=0;}
bousiya03 0:fbf5705f90cc 40 *
bousiya03 0:fbf5705f90cc 41 * }
bousiya03 0:fbf5705f90cc 42 * }
bousiya03 0:fbf5705f90cc 43 * @endcode
bousiya03 0:fbf5705f90cc 44 */
bousiya03 0:fbf5705f90cc 45
bousiya03 0:fbf5705f90cc 46 /*
bousiya03 0:fbf5705f90cc 47 typedef enum {
bousiya03 0:fbf5705f90cc 48 write,
bousiya03 0:fbf5705f90cc 49 read,
bousiya03 0:fbf5705f90cc 50 both
bousiya03 0:fbf5705f90cc 51
bousiya03 0:fbf5705f90cc 52 }dir_state;
bousiya03 0:fbf5705f90cc 53 */
bousiya03 0:fbf5705f90cc 54
bousiya03 0:fbf5705f90cc 55 class serial_extend{
bousiya03 0:fbf5705f90cc 56
bousiya03 0:fbf5705f90cc 57 public:
bousiya03 0:fbf5705f90cc 58
bousiya03 0:fbf5705f90cc 59 /** 多バイト通信用オブジェクト作成 Serialにそのままつなげるよ
bousiya03 0:fbf5705f90cc 60 *
bousiya03 0:fbf5705f90cc 61 * @param tx Serial tx pin
bousiya03 0:fbf5705f90cc 62 * @param rx Serial rx pin
bousiya03 0:fbf5705f90cc 63 * @param state 通信方向 read,write,both
bousiya03 0:fbf5705f90cc 64 */
bousiya03 0:fbf5705f90cc 65
bousiya03 0:fbf5705f90cc 66 serial_extend(PinName tx,PinName rx);
bousiya03 0:fbf5705f90cc 67
bousiya03 0:fbf5705f90cc 68 /**データ読み込みするよ 
bousiya03 0:fbf5705f90cc 69 *
bousiya03 0:fbf5705f90cc 70 * @param readData 読み込み先の配列アドレス
bousiya03 0:fbf5705f90cc 71 * @param readKey 多バイト通信のキーコード
bousiya03 0:fbf5705f90cc 72 */
bousiya03 0:fbf5705f90cc 73
bousiya03 0:fbf5705f90cc 74 void read_data(uint8_t* readData,uint8_t readKey);
bousiya03 0:fbf5705f90cc 75
bousiya03 0:fbf5705f90cc 76 /**データカキコするよ
bousiya03 0:fbf5705f90cc 77 *
bousiya03 0:fbf5705f90cc 78 * @param writeData 送るデーターの配列アドレス
bousiya03 0:fbf5705f90cc 79 * @param writeKey 多バイト通信のキーコード
bousiya03 0:fbf5705f90cc 80 */
bousiya03 0:fbf5705f90cc 81
bousiya03 0:fbf5705f90cc 82 void write_data(uint8_t* writeData,uint8_t writeKey);
bousiya03 0:fbf5705f90cc 83
bousiya03 0:fbf5705f90cc 84 /**送信割り込み用関数
bousiya03 0:fbf5705f90cc 85 *
bousiya03 0:fbf5705f90cc 86 *@param none
bousiya03 0:fbf5705f90cc 87 */
bousiya03 0:fbf5705f90cc 88 void TX(void);
bousiya03 0:fbf5705f90cc 89 /**受信割り込み用関数
bousiya03 0:fbf5705f90cc 90 *
bousiya03 0:fbf5705f90cc 91 *@param none
bousiya03 0:fbf5705f90cc 92 */
bousiya03 0:fbf5705f90cc 93 void RX(void);
bousiya03 0:fbf5705f90cc 94
bousiya03 0:fbf5705f90cc 95 void start_read();
bousiya03 0:fbf5705f90cc 96
bousiya03 0:fbf5705f90cc 97 void stop_read();
bousiya03 0:fbf5705f90cc 98
bousiya03 0:fbf5705f90cc 99 void start_write();
bousiya03 0:fbf5705f90cc 100
bousiya03 0:fbf5705f90cc 101 void stop_write();
bousiya03 0:fbf5705f90cc 102
bousiya03 0:fbf5705f90cc 103 uint8_t readable_check();
bousiya03 0:fbf5705f90cc 104
bousiya03 0:fbf5705f90cc 105 protected:
bousiya03 0:fbf5705f90cc 106
bousiya03 0:fbf5705f90cc 107 RawSerial __serial__;
bousiya03 0:fbf5705f90cc 108
bousiya03 0:fbf5705f90cc 109 volatile uint8_t* __readData;
bousiya03 0:fbf5705f90cc 110 volatile uint8_t __readSize;
bousiya03 0:fbf5705f90cc 111 volatile uint8_t __readKey;
bousiya03 0:fbf5705f90cc 112
bousiya03 0:fbf5705f90cc 113 volatile uint8_t* __writeData;
bousiya03 0:fbf5705f90cc 114 volatile uint8_t __writeSize;
bousiya03 0:fbf5705f90cc 115 volatile uint8_t __writeKey;
bousiya03 0:fbf5705f90cc 116
bousiya03 0:fbf5705f90cc 117 volatile uint8_t __stop_read;
bousiya03 0:fbf5705f90cc 118 volatile uint8_t __stop_write;
bousiya03 0:fbf5705f90cc 119
bousiya03 0:fbf5705f90cc 120 };
bousiya03 0:fbf5705f90cc 121 #endif