打开Arduino,新建项目,保存项目为demo04。复制上期视频中的部分代码,包括引用的库文件,创建的对象和数组。为了提高代码的可维护性,定义一个无符号的8位的整型类型,数组命名为呼吸,漏斗,数据缓存,删掉多余代码。
新建一个发送数组的方法:FPM383C_SendData,本方法带有两个参数,一个是发送长度,另一个是发送的数组。方法里面是发送命令,发送的数组和数组长度。flush一下,Flush是等待串口缓冲区中的数据发送,完成的命令。新建一个接收指纹模块,返回信息的方法命名为receivedate,带有一个参数,这个参数是防止未接收到信息卡死的情况而设置的限制时间。
先定一个变量i,进入will循环。当available恒等于0,并且在限制时间内窗口没有数据,而且在规定的时间内进行循环并延迟1毫秒秒。当串口有数据或者超出设定的时间就会退出循环。当串口有数据时,available大于0,先延迟2毫秒,然后定义一个存放接收数据的数组,数组长度先设置成30,读取串口数据。用read方法,把每次接到的数据存放到新定义的数组中。然后是i++,如果i大于30的话,if i大于30就结束循环。

在setup方法中设置波特率为57600,调用发送方法,发送长度为23和绿灯闪烁,点亮200毫秒,循环5次的命令数组发送给指纹模块。调用接收方法,在一个2000毫秒的参数,通过放循环,通过创建的创口对象,把接收到的数据数组按照16进制在串口监视器中打印出来。
TX表示以16进制的形式打印,编译一下,编译成功。拔掉TX、RX引脚上的线,因为上传代码时会用到TX、RX,引脚被占用了就不能上传代码,然后上传代码到开发板中上传成功。
当按下复位键绿灯闪烁,点亮200毫秒,熄灭200毫秒,循环5次串口监视器中以16进制显示的指纹模块的信息,后面多余的0是因为数值定义长度为30,接收的数据没有30个元素。