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

Dependents:   multiserial_test serial_check_controller receiverA receiver_transmitter ... more

Committer:
bousiya03
Date:
Wed Oct 15 11:10:00 2014 +0000
Revision:
26:0b108faf5d5a
Parent:
20:9e14b87bfdac
Child:
27:6dcd6c2fba1a
????????

Who changed what in which revision?

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