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

Dependents:   multiserial_test serial_check_controller receiverA receiver_transmitter ... more

Committer:
lilac0112_1
Date:
Wed Mar 11 07:46:33 2015 +0000
Revision:
32:fde0f01a0c7b
Parent:
30:f2f3c3d6a6be
Send to F.F

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