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

Dependents:   multiserial_test serial_check_controller receiverA receiver_transmitter ... more

Files at this revision

API Documentation at this revision

Comitter:
bousiya03
Date:
Wed Oct 15 12:29:41 2014 +0000
Parent:
27:6dcd6c2fba1a
Child:
29:e85f05ee9ad5
Commit message:
fixed some bugs

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 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
--- a/MultiSerial.h	Wed Oct 15 11:52:20 2014 +0000
+++ b/MultiSerial.h	Wed Oct 15 12:29:41 2014 +0000
@@ -69,7 +69,7 @@
          * @param readKey 多バイト通信のキーコード
          */
 
-        void read_data(uint8_t* readData,uint8_t readKey);
+        void    read_data(uint8_t* readData,uint8_t readKey);
         
         /**データカキコするよ
          *
@@ -77,40 +77,36 @@
          * @param writeKey 多バイト通信のキーコード
          */
 
-        void write_data(uint8_t* writeData,uint8_t writeKey);
+        void    write_data(uint8_t* writeData,uint8_t writeKey);
 
         /**送信割り込み用関数
          *
          *@param none
          */
-        void TX(void);
+        void    TX(void);
         /**受信割り込み用関数
          *
          *@param none
          */
-        void RX(void);
-        
-        void start_read();
+        void    RX(void);
         
-        void stop_read();
+        void    start_read();
         
-        void start_write();
-        
-        void stop_write();
+        void    start_write();
         
         uint8_t readable_check();
         
         uint8_t re_first_bit();
         
-        void check_rx_wait();
+        void    check_rx_wait();
         
-        void safety();
+        void    safety();
 
     protected:
 
-        Serial __serial__;
+        Serial      __serial__;
         
-        Timeout xbee_check;
+        Timeout     xbee_check;
 
         volatile    uint8_t*    __readData;
         volatile    uint8_t     __readSize;
@@ -120,9 +116,6 @@
         volatile    uint8_t     __writeSize;
         volatile    uint8_t     __writeKey;
         
-        volatile    uint8_t     __stop_read;
-        volatile    uint8_t     __stop_write;
-        
         volatile    uint8_t     __check_rx;
         
         volatile    uint8_t     __first_bit;