首先
A
r
d
u
i
n
o
Arduino
Arduino如果使用
a
n
a
l
o
g
R
e
a
d
analogRead
analogRead从传感器读取模拟信号的话,其值的范围一定是
[
0
,
1023
]
[0,1023]
[0,1023],即
10
10
10个比特大小。如果是使用
d
i
g
i
t
a
l
R
e
a
d
digitalRead
digitalRead的话,其值只有
0
0
0和
1
1
1两种情况,那么
1
1
1比特就够了。针对一般性,本文就第一种情况分析如何传送数据。首先要简单介绍一下
A
r
d
u
i
n
o
S
e
r
i
a
l
Arduino\ Serial
Arduino Serial模块里的
w
r
i
t
e
(
)
write()
write()方法和
p
r
i
n
t
l
n
(
)
println()
println()方法:
w
r
i
t
e
(
)
write()
write():以二进制比特流(以字节为单位)方式发送数据,考虑到数据是
10
10
10比特,考虑将高3位组成一个字节,低7位组成一个字节,此外考虑到Arduino板子发送的其他数据的干扰问题,在发送的时候发送
128
+
i
128+i
128+i以实现下位机发送与上位机接收同步,相应的
P
C
(
p
y
t
h
o
n
)
PC(python)
PC(python)可使用
p
y
t
h
o
n
p
y
s
e
r
i
a
l
python\ pyserial
python pyserial模块里的
r
e
a
d
(
)
read()
read()方法读取
p
r
i
n
t
l
n
(
)
println()
println():对于要发送的一个十进制整数,从高位到低位依次发送每一位上的数字,发送的形式是以这些位上的数字对应的ASCII发送的,然后在末尾加上一个回车(ASCII 13, 或 ‘\r’)和一个换行符(ASCII 10, 或 ‘\n’)。比如要发送
123
123
123,那么发送的是字节数组:
49
50
51
13
10
49\ 50\ 51\ 13\ 10
49 50 51 13 10 ,因为
1
,
2
,
3
1,2,3
1,2,3对应的ASCII值分别为
49
,
50
,
51
49,50,51
49,50,51。相应的
P
C
(
p
y
t
h
o
n
)
PC(python)
PC(python)可以使用
p
y
s
e
r
i
a
l
pyserial
pyserial模块的
r
e
a
d
l
i
n
e
(
)
readline()
readline()方法读取一行。
|