下位机嵌入式Linux终端的程序设计为:先创建一个数据库文件test.db,接着就是一个死循环,串口不停地查找有没有数据写入,当检测到数据时,便写入到test.db中,若写入有误,则立即跳出循环,终止程序。

char sql[100]=“create table receive(name varchar(40))”;

qlite3_open(“/var/sd/test.db”,&db); //在SD卡中创建

test.db文件

sqlite3_exec(db,sql,0,0,&errmsg); //在test.db文件中插入

表receiver

fd=open_port(fd,1)//打开串口1

set_opt(fd,9600,8,‘N’,1)//配置串口属性,开始通信

while(1)

{

n=0;

i=0;

bzero(read_buf, sizeof(read_buf));

if( (n=read(fd, read_buf, sizeof(read_buf))) 《=0)

Continue;//未读到数据则继续查找串口

printf(“recever %d wordsn”,n);//输出读到的字符数

sprintf(sql,“insert into receive values(%s)”,read_buf);

result =sqlite3_exec(db,sql,0,0,&errmsg);//插入数据

到数据库中

if(result==SQLITE_OK)

printf(“第%3d条数据写入成功n”,++i);

//若插入成功则提示

else break;//若插入不成功,则跳出循环

}

整个测试根据上位机串口发送的频率不同做了多组实验,每组实验写入1 000个数据,最终结果分析如下:上位机在定时80 ms左右或大于80 ms的情况下发送数据时,数据库写入的误码率为零;当定时时间小于80 ms时,随着定时时间变小误码率会越来越高。通过数据分析可知原因有以下几点:一是数据库本身写入需用时几十毫秒,二是SD卡并非高速读写设备,当数据还未完全写入数据库时若有新数据发过来,则下次读写将会发生难以估计的错误。实验还得出了当把数据库文件写入到系统Flash上的总耗时约为50 ms,比写入SD卡中约少30 ms。不过就80 ms左右的一次读写速度而言,嵌入式数据库sqlite3执行效率和稳定性非常可观,现在一般的RFID读写器通过串口执行一条指令的时间也需几十毫秒的时间,因而使用sqlite3数据库在执行速率和稳定性上对于安检系统中RFID读写数据的处理可以很好地达到要求,而且sqlite3还支持数据加密,安全性同样非常出色。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查