Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: Serial_Writer.h
- Revision:
- 1:a9cd302df0c5
- Parent:
- 0:1779b0a23b09
- Child:
- 2:4f7655735c6f
diff -r 1779b0a23b09 -r a9cd302df0c5 Serial_Writer.h
--- a/Serial_Writer.h Thu Apr 29 03:16:39 2021 +0000
+++ b/Serial_Writer.h Fri May 07 08:56:38 2021 +0000
@@ -10,40 +10,37 @@
{
public:
Serial_Writer(PinName TxPin,PinName RxPin,int baudrate);
-
template <typename T>
-
inline void write(T &send,int delay){
int num=sizeof(send);
- char buffer[num];
- for (int i=0,k=0;i<num;k++){
+ char buffer[num+2];
+ for (int i=1,k=0;i<=num;k++){
for(int _bitNum=sizeof(send[0])-1;_bitNum>=0;i++,_bitNum--)buffer[i]=(send[k]>>(8*_bitNum))&0xFF;
}
- _Serial.putc('[');
- _Serial.putc(uint8_t(num)&0xFF);
- _Serial.putc(uint8_t(sizeof(send[0]))&0xFF);
- for (int p=0;p<num;p++)_Serial.putc(buffer[p]);
- _Serial.putc(']');
+ buffer[0]='[';
+ buffer[num+1]=']';
+ for (int p=0;p<sizeof(buffer);p++)_Serial.putc(buffer[p]);
wait_ms(delay);
}
template <typename R>
- inline int receive(R &get){//getの各要素に0x0を必ず代入してください。
- if (_Serial.readable()&&_Serial.getc()=='['){
- uint8_t num=_Serial.getc();
- uint8_t bits=_Serial.getc();
- if !(num%bits)return;
- char buffer[num];
- for (int i=0;i<num;i++)buffer[i]=_Serial.getc();
- if (_Serial.getc()=']'){
- for (int p=0,k=0;p<num/bits;p++){
- for(uint8_t _bits=bits-1;_bits>=0;k++,_bits--)get[p]|=buffer[k]<<(8*_bits);
+ inline int receive(R &get){
+ int num=sizeof(get);
+ int num_0=sizeof(get[0]);
+ char buffer[num+2];
+ if (_Serial.readable()){
+ for(int i=0;i<sizeof(buffer);i++){
+ buffer[i]=_Serial.getc();
+ if(buffer[0]!='[')return -1;
+ }
+ if(buffer[num+1]==']'){
+ for (int s=0;s<(num/num_0);s++)get[s]=0x0;
+ for (int p=1,k=0;p<=num;k++){
+ for (int _byte=num_0-1;_byte>=0;p++,_byte--)get[k]|=buffer[p]<<(8*_byte);
}
- return 1;
- }
- return -1;
- }
- return 0;
+ return 0;//正常終了
+ }else return -1;//異常終了1
+ }else return -2;//異常終了2
}
private: