嵌入式数据库在数控系统中的实现与应用
时间:08-02
来源:互联网
点击:
2.3 填充模块
实现了与数据库的连接后,接下来应将数据库的数据填充到用户界面上去。应用程序中用Fill_clist()模块实现数据填充功能,其实现流程为:用MySQL查询所需的数据;将查询结果保存在内部缓存中;将缓存中的数据显示在用户界面上。模块代码如下:
void Fill_clist(){ ……;
gchar *amend_clist_row[5] = {,,,,}; //定义gtk+数组数据指针及变量
mysql_query(conx,select number,shapeh,deleteh,shaped,deleted from tbl_amend_amend);
result_set = mysql_store_result(conx); //将查询结果保存在内部缓存中
num_fields = mysql_num_fields(result_set); //获得结果集中列的数量
while(db_row = mysql_fetch_row(result_set)) {
lengths = mysql_fetch_lengths(result_set); //获得列的长度
amend_clist_row[0] = db_row[0];
……;
amend_clist_row[4] = db_row[4]; //将获得的db_row字符串数组的值一一对应地赋值给amend_clist_row
gtk_clist_append(GTK_CLIST(modify_list),amend_clist_row); }//填充到clist对应的域中
mysql_free_result(result_set);} //释放结果集所用的内存
编译运行插入程序,实现了数据库向用户界面填充数据功能,获得了如图2所示的界面。
图2 MySQL填充图
2.4 更新模块
当用户在界面上对系统参数进行修改后,希望将新的数据写入数据库保存,确保数据信息的一致性和连续性,因此应用程序应具有根据系统参数的改变而更新数据库的功能。与填充模块类似,应用程序中用Update_database()模块实现数据库更新功能。
3 数据库移植
3.1 移植的硬件平台
本数控系统中采用了嵌入式PC平台,嵌入式PC与标准PC机完全兼容。因而,可以在普通PC上做好设计和开发,再将软件移植到嵌入式PC上。本系统开发采用嵌入式PC104计算机,硬件水平达到P3级,内存为128M,程序存储选用128M CF[4]卡。
3.2 移植过程
要在数控系统中应用数据库和操作界面,则需要将MySQL和操作界面应用程序移植到CF卡中。考虑到CF卡的容量问题,在移植的过程中要对数据库进行裁剪。
3.2.1 mysqld运行服务器的移植
要让MySQL能运行在嵌入式系统中,那么mysqld运行服务器文件的移植有着至关重要的作用。用命令ldd mysqld查询与mysqld可执行文件相关的库,结果如表2所示:
表2 与mysqld可执行文件相关的库文件
执行文件mysqld的大小为3.3M,而其相关的库文件的大小约为2M,将mysqld并同上述相关的库文件一起移植到CF卡上,这样mysqld便可在嵌入式硬件平台上有效地执行了。
3.2.2应用文件的移植
假定应用程序的可执行文件为app,用命令ldd app同样可以查询到与可执行文件app相关的库。将应用程序连同与应用程序执行相关的库文件一起移植到CF卡上。应用程序的大小约为100K,与应用程序执行相关联的库文件的大小约为8M,而这8M的库文件大部分为嵌入式Linux系统自身带有的库文件,基本上不需要再移植。这样就可在嵌入式数控系统中运行用户操作界面程序,而在后台运行数据库程序了。
实现了与数据库的连接后,接下来应将数据库的数据填充到用户界面上去。应用程序中用Fill_clist()模块实现数据填充功能,其实现流程为:用MySQL查询所需的数据;将查询结果保存在内部缓存中;将缓存中的数据显示在用户界面上。模块代码如下:
void Fill_clist(){ ……;
gchar *amend_clist_row[5] = {,,,,}; //定义gtk+数组数据指针及变量
mysql_query(conx,select number,shapeh,deleteh,shaped,deleted from tbl_amend_amend);
result_set = mysql_store_result(conx); //将查询结果保存在内部缓存中
num_fields = mysql_num_fields(result_set); //获得结果集中列的数量
while(db_row = mysql_fetch_row(result_set)) {
lengths = mysql_fetch_lengths(result_set); //获得列的长度
amend_clist_row[0] = db_row[0];
……;
amend_clist_row[4] = db_row[4]; //将获得的db_row字符串数组的值一一对应地赋值给amend_clist_row
gtk_clist_append(GTK_CLIST(modify_list),amend_clist_row); }//填充到clist对应的域中
mysql_free_result(result_set);} //释放结果集所用的内存
编译运行插入程序,实现了数据库向用户界面填充数据功能,获得了如图2所示的界面。
图2 MySQL填充图
2.4 更新模块
当用户在界面上对系统参数进行修改后,希望将新的数据写入数据库保存,确保数据信息的一致性和连续性,因此应用程序应具有根据系统参数的改变而更新数据库的功能。与填充模块类似,应用程序中用Update_database()模块实现数据库更新功能。
3 数据库移植
3.1 移植的硬件平台
本数控系统中采用了嵌入式PC平台,嵌入式PC与标准PC机完全兼容。因而,可以在普通PC上做好设计和开发,再将软件移植到嵌入式PC上。本系统开发采用嵌入式PC104计算机,硬件水平达到P3级,内存为128M,程序存储选用128M CF[4]卡。
3.2 移植过程
要在数控系统中应用数据库和操作界面,则需要将MySQL和操作界面应用程序移植到CF卡中。考虑到CF卡的容量问题,在移植的过程中要对数据库进行裁剪。
3.2.1 mysqld运行服务器的移植
要让MySQL能运行在嵌入式系统中,那么mysqld运行服务器文件的移植有着至关重要的作用。用命令ldd mysqld查询与mysqld可执行文件相关的库,结果如表2所示:
表2 与mysqld可执行文件相关的库文件
相关库文件 | 大小 | 相关库文件 | 大小 |
librt.so.1 => /lib/librt.so.1 | 37K | libstdc++.so.5 => /usr/lib/libstdc++.so.5 | 71K |
libdl.so.2 => /lib/libdl.so.2 | 15K | libm.so.6 => /lib/tls/libm.so.6 | 21K |
libpthread.so.0 => /lib/tls/libpthread.so.0 | 79K | libgcc_s.so.1 => /lib/libgcc_s.so.1 | 30K |
libz.so.1 => /usr/lib/libz.so.1 | 52K | libc.so.6 => /lib/tls/libc.so.6 | 1531K |
libcrypt.so.1 => /lib/libcrypt.so.1 | 23K | /lib/ld-linux.so.2 => /lib/ld-linux.so.2 | 103K |
libnsl.so.1 => /lib/libnsl.so.1 | 91K |
执行文件mysqld的大小为3.3M,而其相关的库文件的大小约为2M,将mysqld并同上述相关的库文件一起移植到CF卡上,这样mysqld便可在嵌入式硬件平台上有效地执行了。
3.2.2应用文件的移植
假定应用程序的可执行文件为app,用命令ldd app同样可以查询到与可执行文件app相关的库。将应用程序连同与应用程序执行相关的库文件一起移植到CF卡上。应用程序的大小约为100K,与应用程序执行相关联的库文件的大小约为8M,而这8M的库文件大部分为嵌入式Linux系统自身带有的库文件,基本上不需要再移植。这样就可在嵌入式数控系统中运行用户操作界面程序,而在后台运行数据库程序了。
- 基于ARM与DSP的嵌入式运动控制器设计(04-25)
- 多核及虚拟化技术在工业和安全领域的应用(05-23)
- 基于ARM核的AT75C220及其在指纹识别系统中的应用(05-24)
- 基于FPGA安全封装的身份认证模型研究(05-27)
- 基于nRF2401智能无线火灾监控系统设计(04-01)
- 智能视频多媒体技术的应用(05-31)
