|
|
无论你通过什么途径通讯,都是数据的传输,但是当一次传的数据多了,发送前数据转为byte[],接收到后转回多个数据,会比较麻烦,因为一直使用C#开发,里面类的序列化与反序列化很方便,根据这个思路编了这个类库。
DataSerial类里包含了
BoolArray,ByteArray,CharArray,IntArray,LongArray,FloatArray,StringArray等类,分别对应不同的数据类型,
而每个子类包含了:
Add()//加入一个数据
Inser()//插入一个数据
Remove()//删除一个数据
Clear()//清除全部数据
Serialize()//序列化数据,就是生成Byte[]数组
Deserialize()//反序列化数据,就是Byte[]生成类的对象
还有其他方法就不列举了
DataSerial本身也包含这些方法,怎么用呢?
DataSerial ds1;//实例化
ds1.BoolArray.Add(true);//增加
ds1.BoolArray.Inser(false,1);//插入
ds1.BoolArray.RemoveAt(1);//删除
ds1.BoolArray.Add(true);
ds1.BoolArray.Add(false);
ds1.ByteArray.Add(11);
ds1.ByteArray.Add(22);
ds1.ByteArray.Add(33);
ds1.ByteArray.Add(44);
ds1.CharArray.Add('A');
ds1.CharArray.Add('B');
ds1.CharArray.Add('C');
ds1.CharArray.Add('D');
ds1.IntArray.Add(1111);
ds1.IntArray.Add(2222);
ds1.IntArray.Add(3333);
ds1.IntArray.Add(4444);
ds1.LongArray.Add(111111111);
ds1.LongArray.Add(222222222);
ds1.LongArray.Add(333333333);
ds1.LongArray.Add(444444444);
ds1.FloatArray.Add(1111.1111);
ds1.FloatArray.Add(2222.2222);
ds1.FloatArray.Add(3333.3333);
ds1.FloatArray.Add(4444.4444);
ds1.StringArray.Add("AAAA");
ds1.StringArray.Add("BBBBBB");
ds1.StringArray.Add("CCCCCCCC");
ds1.StringArray.Add("DDDDDDDDDD");
byte *bytea = ds1.Serialize();//序列化成 byte[]数据流了,可以发送出去
ds1.Clear();
DataSerial ds2;//接收方实例化对象
ds2.Deserialize(bytea);//反序列化,现在上面ds1那堆数据都在ds2里了,可以逐个访问
水平不高,比较耗内存,在Arduino UNO里数据多就会丢失,内存小啊,才2K
Arduino DUE上很正常,需要的留邮箱 |
|