机器人技术—基于DELPHI的数据采集与分析类上位机软件的编写

机器人技术——基于DELPHI的数据采集类上位机软件的编写

先来看一张博主花了20分钟弄出来的一个demo,可以通过串口接收单片机传上来的传感器数据,并将数据分别保存到图片、TXT、EXCEL、数据库中:

l  曲线绘制组件

l  Edit组件

l  数据库组件

 

2、 控件设置及代码编写

l  数据通信组件

ComDataPacket组件的ComPort属性设置成ComPort1,这样ComPort组件与ComDataPacket就建立了链接。

设置ComDataPacket以下属性:

l  曲线绘制组件

双击Chart组件,添加5条曲线sensor1- sensor5:

l  保存为图片

在保存按钮中添加如下代码,即可将波形截图,并保存为.bmp文件:

form1.Chart1.SaveToBitmapFile(form1.Edit1.Text);

l  保存到TXT

    AssignFile(F, form1.Edit3.Text);

    Append(F);

    Writeln(F, data) ;

    Closefile(F) ;

l  保存到EXCEL   

    ExcelApp := CreateOleObject(‘Excel.Application’ );

    ExcelApp.WorkBooks.Open(form1.Edit3.Text);

    ExcelApp.workbooks[1].sheets[1].name:=’数据采集demo’;

   ExcelApp.workbooks[1].sheets[1].CELLS[1,2]:=’DATA’;

    ExcelApp.workbooks[1].sheets[1].CELLS[1,3]:=’TIME’;

   ExcelApp.workbooks[1].sheets[1].CELLS[1,4]:=’sensor1′;

   ExcelApp.workbooks[1].sheets[1].CELLS[1,5]:=’sensor2′;

   ExcelApp.workbooks[1].sheets[1].CELLS[1,6]:=’sensor3′;

   ExcelApp.workbooks[1].sheets[1].CELLS[1,7]:=’sensor4′;

    ExcelApp.workbooks[1].sheets[1].CELLS[1,8]:=’sensor5′;

    ExcelApp.ActiveSheet.Rows[2].Insert ;

   ExcelApp.workbooks[1].sheets[1].CELLS[2,2]:=datetostr(now);

   ExcelApp.workbooks[1].sheets[1].CELLS[2,3]:=timetostr(now);

    ExcelApp.workbooks[1].sheets[1].CELLS[2,4]:=sensor1;

   ExcelApp.workbooks[1].sheets[1].CELLS[2,5]:=sensor2;

   ExcelApp.workbooks[1].sheets[1].CELLS[2,6]:=sensor3;

   ExcelApp.workbooks[1].sheets[1].CELLS[2,7]:=sensor4;

    ExcelApp.workbooks[1].sheets[1].CELLS[2,8]:=sensor5;

    ExcelApp.workbooks[1].SAVE;

ExcelApp.QUIT;

l  绘制曲线

form1.Series1.Add(sensor1);

form1.Series2.Add(sensor2);

form1.Series3.Add(sensor3);

form1.Series4.Add(sensor4);

form1.Series5.Add(sensor5);

l  完整串口中断函数

在ComDataPacket控件的OnPacketEvents中添加如下代码:

procedureTForm1.ComDataPacket1Packet(Sender: TObject; const Str: String);

var

a:byte;

rev:array[1..25]ofuchar;

DateTime:TDateTime;

F:Textfile;

sensor1,sensor2,sensor3,sensor4,sensor5:integer;

ExcelApp:Variant;

 

begin

    move(Str[1],rev,20);

    sensor1:=rev[3]*256+rev[4];//在这里只取了16位有效数据,如果想传输浮点数需要4个字节,读者可以思考一下处理的方法

    sensor2:=rev[7]*256+rev[8];

    sensor3:=rev[11]*256+rev[12];

    sensor4:=rev[15]*256+rev[16];

sensor5:=rev[19]*256+rev[20];

form1.Series1.Add(sensor1);

form1.Series2.Add(sensor2);

form1.Series3.Add(sensor3);

form1.Series4.Add(sensor4);

form1.Series5.Add(sensor5);

 

    ExcelApp := CreateOleObject(‘Excel.Application’ );

    ExcelApp.WorkBooks.Open(form1.Edit3.Text);

    ExcelApp.workbooks[1].sheets[1].name:=’数据采集demo’;

    ExcelApp.workbooks[1].sheets[1].CELLS[1,2]:=’DATA’;

   ExcelApp.workbooks[1].sheets[1].CELLS[1,3]:=’TIME’;

   ExcelApp.workbooks[1].sheets[1].CELLS[1,4]:=’sensor1′;

   ExcelApp.workbooks[1].sheets[1].CELLS[1,5]:=’sensor2′;

    ExcelApp.workbooks[1].sheets[1].CELLS[1,6]:=’sensor3′;

   ExcelApp.workbooks[1].sheets[1].CELLS[1,7]:=’sensor4′;

    ExcelApp.workbooks[1].sheets[1].CELLS[1,8]:=’sensor5′;

    ExcelApp.ActiveSheet.Rows[2].Insert ;

   ExcelApp.workbooks[1].sheets[1].CELLS[2,2]:=datetostr(now);

    ExcelApp.workbooks[1].sheets[1].CELLS[2,3]:=timetostr(now);

   ExcelApp.workbooks[1].sheets[1].CELLS[2,4]:=sensor1;

   ExcelApp.workbooks[1].sheets[1].CELLS[2,5]:=sensor2;

   ExcelApp.workbooks[1].sheets[1].CELLS[2,6]:=sensor3;

    ExcelApp.workbooks[1].sheets[1].CELLS[2,7]:=sensor4;

    ExcelApp.workbooks[1].sheets[1].CELLS[2,8]:=sensor5;

    ExcelApp.workbooks[1].SAVE;

    ExcelApp.QUIT;

    AssignFile(F,  form1.Edit3.Text);

    Append(F);

    Writeln(F, data) ;

    Closefile(F) ;

end;

6、总结

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年2月17日
下一篇 2015年2月18日

相关推荐