SerialLibrary for arrc
goto_serial.hpp@0:4801795a9073, 2021-12-11 (annotated)
- Committer:
- hamohamo
- Date:
- Sat Dec 11 02:37:36 2021 +0000
- Revision:
- 0:4801795a9073
SerialLibrary;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hamohamo | 0:4801795a9073 | 1 | #ifndef _52SERIAL |
hamohamo | 0:4801795a9073 | 2 | #define _52SERIAL |
hamohamo | 0:4801795a9073 | 3 | |
hamohamo | 0:4801795a9073 | 4 | #include "mbed.h" |
hamohamo | 0:4801795a9073 | 5 | #include "Buffer52.hpp" |
hamohamo | 0:4801795a9073 | 6 | /* |
hamohamo | 0:4801795a9073 | 7 | 使用方法 |
hamohamo | 0:4801795a9073 | 8 | ARRC::gotoSerial ser(PC_12,PD_2,9600); |
hamohamo | 0:4801795a9073 | 9 | DigitalOut rede(PH_1); |
hamohamo | 0:4801795a9073 | 10 | 送信側 rede = 1; |
hamohamo | 0:4801795a9073 | 11 | 受信側 rede = 0; |
hamohamo | 0:4801795a9073 | 12 | |
hamohamo | 0:4801795a9073 | 13 | publish(id,送信する値,INT or FLOAT or FUNC(送信する型の指定)); |
hamohamo | 0:4801795a9073 | 14 | INT,FLOAT 送信と受信でなるべく合わせること。 |
hamohamo | 0:4801795a9073 | 15 | FUNC 受信側で設定した関数に値を引数として送信する。 |
hamohamo | 0:4801795a9073 | 16 | subscribe(id,変数または関数のポインタ(例 &value , func)); |
hamohamo | 0:4801795a9073 | 17 | |
hamohamo | 0:4801795a9073 | 18 | 受信側の関数(scrp_slaveでいうところのコマンド)の宣言方法 |
hamohamo | 0:4801795a9073 | 19 | |
hamohamo | 0:4801795a9073 | 20 | void func(Pack data){ |
hamohamo | 0:4801795a9073 | 21 | printf("subscribed_int:%d\n",data.integer); |
hamohamo | 0:4801795a9073 | 22 | printf("subscribed_float:%d\n",data.decimal); |
hamohamo | 0:4801795a9073 | 23 | led = !led; |
hamohamo | 0:4801795a9073 | 24 | } |
hamohamo | 0:4801795a9073 | 25 | ToDo |
hamohamo | 0:4801795a9073 | 26 | redeを組み込む |
hamohamo | 0:4801795a9073 | 27 | 送受信可能にする |
hamohamo | 0:4801795a9073 | 28 | */ |
hamohamo | 0:4801795a9073 | 29 | |
hamohamo | 0:4801795a9073 | 30 | namespace ARRC{ |
hamohamo | 0:4801795a9073 | 31 | |
hamohamo | 0:4801795a9073 | 32 | const unsigned STARTDATA = 0x01; |
hamohamo | 0:4801795a9073 | 33 | const unsigned ENDDATA = 0x09; |
hamohamo | 0:4801795a9073 | 34 | const unsigned INT = 1; |
hamohamo | 0:4801795a9073 | 35 | const unsigned FLOAT = 2; |
hamohamo | 0:4801795a9073 | 36 | const unsigned FUNC = 3; |
hamohamo | 0:4801795a9073 | 37 | |
hamohamo | 0:4801795a9073 | 38 | typedef union { |
hamohamo | 0:4801795a9073 | 39 | float decimal; |
hamohamo | 0:4801795a9073 | 40 | int integer; |
hamohamo | 0:4801795a9073 | 41 | } Pack; |
hamohamo | 0:4801795a9073 | 42 | |
hamohamo | 0:4801795a9073 | 43 | typedef void (*Func)(Pack data); |
hamohamo | 0:4801795a9073 | 44 | |
hamohamo | 0:4801795a9073 | 45 | typedef union { |
hamohamo | 0:4801795a9073 | 46 | float* decimal; |
hamohamo | 0:4801795a9073 | 47 | int* integer; |
hamohamo | 0:4801795a9073 | 48 | } DATA; |
hamohamo | 0:4801795a9073 | 49 | |
hamohamo | 0:4801795a9073 | 50 | class gotoSerial{ |
hamohamo | 0:4801795a9073 | 51 | public: |
hamohamo | 0:4801795a9073 | 52 | gotoSerial(PinName tx,PinName rx,int baudrate); |
hamohamo | 0:4801795a9073 | 53 | bool publish(unsigned id,int num,unsigned type); |
hamohamo | 0:4801795a9073 | 54 | bool publish(unsigned id,float num,unsigned type); |
hamohamo | 0:4801795a9073 | 55 | bool subscribe(unsigned id,int* var); |
hamohamo | 0:4801795a9073 | 56 | bool subscribe(unsigned id,float* var); |
hamohamo | 0:4801795a9073 | 57 | bool subscribe(unsigned id,Func func); |
hamohamo | 0:4801795a9073 | 58 | private: |
hamohamo | 0:4801795a9073 | 59 | void interrupt_read(); |
hamohamo | 0:4801795a9073 | 60 | bool update(); |
hamohamo | 0:4801795a9073 | 61 | int sub_vars_size; |
hamohamo | 0:4801795a9073 | 62 | std::vector<DATA> sub_vars; |
hamohamo | 0:4801795a9073 | 63 | std::vector<Func> sub_funcs; |
hamohamo | 0:4801795a9073 | 64 | Buffer<int8_t> buf; |
hamohamo | 0:4801795a9073 | 65 | Serial ser; |
hamohamo | 0:4801795a9073 | 66 | }; |
hamohamo | 0:4801795a9073 | 67 | |
hamohamo | 0:4801795a9073 | 68 | } |
hamohamo | 0:4801795a9073 | 69 | |
hamohamo | 0:4801795a9073 | 70 | #endif |