uint8_t型とunsigned char型に対応した多バイトシリアル通信用ライブラリ
Dependents: multiserial_test serial_check_controller receiverA receiver_transmitter ... more
Revision 12:5539a5dcdeff, committed 2014-09-23
- Comitter:
- Hatter
- Date:
- Tue Sep 23 10:25:59 2014 +0000
- Parent:
- 10:ce09c92e33b4
- Child:
- 13:afc65bff2e6b
- Commit message:
- ????
Changed in this revision
MultiSerial.cpp | Show annotated file Show diff for this revision Revisions of this file |
MultiSerial.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/MultiSerial.cpp Wed Sep 03 08:48:44 2014 +0000 +++ b/MultiSerial.cpp Tue Sep 23 10:25:59 2014 +0000 @@ -6,8 +6,8 @@ #include "MultiSerial.h" - MultiSerial::MultiSerial(PinName tx,PinName rx,dir_state state) : __serial__(tx,rx){ - + MultiSerial::MultiSerial(PinName tx,PinName rx) : __serial__(tx,rx){ + /* switch(state){ case read: @@ -31,8 +31,39 @@ __serial__.attach(this,&MultiSerial::TX,Serial::TxIrq); __serial__.putc(1); } + } + */ } + + void MultiSerial::start_write(){ + + __stop_write = 0; + __serial__.attach(this,&MultiSerial::TX,Serial::TxIrq); + __serial__.putc(1); + + } + + void MultiSerial::stop_write(){ + + __stop_write = 1; + + } + + + void MultiSerial::start_read(){ + + __stop_read = 0; + __serial__.attach(this,&MultiSerial::RX,Serial::RxIrq); + uint8_t k = __serial__.getc(); + + } + + void MultiSerial::stop_read(){ + + __stop_read = 1; + + } void MultiSerial::read_data(uint8_t* readData,uint8_t readKey){ @@ -43,6 +74,9 @@ void MultiSerial::write_data(uint8_t* writeData,uint8_t writeKey){ + + __serial__.attach(this,&MultiSerial::TX,Serial::TxIrq); + __serial__.putc(1); __writeData=writeData; __writeSize = __SIZE(__writeData); @@ -52,11 +86,13 @@ void MultiSerial::TX(void){//送信バッファ空き割り込み用関数 + if(__stop_write==1){return;} + static uint8_t tx=__writeSize+2, i; static uint8_t txData[MAX_DATA_NUM]={__writeKey}; static uint8_t tx_checkcode=0; if(tx >= __writeSize+2){ - txData[KEY] = __writeKey;; + txData[KEY] = __writeKey; for(int k=1;k<=__writeSize;k++){ txData[k] = __writeData[k-1]; @@ -74,7 +110,9 @@ }//受信割り込み用関数 void MultiSerial::RX(void){ - + + if(__stop_read==1){return;} + static uint8_t rx=0, i; static uint8_t rxData[MAX_DATA_NUM]={__readKey}; static uint8_t rx_checkcode=0;
--- a/MultiSerial.h Wed Sep 03 08:48:44 2014 +0000 +++ b/MultiSerial.h Tue Sep 23 10:25:59 2014 +0000 @@ -43,12 +43,14 @@ * @endcode */ +/* typedef enum { write, read, both }dir_state; + */ class MultiSerial{ @@ -61,7 +63,7 @@ * @param state 通信方向 read,write,both */ - MultiSerial(PinName tx,PinName rx,dir_state state=both); + MultiSerial(PinName tx,PinName rx); /**データ読み込みするよ * @@ -90,18 +92,28 @@ */ void RX(void); + void start_read(); + + void stop_read(); + + void start_write(); + + void stop_write(); protected: Serial __serial__; - volatile uint8_t* __readData; - volatile uint8_t __readSize; - volatile uint8_t __readKey; + volatile uint8_t* __readData; + volatile uint8_t __readSize; + volatile uint8_t __readKey; - volatile uint8_t* __writeData; - volatile uint8_t __writeSize; - volatile uint8_t __writeKey; + volatile uint8_t* __writeData; + volatile uint8_t __writeSize; + volatile uint8_t __writeKey; + + volatile uint8_t __stop_read; + volatile uint8_t __stop_write; }; #endif \ No newline at end of file