IM920のライブラリ
IM920.h@1:11ae0d702ecc, 2018-02-22 (annotated)
- Committer:
- Gaku0606
- Date:
- Thu Feb 22 08:52:51 2018 +0000
- Revision:
- 1:11ae0d702ecc
- Parent:
- 0:ccdeb3bea793
???
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Gaku0606 | 0:ccdeb3bea793 | 1 | #ifndef _IM920_H_ |
Gaku0606 | 0:ccdeb3bea793 | 2 | #define _IM920_H_ |
Gaku0606 | 0:ccdeb3bea793 | 3 | #include "mbed.h" |
Gaku0606 | 0:ccdeb3bea793 | 4 | |
Gaku0606 | 1:11ae0d702ecc | 5 | #define IM920_BUFF_SIZE 216 |
Gaku0606 | 0:ccdeb3bea793 | 6 | |
Gaku0606 | 0:ccdeb3bea793 | 7 | const int FUNC_NUMBER = 256; |
Gaku0606 | 0:ccdeb3bea793 | 8 | |
Gaku0606 | 0:ccdeb3bea793 | 9 | |
Gaku0606 | 0:ccdeb3bea793 | 10 | typedef enum im920_buff_classify{ |
Gaku0606 | 0:ccdeb3bea793 | 11 | BUFF_A = 0, |
Gaku0606 | 0:ccdeb3bea793 | 12 | BUFF_B = 1 |
Gaku0606 | 0:ccdeb3bea793 | 13 | }IM920_Buff_Classify; |
Gaku0606 | 0:ccdeb3bea793 | 14 | |
Gaku0606 | 0:ccdeb3bea793 | 15 | //解析方法に関する変数 |
Gaku0606 | 0:ccdeb3bea793 | 16 | const int WAIT_TIME_US = 1000; |
Gaku0606 | 0:ccdeb3bea793 | 17 | typedef enum{ |
Gaku0606 | 0:ccdeb3bea793 | 18 | DATA_STRING = 0, //データの文字列 |
Gaku0606 | 0:ccdeb3bea793 | 19 | RESPONSE_STRING = 1, //OKかNGのレスポンスの文字列 |
Gaku0606 | 0:ccdeb3bea793 | 20 | NORMAL_STRING = 2, |
Gaku0606 | 0:ccdeb3bea793 | 21 | OTHER_STRING = 3, |
Gaku0606 | 0:ccdeb3bea793 | 22 | RECEIVE_ID = 4, |
Gaku0606 | 0:ccdeb3bea793 | 23 | INTERACTIVE_STRING = 5 |
Gaku0606 | 0:ccdeb3bea793 | 24 | }IM920_Analyze_Selector; |
Gaku0606 | 0:ccdeb3bea793 | 25 | |
Gaku0606 | 0:ccdeb3bea793 | 26 | |
Gaku0606 | 0:ccdeb3bea793 | 27 | |
Gaku0606 | 0:ccdeb3bea793 | 28 | static IM920_Buff_Classify AB = BUFF_A; |
Gaku0606 | 0:ccdeb3bea793 | 29 | |
Gaku0606 | 0:ccdeb3bea793 | 30 | class IM920{ |
Gaku0606 | 0:ccdeb3bea793 | 31 | public: |
Gaku0606 | 0:ccdeb3bea793 | 32 | IM920(Serial &serial, Serial &pc, int baudrate = 19200); |
Gaku0606 | 0:ccdeb3bea793 | 33 | private: |
Gaku0606 | 0:ccdeb3bea793 | 34 | Serial *ser; |
Gaku0606 | 0:ccdeb3bea793 | 35 | Serial *_pc; |
Gaku0606 | 0:ccdeb3bea793 | 36 | |
Gaku0606 | 0:ccdeb3bea793 | 37 | //バッファ関連の変数 |
Gaku0606 | 0:ccdeb3bea793 | 38 | char buff_A[IM920_BUFF_SIZE]; |
Gaku0606 | 0:ccdeb3bea793 | 39 | char buff_B[IM920_BUFF_SIZE]; |
Gaku0606 | 0:ccdeb3bea793 | 40 | char* readBuffAddr; |
Gaku0606 | 0:ccdeb3bea793 | 41 | char* writeBuffAddr; |
Gaku0606 | 0:ccdeb3bea793 | 42 | |
Gaku0606 | 0:ccdeb3bea793 | 43 | |
Gaku0606 | 0:ccdeb3bea793 | 44 | char im920_dataLength; |
Gaku0606 | 0:ccdeb3bea793 | 45 | char im920_sendBuff[129]; |
Gaku0606 | 0:ccdeb3bea793 | 46 | |
Gaku0606 | 0:ccdeb3bea793 | 47 | int nodeNumber; |
Gaku0606 | 0:ccdeb3bea793 | 48 | //インタラクティブモードから復帰できるかを示すフラグ |
Gaku0606 | 0:ccdeb3bea793 | 49 | //1ならインタラクティブモード、0なら通常モード |
Gaku0606 | 0:ccdeb3bea793 | 50 | int interactiveFlag; |
Gaku0606 | 0:ccdeb3bea793 | 51 | |
Gaku0606 | 0:ccdeb3bea793 | 52 | IM920_Analyze_Selector AS; |
Gaku0606 | 0:ccdeb3bea793 | 53 | |
Gaku0606 | 0:ccdeb3bea793 | 54 | public: |
Gaku0606 | 0:ccdeb3bea793 | 55 | |
Gaku0606 | 0:ccdeb3bea793 | 56 | union IM920_CAST{ |
Gaku0606 | 0:ccdeb3bea793 | 57 | double d; |
Gaku0606 | 0:ccdeb3bea793 | 58 | float f; |
Gaku0606 | 0:ccdeb3bea793 | 59 | long l; |
Gaku0606 | 0:ccdeb3bea793 | 60 | int i; |
Gaku0606 | 0:ccdeb3bea793 | 61 | short s; |
Gaku0606 | 0:ccdeb3bea793 | 62 | char c; |
Gaku0606 | 0:ccdeb3bea793 | 63 | char u[8]; |
Gaku0606 | 0:ccdeb3bea793 | 64 | }; |
Gaku0606 | 0:ccdeb3bea793 | 65 | union IM920_CAST im920_cast; |
Gaku0606 | 0:ccdeb3bea793 | 66 | |
Gaku0606 | 0:ccdeb3bea793 | 67 | char data[64]; |
Gaku0606 | 0:ccdeb3bea793 | 68 | int sendDataSize; |
Gaku0606 | 0:ccdeb3bea793 | 69 | void (*p_callFunc[256])(void); |
Gaku0606 | 0:ccdeb3bea793 | 70 | char node; |
Gaku0606 | 0:ccdeb3bea793 | 71 | char RSSI;//受信強度 |
Gaku0606 | 0:ccdeb3bea793 | 72 | int rID;//受信した送信機ID |
Gaku0606 | 0:ccdeb3bea793 | 73 | int ID; //自分の固有ID |
Gaku0606 | 0:ccdeb3bea793 | 74 | |
Gaku0606 | 0:ccdeb3bea793 | 75 | /** |
Gaku0606 | 0:ccdeb3bea793 | 76 | @note 無線機の設定を変更するわけではない |
Gaku0606 | 0:ccdeb3bea793 | 77 | @bref IM920XSとの通信ボーレート変更 |
Gaku0606 | 0:ccdeb3bea793 | 78 | @param baudrate 1200,2400,4800,9600,19200,38400,57600 or 115200 |
Gaku0606 | 0:ccdeb3bea793 | 79 | */ |
Gaku0606 | 0:ccdeb3bea793 | 80 | void baud(int baudrate){ |
Gaku0606 | 0:ccdeb3bea793 | 81 | ser->baud(baudrate); |
Gaku0606 | 0:ccdeb3bea793 | 82 | } |
Gaku0606 | 0:ccdeb3bea793 | 83 | |
Gaku0606 | 0:ccdeb3bea793 | 84 | /** |
Gaku0606 | 0:ccdeb3bea793 | 85 | @bref インタラクティブモードへ移行する,@で復帰 |
Gaku0606 | 0:ccdeb3bea793 | 86 | */ |
Gaku0606 | 0:ccdeb3bea793 | 87 | void interactiveMode(); |
Gaku0606 | 0:ccdeb3bea793 | 88 | |
Gaku0606 | 0:ccdeb3bea793 | 89 | /** |
Gaku0606 | 0:ccdeb3bea793 | 90 | @bref 16進数文字列データから数値データを取得します |
Gaku0606 | 0:ccdeb3bea793 | 91 | */ |
Gaku0606 | 0:ccdeb3bea793 | 92 | void data_analyze(); |
Gaku0606 | 0:ccdeb3bea793 | 93 | |
Gaku0606 | 0:ccdeb3bea793 | 94 | /** |
Gaku0606 | 0:ccdeb3bea793 | 95 | @bref データ処理関数を設定 |
Gaku0606 | 0:ccdeb3bea793 | 96 | @param *funcAddr 関数ポインタ、void型引数無し関数のみ設定可 |
Gaku0606 | 0:ccdeb3bea793 | 97 | @param header 関数を選択する0~255のヘッダー |
Gaku0606 | 0:ccdeb3bea793 | 98 | */ |
Gaku0606 | 0:ccdeb3bea793 | 99 | void attach(void (*funcAddr)(void), unsigned header); |
Gaku0606 | 0:ccdeb3bea793 | 100 | |
Gaku0606 | 0:ccdeb3bea793 | 101 | /** |
Gaku0606 | 0:ccdeb3bea793 | 102 | @bref パラメータ不揮発メモリ書き込み許可モードへ移行 |
Gaku0606 | 0:ccdeb3bea793 | 103 | */ |
Gaku0606 | 0:ccdeb3bea793 | 104 | bool enableWrite(); |
Gaku0606 | 0:ccdeb3bea793 | 105 | |
Gaku0606 | 0:ccdeb3bea793 | 106 | /** |
Gaku0606 | 0:ccdeb3bea793 | 107 | @bref パラメータ不揮発メモリ書き込み不許可モードへ移行 |
Gaku0606 | 0:ccdeb3bea793 | 108 | */ |
Gaku0606 | 0:ccdeb3bea793 | 109 | bool disableWrite(); |
Gaku0606 | 0:ccdeb3bea793 | 110 | |
Gaku0606 | 0:ccdeb3bea793 | 111 | /** |
Gaku0606 | 0:ccdeb3bea793 | 112 | @bref 固有IDを読み出す |
Gaku0606 | 0:ccdeb3bea793 | 113 | */ |
Gaku0606 | 0:ccdeb3bea793 | 114 | int readID(); |
Gaku0606 | 0:ccdeb3bea793 | 115 | |
Gaku0606 | 0:ccdeb3bea793 | 116 | /** |
Gaku0606 | 0:ccdeb3bea793 | 117 | @bref ノード番号をセットする |
Gaku0606 | 0:ccdeb3bea793 | 118 | */ |
Gaku0606 | 0:ccdeb3bea793 | 119 | bool setNodeNumber(char nodeNum); |
Gaku0606 | 0:ccdeb3bea793 | 120 | |
Gaku0606 | 0:ccdeb3bea793 | 121 | /** |
Gaku0606 | 0:ccdeb3bea793 | 122 | @bref ノード番号を読み出す |
Gaku0606 | 0:ccdeb3bea793 | 123 | */ |
Gaku0606 | 0:ccdeb3bea793 | 124 | int readNodeNumber(); |
Gaku0606 | 0:ccdeb3bea793 | 125 | |
Gaku0606 | 0:ccdeb3bea793 | 126 | /** |
Gaku0606 | 0:ccdeb3bea793 | 127 | @bref 受信する無線機IDを一つ登録する |
Gaku0606 | 0:ccdeb3bea793 | 128 | */ |
Gaku0606 | 0:ccdeb3bea793 | 129 | bool setReceiveID(int ID); |
Gaku0606 | 0:ccdeb3bea793 | 130 | |
Gaku0606 | 0:ccdeb3bea793 | 131 | /** |
Gaku0606 | 0:ccdeb3bea793 | 132 | @bref 登録されている受信IDを表示する |
Gaku0606 | 0:ccdeb3bea793 | 133 | */ |
Gaku0606 | 0:ccdeb3bea793 | 134 | void readReceiveID(); |
Gaku0606 | 0:ccdeb3bea793 | 135 | |
Gaku0606 | 0:ccdeb3bea793 | 136 | /** |
Gaku0606 | 0:ccdeb3bea793 | 137 | @bref 登録されている受信IDを全消去する |
Gaku0606 | 0:ccdeb3bea793 | 138 | */ |
Gaku0606 | 0:ccdeb3bea793 | 139 | bool eraseReceiveID(); |
Gaku0606 | 0:ccdeb3bea793 | 140 | |
Gaku0606 | 0:ccdeb3bea793 | 141 | /** |
Gaku0606 | 0:ccdeb3bea793 | 142 | @bref 使用する周波数chを設定する |
Gaku0606 | 0:ccdeb3bea793 | 143 | */ |
Gaku0606 | 0:ccdeb3bea793 | 144 | bool setChannel(char ch); |
Gaku0606 | 0:ccdeb3bea793 | 145 | |
Gaku0606 | 0:ccdeb3bea793 | 146 | /** |
Gaku0606 | 0:ccdeb3bea793 | 147 | @bref 使用する周波数chを読み出す |
Gaku0606 | 0:ccdeb3bea793 | 148 | */ |
Gaku0606 | 0:ccdeb3bea793 | 149 | char readChannel(); |
Gaku0606 | 0:ccdeb3bea793 | 150 | |
Gaku0606 | 0:ccdeb3bea793 | 151 | /** |
Gaku0606 | 0:ccdeb3bea793 | 152 | @bref アスキーコードの文字列で送受信ができるようにする |
Gaku0606 | 0:ccdeb3bea793 | 153 | */ |
Gaku0606 | 0:ccdeb3bea793 | 154 | bool enableCharacterIO(); |
Gaku0606 | 0:ccdeb3bea793 | 155 | |
Gaku0606 | 0:ccdeb3bea793 | 156 | /** |
Gaku0606 | 0:ccdeb3bea793 | 157 | @bref バイナリ送受信モードへ移行 |
Gaku0606 | 0:ccdeb3bea793 | 158 | */ |
Gaku0606 | 0:ccdeb3bea793 | 159 | bool disableCharacterIO(); |
Gaku0606 | 0:ccdeb3bea793 | 160 | |
Gaku0606 | 0:ccdeb3bea793 | 161 | /** |
Gaku0606 | 0:ccdeb3bea793 | 162 | @bref 送信バッファにdouble型を一つ入れる |
Gaku0606 | 0:ccdeb3bea793 | 163 | */ |
Gaku0606 | 0:ccdeb3bea793 | 164 | void write(double val); |
Gaku0606 | 0:ccdeb3bea793 | 165 | |
Gaku0606 | 0:ccdeb3bea793 | 166 | /** |
Gaku0606 | 0:ccdeb3bea793 | 167 | @bref 送信バッファにlong型を一つ入れる |
Gaku0606 | 0:ccdeb3bea793 | 168 | */ |
Gaku0606 | 0:ccdeb3bea793 | 169 | void write(long val); |
Gaku0606 | 0:ccdeb3bea793 | 170 | |
Gaku0606 | 0:ccdeb3bea793 | 171 | /** |
Gaku0606 | 0:ccdeb3bea793 | 172 | @bref 送信バッファにfloat型を一つ入れる |
Gaku0606 | 0:ccdeb3bea793 | 173 | */ |
Gaku0606 | 0:ccdeb3bea793 | 174 | void write(float val); |
Gaku0606 | 0:ccdeb3bea793 | 175 | /** |
Gaku0606 | 0:ccdeb3bea793 | 176 | @bref 送信バッファにint型を一つ入れる |
Gaku0606 | 0:ccdeb3bea793 | 177 | */ |
Gaku0606 | 0:ccdeb3bea793 | 178 | void write(int val); |
Gaku0606 | 0:ccdeb3bea793 | 179 | |
Gaku0606 | 0:ccdeb3bea793 | 180 | /** |
Gaku0606 | 0:ccdeb3bea793 | 181 | @bref 送信バッファにshort型を一つ入れる |
Gaku0606 | 0:ccdeb3bea793 | 182 | */ |
Gaku0606 | 0:ccdeb3bea793 | 183 | void write(short val); |
Gaku0606 | 0:ccdeb3bea793 | 184 | |
Gaku0606 | 0:ccdeb3bea793 | 185 | /** |
Gaku0606 | 0:ccdeb3bea793 | 186 | @bref 送信バッファにchar型を一つ入れる |
Gaku0606 | 0:ccdeb3bea793 | 187 | */ |
Gaku0606 | 0:ccdeb3bea793 | 188 | void write(char val); |
Gaku0606 | 0:ccdeb3bea793 | 189 | |
Gaku0606 | 0:ccdeb3bea793 | 190 | /** |
Gaku0606 | 0:ccdeb3bea793 | 191 | @bref 送信バッファにfloat型を複数入れる |
Gaku0606 | 0:ccdeb3bea793 | 192 | */ |
Gaku0606 | 0:ccdeb3bea793 | 193 | // void write(float *array, int count); |
Gaku0606 | 0:ccdeb3bea793 | 194 | |
Gaku0606 | 0:ccdeb3bea793 | 195 | template <typename T> void write(T *array, int count){ |
Gaku0606 | 0:ccdeb3bea793 | 196 | for(int i = 0;i < count; i++){ |
Gaku0606 | 0:ccdeb3bea793 | 197 | write(array[i]); |
Gaku0606 | 0:ccdeb3bea793 | 198 | } |
Gaku0606 | 0:ccdeb3bea793 | 199 | } |
Gaku0606 | 0:ccdeb3bea793 | 200 | /** |
Gaku0606 | 0:ccdeb3bea793 | 201 | @bref 送信バッファを送信する |
Gaku0606 | 0:ccdeb3bea793 | 202 | */ |
Gaku0606 | 0:ccdeb3bea793 | 203 | void send(); |
Gaku0606 | 0:ccdeb3bea793 | 204 | |
Gaku0606 | 0:ccdeb3bea793 | 205 | /** |
Gaku0606 | 0:ccdeb3bea793 | 206 | @bref 送信バッファにヘッダーを付ける、writeする前に使う |
Gaku0606 | 0:ccdeb3bea793 | 207 | */ |
Gaku0606 | 0:ccdeb3bea793 | 208 | void header(char headerNumber){ |
Gaku0606 | 0:ccdeb3bea793 | 209 | write(headerNumber); |
Gaku0606 | 0:ccdeb3bea793 | 210 | } |
Gaku0606 | 0:ccdeb3bea793 | 211 | |
Gaku0606 | 0:ccdeb3bea793 | 212 | /** |
Gaku0606 | 0:ccdeb3bea793 | 213 | @bref デバッグ用、受信バッファを表示 |
Gaku0606 | 0:ccdeb3bea793 | 214 | */ |
Gaku0606 | 0:ccdeb3bea793 | 215 | void im920_debug(); |
Gaku0606 | 0:ccdeb3bea793 | 216 | |
Gaku0606 | 0:ccdeb3bea793 | 217 | /** |
Gaku0606 | 0:ccdeb3bea793 | 218 | @bref インタラクティブモードでコマンドを表示する |
Gaku0606 | 0:ccdeb3bea793 | 219 | */ |
Gaku0606 | 0:ccdeb3bea793 | 220 | void printFormat(); |
Gaku0606 | 0:ccdeb3bea793 | 221 | |
Gaku0606 | 0:ccdeb3bea793 | 222 | /** |
Gaku0606 | 0:ccdeb3bea793 | 223 | @bref データ配列をshort型に変換する |
Gaku0606 | 0:ccdeb3bea793 | 224 | @param array データのchar型配列、データの始まるアドレスを入れる |
Gaku0606 | 0:ccdeb3bea793 | 225 | */ |
Gaku0606 | 0:ccdeb3bea793 | 226 | short toShort(char *array); |
Gaku0606 | 0:ccdeb3bea793 | 227 | short toShort(int i){ |
Gaku0606 | 0:ccdeb3bea793 | 228 | return toShort(&data[i]); |
Gaku0606 | 0:ccdeb3bea793 | 229 | } |
Gaku0606 | 0:ccdeb3bea793 | 230 | |
Gaku0606 | 0:ccdeb3bea793 | 231 | /** |
Gaku0606 | 0:ccdeb3bea793 | 232 | @bref データ配列をint型に変換する |
Gaku0606 | 0:ccdeb3bea793 | 233 | @param array データのchar型配列、データの始まるアドレスを入れる |
Gaku0606 | 0:ccdeb3bea793 | 234 | */ |
Gaku0606 | 0:ccdeb3bea793 | 235 | int toInt(char *array); |
Gaku0606 | 0:ccdeb3bea793 | 236 | int toInt(int i){ |
Gaku0606 | 0:ccdeb3bea793 | 237 | return toInt(&data[i]); |
Gaku0606 | 0:ccdeb3bea793 | 238 | } |
Gaku0606 | 0:ccdeb3bea793 | 239 | /** |
Gaku0606 | 0:ccdeb3bea793 | 240 | @bref データ配列をfloat型に変換する |
Gaku0606 | 0:ccdeb3bea793 | 241 | @param array データのchar型配列、データの始まるアドレスを入れる |
Gaku0606 | 0:ccdeb3bea793 | 242 | */ |
Gaku0606 | 0:ccdeb3bea793 | 243 | float toFloat(char *array); |
Gaku0606 | 0:ccdeb3bea793 | 244 | float toFloat(int i){ |
Gaku0606 | 0:ccdeb3bea793 | 245 | return toFloat(&data[i]); |
Gaku0606 | 0:ccdeb3bea793 | 246 | } |
Gaku0606 | 0:ccdeb3bea793 | 247 | /** |
Gaku0606 | 0:ccdeb3bea793 | 248 | @bref データ配列をlong型に変換する |
Gaku0606 | 0:ccdeb3bea793 | 249 | @param array データのchar型配列、データの始まるアドレスを入れる |
Gaku0606 | 0:ccdeb3bea793 | 250 | */ |
Gaku0606 | 0:ccdeb3bea793 | 251 | long toLong(char *array); |
Gaku0606 | 0:ccdeb3bea793 | 252 | long toLong(int i){ |
Gaku0606 | 0:ccdeb3bea793 | 253 | return toLong(&data[i]); |
Gaku0606 | 0:ccdeb3bea793 | 254 | } |
Gaku0606 | 0:ccdeb3bea793 | 255 | |
Gaku0606 | 0:ccdeb3bea793 | 256 | /** |
Gaku0606 | 0:ccdeb3bea793 | 257 | @bref データ配列をdouble型に変換する |
Gaku0606 | 0:ccdeb3bea793 | 258 | @param array データのchar型配列、データの始まるアドレスを入れる |
Gaku0606 | 0:ccdeb3bea793 | 259 | */ |
Gaku0606 | 0:ccdeb3bea793 | 260 | double toDouble(char *array); |
Gaku0606 | 0:ccdeb3bea793 | 261 | double toDouble(int i){ |
Gaku0606 | 0:ccdeb3bea793 | 262 | return toDouble(&data[i]); |
Gaku0606 | 0:ccdeb3bea793 | 263 | } |
Gaku0606 | 0:ccdeb3bea793 | 264 | /** |
Gaku0606 | 0:ccdeb3bea793 | 265 | @bref チェックサムを計算する |
Gaku0606 | 0:ccdeb3bea793 | 266 | @param count データの個数、何byteか |
Gaku0606 | 0:ccdeb3bea793 | 267 | */ |
Gaku0606 | 0:ccdeb3bea793 | 268 | char im920CheckSum(int count); |
Gaku0606 | 0:ccdeb3bea793 | 269 | |
Gaku0606 | 0:ccdeb3bea793 | 270 | /** |
Gaku0606 | 0:ccdeb3bea793 | 271 | @bref 受信データのチェックサムの計算結果を入れる |
Gaku0606 | 0:ccdeb3bea793 | 272 | */ |
Gaku0606 | 0:ccdeb3bea793 | 273 | char receiveCheckSum; |
Gaku0606 | 0:ccdeb3bea793 | 274 | |
Gaku0606 | 0:ccdeb3bea793 | 275 | private: |
Gaku0606 | 0:ccdeb3bea793 | 276 | |
Gaku0606 | 0:ccdeb3bea793 | 277 | /** |
Gaku0606 | 0:ccdeb3bea793 | 278 | @bref 1文字受信するごとに呼ばれ、受信バッファに入れる |
Gaku0606 | 0:ccdeb3bea793 | 279 | */ |
Gaku0606 | 0:ccdeb3bea793 | 280 | void im920Handler(); |
Gaku0606 | 0:ccdeb3bea793 | 281 | |
Gaku0606 | 0:ccdeb3bea793 | 282 | char checkSum; |
Gaku0606 | 0:ccdeb3bea793 | 283 | |
Gaku0606 | 0:ccdeb3bea793 | 284 | /** |
Gaku0606 | 0:ccdeb3bea793 | 285 | @bref 何もしない関数 |
Gaku0606 | 0:ccdeb3bea793 | 286 | */ |
Gaku0606 | 0:ccdeb3bea793 | 287 | static void dummyFunc(void); |
Gaku0606 | 0:ccdeb3bea793 | 288 | |
Gaku0606 | 0:ccdeb3bea793 | 289 | /** |
Gaku0606 | 0:ccdeb3bea793 | 290 | @bref 16進数文字を数値に変換する関数 |
Gaku0606 | 0:ccdeb3bea793 | 291 | */ |
Gaku0606 | 0:ccdeb3bea793 | 292 | int asciiToNumber(char c); |
Gaku0606 | 0:ccdeb3bea793 | 293 | }; |
Gaku0606 | 0:ccdeb3bea793 | 294 | |
Gaku0606 | 0:ccdeb3bea793 | 295 | inline void IM920::write(double val){ |
Gaku0606 | 0:ccdeb3bea793 | 296 | if(sendDataSize <= 56){ |
Gaku0606 | 0:ccdeb3bea793 | 297 | im920_cast.d = val; |
Gaku0606 | 0:ccdeb3bea793 | 298 | sprintf(im920_sendBuff, "%s%02X%02X%02X%02X%02X%02X%02X%02X", im920_sendBuff, im920_cast.u[0], im920_cast.u[1], im920_cast.u[2] |
Gaku0606 | 0:ccdeb3bea793 | 299 | , im920_cast.u[3], im920_cast.u[4], im920_cast.u[5], im920_cast.u[6], im920_cast.u[7]); |
Gaku0606 | 0:ccdeb3bea793 | 300 | sendDataSize += 8; |
Gaku0606 | 0:ccdeb3bea793 | 301 | checkSum = checkSum ^ im920_cast.u[7] ^ im920_cast.u[6] ^ im920_cast.u[5] ^ im920_cast.u[4] ^ im920_cast.u[3] ^ im920_cast.u[2] ^ im920_cast.u[1] ^ im920_cast.u[0]; |
Gaku0606 | 0:ccdeb3bea793 | 302 | } |
Gaku0606 | 0:ccdeb3bea793 | 303 | } |
Gaku0606 | 0:ccdeb3bea793 | 304 | |
Gaku0606 | 0:ccdeb3bea793 | 305 | inline void IM920::write(long val){ |
Gaku0606 | 0:ccdeb3bea793 | 306 | if(sendDataSize <= 56){ |
Gaku0606 | 0:ccdeb3bea793 | 307 | im920_cast.l = val; |
Gaku0606 | 0:ccdeb3bea793 | 308 | sprintf(im920_sendBuff, "%s%02X%02X%02X%02X%02X%02X%02X%02X", im920_sendBuff, im920_cast.u[0], im920_cast.u[1], im920_cast.u[2] |
Gaku0606 | 0:ccdeb3bea793 | 309 | , im920_cast.u[3], im920_cast.u[4], im920_cast.u[5], im920_cast.u[6], im920_cast.u[7]); |
Gaku0606 | 0:ccdeb3bea793 | 310 | sendDataSize += 8; |
Gaku0606 | 0:ccdeb3bea793 | 311 | checkSum = checkSum ^ im920_cast.u[7] ^ im920_cast.u[6] ^ im920_cast.u[5] ^ im920_cast.u[4] ^ im920_cast.u[3] ^ im920_cast.u[2] ^ im920_cast.u[1] ^ im920_cast.u[0]; |
Gaku0606 | 0:ccdeb3bea793 | 312 | } |
Gaku0606 | 0:ccdeb3bea793 | 313 | } |
Gaku0606 | 0:ccdeb3bea793 | 314 | |
Gaku0606 | 0:ccdeb3bea793 | 315 | inline void IM920::write(float val){ |
Gaku0606 | 0:ccdeb3bea793 | 316 | if(sendDataSize <= 60){ |
Gaku0606 | 0:ccdeb3bea793 | 317 | im920_cast.f = val; |
Gaku0606 | 0:ccdeb3bea793 | 318 | sprintf(im920_sendBuff, "%s%02X%02X%02X%02X", im920_sendBuff, im920_cast.u[0],im920_cast.u[1],im920_cast.u[2],im920_cast.u[3]); |
Gaku0606 | 0:ccdeb3bea793 | 319 | sendDataSize += 4; |
Gaku0606 | 0:ccdeb3bea793 | 320 | checkSum = checkSum ^ im920_cast.u[3] ^ im920_cast.u[2] ^ im920_cast.u[1] ^ im920_cast.u[0]; |
Gaku0606 | 0:ccdeb3bea793 | 321 | } |
Gaku0606 | 0:ccdeb3bea793 | 322 | } |
Gaku0606 | 0:ccdeb3bea793 | 323 | inline void IM920::write(int val){ |
Gaku0606 | 0:ccdeb3bea793 | 324 | if(sendDataSize <= 60){ |
Gaku0606 | 0:ccdeb3bea793 | 325 | im920_cast.i = val; |
Gaku0606 | 0:ccdeb3bea793 | 326 | sprintf(im920_sendBuff, "%s%08X", im920_sendBuff, (uint32_t)val); |
Gaku0606 | 0:ccdeb3bea793 | 327 | sendDataSize += 4; |
Gaku0606 | 0:ccdeb3bea793 | 328 | checkSum = checkSum ^ im920_cast.u[3] ^ im920_cast.u[2] ^ im920_cast.u[1] ^ im920_cast.u[0]; |
Gaku0606 | 0:ccdeb3bea793 | 329 | } |
Gaku0606 | 0:ccdeb3bea793 | 330 | } |
Gaku0606 | 0:ccdeb3bea793 | 331 | inline void IM920::write(short val){ |
Gaku0606 | 0:ccdeb3bea793 | 332 | if(sendDataSize <= 62){ |
Gaku0606 | 0:ccdeb3bea793 | 333 | im920_cast.s = val; |
Gaku0606 | 0:ccdeb3bea793 | 334 | sprintf(im920_sendBuff, "%s%04X", im920_sendBuff, (uint16_t)val); |
Gaku0606 | 0:ccdeb3bea793 | 335 | sendDataSize += 2; |
Gaku0606 | 0:ccdeb3bea793 | 336 | checkSum = checkSum ^ im920_cast.u[1] ^ im920_cast.u[0]; |
Gaku0606 | 0:ccdeb3bea793 | 337 | } |
Gaku0606 | 0:ccdeb3bea793 | 338 | } |
Gaku0606 | 0:ccdeb3bea793 | 339 | inline void IM920::write(char val){ |
Gaku0606 | 0:ccdeb3bea793 | 340 | if(sendDataSize < 64){ |
Gaku0606 | 0:ccdeb3bea793 | 341 | im920_cast.c = val; |
Gaku0606 | 0:ccdeb3bea793 | 342 | sprintf(im920_sendBuff, "%s%02X", im920_sendBuff, (uint8_t)val); |
Gaku0606 | 0:ccdeb3bea793 | 343 | sendDataSize += 1; |
Gaku0606 | 0:ccdeb3bea793 | 344 | checkSum = im920_cast.u[0] ^ '0'; |
Gaku0606 | 0:ccdeb3bea793 | 345 | } |
Gaku0606 | 0:ccdeb3bea793 | 346 | } |
Gaku0606 | 0:ccdeb3bea793 | 347 | /* |
Gaku0606 | 0:ccdeb3bea793 | 348 | inline void IM920::write(float *array, int count){ |
Gaku0606 | 0:ccdeb3bea793 | 349 | if(sendDataSize < (64 - (4*count))){ |
Gaku0606 | 0:ccdeb3bea793 | 350 | for(int i = 0; i < count; i++){ |
Gaku0606 | 0:ccdeb3bea793 | 351 | write((float)array[i]); |
Gaku0606 | 0:ccdeb3bea793 | 352 | } |
Gaku0606 | 0:ccdeb3bea793 | 353 | } |
Gaku0606 | 0:ccdeb3bea793 | 354 | }*/ |
Gaku0606 | 0:ccdeb3bea793 | 355 | |
Gaku0606 | 0:ccdeb3bea793 | 356 | inline void IM920::send(){ |
Gaku0606 | 0:ccdeb3bea793 | 357 | if(sendDataSize > 0){ |
Gaku0606 | 0:ccdeb3bea793 | 358 | AS = RESPONSE_STRING; |
Gaku0606 | 0:ccdeb3bea793 | 359 | //write(checkSum); |
Gaku0606 | 0:ccdeb3bea793 | 360 | //sprintf(im920_sendBuff, "%s%02X", im920_sendBuff, checkSum); |
Gaku0606 | 0:ccdeb3bea793 | 361 | im920_sendBuff[128] = '\0';//もしバッファがあふれて文字列になっていなかったら |
Gaku0606 | 0:ccdeb3bea793 | 362 | ser->printf("TXDA %s\r\n", im920_sendBuff); |
Gaku0606 | 0:ccdeb3bea793 | 363 | printf("send -> TXDA %s\r\n", im920_sendBuff); |
Gaku0606 | 0:ccdeb3bea793 | 364 | sendDataSize = 0;//初期化 |
Gaku0606 | 0:ccdeb3bea793 | 365 | memset(im920_sendBuff, '\0', 129); |
Gaku0606 | 0:ccdeb3bea793 | 366 | AS = DATA_STRING; |
Gaku0606 | 0:ccdeb3bea793 | 367 | } |
Gaku0606 | 0:ccdeb3bea793 | 368 | } |
Gaku0606 | 0:ccdeb3bea793 | 369 | |
Gaku0606 | 0:ccdeb3bea793 | 370 | #endif |