arduino 使用String 替代不定长byte[]数组

发布时间 2023-10-04 10:24:21作者: chengwh

使用串口传输hex数据时,常用byte[]数组接收数据,若预先不能知道将要接收到数据的数量,那么byte[]数组的长度很难处理。偶尔想到用String对象来存储串口传输hex数据应当很方便,经测试,非常成功。

测试程序:

 String hh="";
 void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
  
  delay(10); // this speeds up the simulation
    while (Serial.available()) {
    delay(3);  //delay to allow buffer to fill
    if (Serial.available() > 0) {
      char c = Serial.read();  //gets one byte from serial buffer
      hh += c; //makes the string readString
    }
  }
  if(hh.length()>0){
    Serial.println(hh.length());
    for (int i=0;i<hh.length();i++){
     Serial.print(i,HEX);Serial.print(":");Serial.println((byte)hh[i],HEX);
    }
    hh="";
  }
}

向串口传入0x00~0xff共256个数据,其结果串口输出:

256
0:0
1:1
2:2
3:3
4:4
5:5
6:6
7:7
8:8
9:9
A:A
B:B
C:C
D:D
E:E
F:F
10:10
11:11
12:12
13:13
14:14
15:15
16:16
17:17
18:18
19:19
1A:1A
1B:1B
1C:1C
1D:1D
1E:1E
1F:1F
20:20
21:21
22:22
23:23
24:24
25:25
26:26
27:27
28:28
29:29
2A:2A
2B:2B
2C:2C
2D:2D
2E:2E
2F:2F
30:30
31:31
32:32
33:33
34:34
35:35
36:36
37:37
38:38
39:39
3A:3A
3B:3B
3C:3C
3D:3D
3E:3E
3F:3F
40:40
41:41
42:42
43:43
44:44
45:45
46:46
47:47
48:48
49:49
4A:4A
4B:4B
4C:4C
4D:4D
4E:4E
4F:4F
50:50
51:51
52:52
53:53
54:54
55:55
56:56
57:57
58:58
59:59
5A:5A
5B:5B
5C:5C
5D:5D
5E:5E
5F:5F
60:60
61:61
62:62
63:63
64:64
65:65
66:66
67:67
68:68
69:69
6A:6A
6B:6B
6C:6C
6D:6D
6E:6E
6F:6F
70:70
71:71
72:72
73:73
74:74
75:75
76:76
77:77
78:78
79:79
7A:7A
7B:7B
7C:7C
7D:7D
7E:7E
7F:7F
80:80
81:81
82:82
83:83
84:84
85:85
86:86
87:87
88:88
89:89
8A:8A
8B:8B
8C:8C
8D:8D
8E:8E
8F:8F
90:90
91:91
92:92
93:93
94:94
95:95
96:96
97:97
98:98
99:99
9A:9A
9B:9B
9C:9C
9D:9D
9E:9E
9F:9F
A0:A0
A1:A1
A2:A2
A3:A3
A4:A4
A5:A5
A6:A6
A7:A7
A8:A8
A9:A9
AA:AA
AB:AB
AC:AC
AD:AD
AE:AE
AF:AF
B0:B0
B1:B1
B2:B2
B3:B3
B4:B4
B5:B5
B6:B6
B7:B7
B8:B8
B9:B9
BA:BA
BB:BB
BC:BC
BD:BD
BE:BE
BF:BF
C0:C0
C1:C1
C2:C2
C3:C3
C4:C4
C5:C5
C6:C6
C7:C7
C8:C8
C9:C9
CA:CA
CB:CB
CC:CC
CD:CD
CE:CE
CF:CF
D0:D0
D1:D1
D2:D2
D3:D3
D4:D4
D5:D5
D6:D6
D7:D7
D8:D8
D9:D9
DA:DA
DB:DB
DC:DC
DD:DD
DE:DE
DF:DF
E0:E0
E1:E1
E2:E2
E3:E3
E4:E4
E5:E5
E6:E6
E7:E7
E8:E8
E9:E9
EA:EA
EB:EB
EC:EC
ED:ED
EE:EE
EF:EF
F0:F0
F1:F1
F2:F2
F3:F3
F4:F4
F5:F5
F6:F6
F7:F7
F8:F8
F9:F9
FA:FA
FB:FB
FC:FC
FD:FD
FE:FE
FF:FF