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

Dependents:   multiserial_test serial_check_controller receiverA receiver_transmitter ... more

Revision:
28:7620ef9e7187
Parent:
27:6dcd6c2fba1a
Child:
29:e85f05ee9ad5
--- a/MultiSerial.cpp	Wed Oct 15 11:52:20 2014 +0000
+++ b/MultiSerial.cpp	Wed Oct 15 12:29:41 2014 +0000
@@ -7,72 +7,32 @@
 #include "RawSerial.h"
 
     
-        MultiSerial::MultiSerial(PinName tx,PinName rx) : __serial__(tx,rx){
-            /*
-            switch(state){
-            
-            case read:
-            {
-            __serial__.attach(this,&MultiSerial::RX,Serial::RxIrq);
-            uint8_t k = __serial__.getc();
-            break;
-            }
-            
-            case write:
-            {
-            __serial__.attach(this,&MultiSerial::TX,Serial::TxIrq);
-            __serial__.putc(1);
-            break;
-            }
-            
-            case both:
-            {
-             __serial__.attach(this,&MultiSerial::RX,Serial::RxIrq);
-            uint8_t m = __serial__.getc();
-            __serial__.attach(this,&MultiSerial::TX,Serial::TxIrq);
-            __serial__.putc(1);
-            }
-            
-        }
-        */
-    }
+        MultiSerial::MultiSerial(PinName tx,PinName rx) : __serial__(tx,rx){}
     
         void MultiSerial::safety(){
             
-            __readData[0] = 0;
-            __readData[1] = 0;
+            for(int l = 0;l <= __readSize;l++){
+                
+                __readData[l] = 0;
+        
+                }
             }
     
         void MultiSerial::start_write(){
             
-            __stop_write = 0;
             __serial__.attach(this,&MultiSerial::TX,RawSerial::TxIrq);
             __serial__.putc(1);
             
             }
-            
-        void MultiSerial::stop_write(){
-            
-            __stop_write  = 1;
-            
-            }
-            
-            
+                
         void MultiSerial::start_read(){
             
-            __stop_read = 0;
             __serial__.attach(this,&MultiSerial::RX,RawSerial::RxIrq);
             uint8_t k = __serial__.getc();
             
             __first_bit = k;
             
             }
-            
-        void MultiSerial::stop_read(){
-            
-            __stop_read = 1;
-            
-            }
 
         void MultiSerial::read_data(uint8_t* readData,uint8_t readKey){
 
@@ -84,32 +44,30 @@
 
         void MultiSerial::write_data(uint8_t* writeData,uint8_t writeKey){
 
-            __writeData=writeData;
+            __writeData = writeData;
             __writeSize = __SIZE(__writeData);
             __writeKey = writeKey;
         }
 
-
         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;
+            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;
 
-                for(int k=1;k<=__writeSize;k++){
+                for(int k = 1;k <= __writeSize;k++){
                     txData[k] = __writeData[k-1];
                 }
 
                 //送るデータ = センサ等のデータ
-                for(i=KEY+1, tx_checkcode=0; i<__writeSize+1; i++){
+                for(i = KEY+1, tx_checkcode = 0; i < __writeSize+1; i++){
                     tx_checkcode ^= txData[i];
                 }//CHECKCODE作成
                 txData[__writeSize+1] = tx_checkcode;
-                tx=0;
+                tx = 0;
             }
             __serial__.putc(txData[tx]);
             tx++;
@@ -117,39 +75,37 @@
 
         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;
+            static uint8_t rx = 0, i;
+            static uint8_t rxData[MAX_DATA_NUM] = {__readKey};
+            static uint8_t rx_checkcode = 0;
 
             rxData[rx] = __serial__.getc();
 
-            if(rxData[KEY]==__readKey){
+            if(rxData[KEY] == __readKey){
                 rx++;
             }
 
-            if(rx==__readSize+1){
-                for(i=KEY+1, rx_checkcode=0; i<__readSize+1; i++){
+            if(rx == __readSize+1){
+                for(i = KEY+1, rx_checkcode = 0; i < __readSize+1; i++){
                     rx_checkcode ^= rxData[i];
                 }//CHECKCODE作成
             }
 
             if(rx >= __readSize+2){
-                if(rxData[__readSize+1]==rx_checkcode){
+                if(rxData[__readSize+1] == rx_checkcode){
                         
                     __check_rx = 1; 
                     
                     xbee_check.attach(this,&MultiSerial::safety,0.5);   
                         
-                    for(int m=1;m<=__readSize;m++){
+                    for(int m = 1;m <= __readSize;m++){
                         __readData[m-1] = rxData[m];
                     }
 
                     //使うデータ = 受け取ったデータ
                 }else{
                     
-                    __check_rx=0;
+                    __check_rx = 0;
                     
                     }
                 rx=0;
@@ -169,9 +125,8 @@
             }
             
         void MultiSerial::check_rx_wait(){
-            
                 
-                if(__check_rx==0) NVIC_SystemReset();
+                if(__check_rx == 0) NVIC_SystemReset();
             
             }
             
\ No newline at end of file