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

Dependents:   multiserial_test serial_check_controller receiverA receiver_transmitter ... more

Revision:
12:5539a5dcdeff
Parent:
9:26262b75f40b
Child:
13:afc65bff2e6b
--- 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;