0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于MySQL數(shù)據(jù)庫應(yīng)用開發(fā)實現(xiàn)嵌入式數(shù)控系統(tǒng)的設(shè)計

電子設(shè)計 ? 來源:微計算機(jī)信息 ? 作者:鄔依林 , 黃瑛 ? 2020-12-02 10:07 ? 次閱讀

1 引言

本文所論述是數(shù)控系統(tǒng)大課題中人機(jī)交互的外圍部分子課題中的數(shù)據(jù)庫開發(fā)應(yīng)用。在數(shù)控加工系統(tǒng)中,存在著大量的用戶設(shè)定參數(shù)、系統(tǒng)參數(shù)、坐標(biāo)軸參數(shù)、軸補(bǔ)償參數(shù)和刀具特征參數(shù)等數(shù)據(jù)。在整個生產(chǎn)制造系統(tǒng)中,這些數(shù)據(jù)不僅對于數(shù)控編程人員是必需的,而且對于實時過程控制系統(tǒng)、調(diào)度系統(tǒng)、工序處理、庫存管理系統(tǒng)、刀具維護(hù)管理系統(tǒng)等也是必需的。這些數(shù)據(jù)的組織管理方式對數(shù)控系統(tǒng)的實時性乃至性能影響很大,因此高性能數(shù)控系統(tǒng)必須解決數(shù)據(jù)的有效性組織管理問題。如果采用直接將數(shù)據(jù)存放在一個表或字符數(shù)組中,數(shù)據(jù)的修改與維護(hù)會相當(dāng)困難、繁雜,這與數(shù)控系統(tǒng)對數(shù)據(jù)操作要求簡單方便與快捷相悖,因此這種組織管理方式不能滿足數(shù)控系統(tǒng)的要求。目前數(shù)控加工系統(tǒng)普遍采用的文本文件格式存儲管理數(shù)據(jù)的方式也存在著實時操作性較差和磁盤空間浪費(fèi)嚴(yán)重的缺點(diǎn),而實時性和存儲空間兩個要素對于高性能嵌入式數(shù)控系統(tǒng)來說卻是至關(guān)重要的。因此,在本課題研究中,作者提出在嵌入式Linux環(huán)境下的數(shù)控系統(tǒng)中采用基于MySQL數(shù)據(jù)庫管理數(shù)據(jù)的全新技術(shù)解決方案。實踐結(jié)果表明:在嵌入式數(shù)控系統(tǒng)中采用數(shù)據(jù)庫進(jìn)行數(shù)據(jù)管理,滿足了高性能嵌入式數(shù)控系統(tǒng)在實時性和存儲空間方面的要求,提高了系統(tǒng)的速度,極大地改善了系統(tǒng)的性能。本文就嵌入式數(shù)控系統(tǒng)中數(shù)據(jù)庫應(yīng)用開發(fā)的具體實現(xiàn)過程,以及如何將數(shù)據(jù)庫應(yīng)用程序向嵌入式數(shù)控系統(tǒng)硬件平臺的移植方法和對數(shù)據(jù)庫進(jìn)行最小化裁剪的技巧上做了詳細(xì)介紹。

由于本課題開發(fā)的人機(jī)界面是利用GTK+圖形庫,因此系統(tǒng)中采用的基于MySQL數(shù)據(jù)庫應(yīng)用開發(fā),需要解決MySQL和GTK+相互融合的問題。GTK+沒有直接操作數(shù)據(jù)庫的控件,對數(shù)據(jù)庫的操作可以采取通過MySQL C API 直接進(jìn)行,再調(diào)用GTK+ 的顯示功能的方法來完成與用戶的交互。

2 數(shù)據(jù)庫實現(xiàn)

2.1 數(shù)據(jù)庫的建立

2.1.1創(chuàng)建work數(shù)據(jù)庫

首先創(chuàng)建一個名稱為work的數(shù)據(jù)庫,并包含系統(tǒng)需要的所有表,作為根用戶連接到MySQL。具體創(chuàng)建過程如下:

% mysql –uroot mysql; //進(jìn)入數(shù)據(jù)庫

mysql》 SET PASSWORD=PASSWORD(‘lyw00001’); //為根用戶分配一個口令

mysql》 CREATE DATABASE work ; //創(chuàng)建work數(shù)據(jù)庫

mysql》 GRANT ALL ON work.* to lyw@localhost IDENTIFIED BY ‘lyw00001’;//創(chuàng)建一個名為lyw的用戶

//與根用戶使用同一口令,并為用戶賦予數(shù)據(jù)庫work的完全訪問權(quán)限

% mysql –ulyw –p lyw00001 work; //連接庫

2.1.2創(chuàng)建表

針對基于GTK+庫設(shè)計的用戶操作界面有若干個表與之相對應(yīng),下面以一個界面為例詳細(xì)說明MySQL與GTK+的連接過程。

連接到數(shù)據(jù)庫之后,就可以向它添加內(nèi)容了,使用CREATE命令來創(chuàng)建一個名為tbl_amend_amend的表。

CREATE TABLE tbl_amend_amend (

number INT NOT NULL PRIMARY KEY,

shapeh VARCHAR(10),

deleteh VARCHAR(10),

shaped VARCHAR(10),

deleted VARCHAR(10),);

創(chuàng)建一個表后,可使用SQL語句INSERT命令向表中填入數(shù)據(jù),但這種方法當(dāng)數(shù)據(jù)量大時會耗時很多。因此作者采用批處理模式向表中填入數(shù)據(jù)的方法,具體作法是:首先創(chuàng)建一個存儲SQL語句的文本文件amend_data.sql,如圖1所示;然后執(zhí)行SQL語句:% mysql –ulyw –p lyw00001 work 就將圖1中的數(shù)據(jù)加入到tbl_amend_amend表中了,如表1所示。如果需要對數(shù)據(jù)進(jìn)行修改,則只需要在amend_data.sql文本文件中進(jìn)行,然后重新執(zhí)行一次上文中提到的語句就可以輕松地完成。

基于MySQL數(shù)據(jù)庫應(yīng)用開發(fā)實現(xiàn)嵌入式數(shù)控系統(tǒng)的設(shè)計

圖1amend_data文本文件

表1tbl_amend_amend表

2.2 連接模塊

完成數(shù)據(jù)庫及表的創(chuàng)建,有了相關(guān)的數(shù)據(jù),下一步的工作就是在應(yīng)用程序中實現(xiàn)與數(shù)據(jù)庫的連接。應(yīng)用程序中用connect_to_db()模塊實現(xiàn)了與數(shù)據(jù)庫work連接功能,模塊代碼如下:

void Connect_to_db(){……;

conx = mysql_init((MYSQL *)0L); //初始化

……;

temp = mysql_real_connect(conx,126.0.0.1, lyw,lywcita001, work, 0, 0L, 0);

……;}

mysql_real_connect函數(shù)用于連接到名稱為conx 的MySQL服務(wù)器,其主機(jī)的IP地址為“127.0.0.1”,用戶名為“l(fā)yw”,密碼為“l(fā)ywcita001”,連接的數(shù)據(jù)庫名為work。

2.3 填充模塊

實現(xiàn)了與數(shù)據(jù)庫的連接后,接下來應(yīng)將數(shù)據(jù)庫的數(shù)據(jù)填充到用戶界面上去。應(yīng)用程序中用Fill_clist()模塊實現(xiàn)數(shù)據(jù)填充功能,其實現(xiàn)流程為:用MySQL查詢所需的數(shù)據(jù);將查詢結(jié)果保存在內(nèi)部緩存中;將緩存中的數(shù)據(jù)顯示在用戶界面上。模塊代碼如下:

void Fill_clist(){ ……;

gchar *amend_clist_row[5] = {,,,,}; //定義gtk+數(shù)組數(shù)據(jù)指針及變量

mysql_query(conx,select number,shapeh,deleteh,shaped,deleted from tbl_amend_amend);

result_set = mysql_store_result(conx); //將查詢結(jié)果保存在內(nèi)部緩存中

num_fields = mysql_num_fields(result_set); //獲得結(jié)果集中列的數(shù)量

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字符串?dāng)?shù)組的值一一對應(yīng)地賦值給amend_clist_row

gtk_clist_append(GTK_CLIST(modify_list),amend_clist_row); }//填充到clist對應(yīng)的域中

mysql_free_result(result_set);} //釋放結(jié)果集所用的內(nèi)存

編譯運(yùn)行插入程序,實現(xiàn)了數(shù)據(jù)庫向用戶界面填充數(shù)據(jù)功能,獲得了如圖2所示的界面。

圖2 MySQL填充圖

2.4 更新模塊

當(dāng)用戶在界面上對系統(tǒng)參數(shù)進(jìn)行修改后,希望將新的數(shù)據(jù)寫入數(shù)據(jù)庫保存,確保數(shù)據(jù)信息的一致性和連續(xù)性,因此應(yīng)用程序應(yīng)具有根據(jù)系統(tǒng)參數(shù)的改變而更新數(shù)據(jù)庫的功能。與填充模塊類似,應(yīng)用程序中用Update_database()模塊實現(xiàn)數(shù)據(jù)庫更新功能。

3 數(shù)據(jù)庫移植

3.1 移植的硬件平臺

本數(shù)控系統(tǒng)中采用了嵌入式PC平臺,嵌入式PC與標(biāo)準(zhǔn)PC機(jī)完全兼容。因而,可以在普通PC上做好設(shè)計和開發(fā),再將軟件移植到嵌入式PC上。本系統(tǒng)開發(fā)采用嵌入式PC104計算機(jī),硬件水平達(dá)到P3級,內(nèi)存為128M,程序存儲選用128M CF[4]卡。

3.2 移植過程

要在數(shù)控系統(tǒng)中應(yīng)用數(shù)據(jù)庫和操作界面,則需要將MySQL和操作界面應(yīng)用程序移植到CF卡中??紤]到CF卡的容量問題,在移植的過程中要對數(shù)據(jù)庫進(jìn)行裁剪。

3.2.1 mysqld運(yùn)行服務(wù)器的移植

要讓MySQL能運(yùn)行在嵌入式系統(tǒng)中,那么mysqld運(yùn)行服務(wù)器文件的移植有著至關(guān)重要的作用。用命令ldd mysqld查詢與mysqld可執(zhí)行文件相關(guān)的庫,結(jié)果如表2所示:

表2 與mysqld可執(zhí)行文件相關(guān)的庫文件

執(zhí)行文件mysqld的大小為3.3M,而其相關(guān)的庫文件的大小約為2M,將mysqld并同上述相關(guān)的庫文件一起移植到CF卡上,這樣mysqld便可在嵌入式硬件平臺上有效地執(zhí)行了。

3.2.2應(yīng)用文件的移植

假定應(yīng)用程序的可執(zhí)行文件為app,用命令ldd app同樣可以查詢到與可執(zhí)行文件app相關(guān)的庫。將應(yīng)用程序連同與應(yīng)用程序執(zhí)行相關(guān)的庫文件一起移植到CF卡上。應(yīng)用程序的大小約為100K,與應(yīng)用程序執(zhí)行相關(guān)聯(lián)的庫文件的大小約為8M,而這8M的庫文件大部分為嵌入式Linux系統(tǒng)自身帶有的庫文件,基本上不需要再移植。這樣就可在嵌入式數(shù)控系統(tǒng)中運(yùn)行用戶操作界面程序,而在后臺運(yùn)行數(shù)據(jù)庫程序了。

4 結(jié)束語

CNC技術(shù)是現(xiàn)代加工技術(shù)的一個重要組成部分,如何在現(xiàn)有的技術(shù)基礎(chǔ)上不斷改進(jìn)數(shù)控系統(tǒng)以滿足新的需求具有十分重要的意義。隨著機(jī)械加工領(lǐng)域?qū)?shù)控系統(tǒng)的精度、效率、功能以及智能化程度[5]的進(jìn)一步要求,控制面板、人機(jī)界面和系統(tǒng)數(shù)據(jù)組織管理方式等方面都需要不斷的完善和創(chuàng)新,系統(tǒng)數(shù)據(jù)的基于Mysql數(shù)據(jù)庫管理方式與目前數(shù)控系統(tǒng)普遍采用的文本文件管理方式相比,數(shù)據(jù)庫只需在一個導(dǎo)入文檔中修改更新數(shù)據(jù)就可以完成對數(shù)據(jù)的維護(hù),操作簡單方便、快捷,并且數(shù)據(jù)庫索引在數(shù)據(jù)庫啟動時進(jìn)駐內(nèi)存,對數(shù)據(jù)庫查詢、數(shù)據(jù)記錄的刪除和添加,索引能很方便、快捷地完成;數(shù)據(jù)庫最小化裁剪后容量很小,因此,不論在實時性方面還是在存儲空間方面都滿足了高性能嵌入式數(shù)控系統(tǒng)的要求,提高了系統(tǒng)的速度,極大地改善了系統(tǒng)的性能。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5087

    文章

    19153

    瀏覽量

    306416
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11326

    瀏覽量

    209961
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3839

    瀏覽量

    64543
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    819

    瀏覽量

    26649
  • 數(shù)控系統(tǒng)
    +關(guān)注

    關(guān)注

    5

    文章

    260

    瀏覽量

    24275
收藏 人收藏

    評論

    相關(guān)推薦

    【OK210申請】嵌入式數(shù)控系統(tǒng)研發(fā)

    申請理由:飛凌嵌入式OK210高性能滿足嵌入式數(shù)控系統(tǒng)前期開發(fā)工作。項目描述:1、軟件系統(tǒng)架構(gòu)設(shè)計;2、基于Qt,C++平臺
    發(fā)表于 06-26 19:09

    嵌入式移動數(shù)據(jù)庫NimbleDB的實現(xiàn)

    數(shù)據(jù)庫技術(shù)一直隨著計算的發(fā)展而不斷進(jìn)步,隨著移動計算時代的到來,嵌入式操作系統(tǒng)對移動數(shù)據(jù)庫系統(tǒng)的需求為數(shù)據(jù)庫技術(shù)開辟了新的發(fā)展空間。
    發(fā)表于 06-25 13:35 ?17次下載

    嵌入式數(shù)控系統(tǒng)的構(gòu)件研究

    軟件復(fù)用技術(shù),可以高效、低成本地構(gòu)筑嵌入式數(shù)控系統(tǒng),滿足當(dāng)前的制造業(yè)需求。通過分析嵌入式數(shù)控系統(tǒng)特點(diǎn),提出了嵌入式
    發(fā)表于 10-13 17:54 ?27次下載

    嵌入式移動數(shù)據(jù)庫NimbleDB的實現(xiàn)

    數(shù)據(jù)庫技術(shù)一直隨著計算的發(fā)展而不斷進(jìn)步,隨著移動計算時代的到來,嵌入式操作系統(tǒng)對移動數(shù)據(jù)庫系統(tǒng)的需求為數(shù)據(jù)庫技術(shù)開辟了新的發(fā)展空間。
    發(fā)表于 12-22 11:27 ?15次下載

    嵌入式數(shù)控系統(tǒng)的構(gòu)件研究

    軟件復(fù)用技術(shù),可以高效、低成本地構(gòu)筑嵌入式數(shù)控系統(tǒng),滿足當(dāng)前的制造業(yè)需求。通過分析嵌入式數(shù)控系統(tǒng)特點(diǎn),提出了嵌入式
    發(fā)表于 07-13 15:51 ?28次下載

    嵌入式數(shù)據(jù)庫數(shù)控系統(tǒng)中的實現(xiàn)

    針對目前數(shù)控系統(tǒng)普遍采用文本文件格式存儲管理數(shù)據(jù)方式上存在的問題,提出在嵌入式數(shù)控系統(tǒng)中采用基于 MySQL
    發(fā)表于 06-07 17:15 ?23次下載

    基于嵌入式的雕銑機(jī)數(shù)控系統(tǒng)的研究與開發(fā)

    基于嵌入式的雕銑機(jī)數(shù)控系統(tǒng)的研究與開發(fā)
    發(fā)表于 05-03 13:52 ?13次下載

    基于ARM的嵌入式數(shù)控系統(tǒng)方案研究與應(yīng)用

    基于ARM的嵌入式數(shù)控系統(tǒng)方案研究與應(yīng)用
    發(fā)表于 10-25 09:20 ?5次下載
    基于ARM的<b class='flag-5'>嵌入式</b><b class='flag-5'>數(shù)控系統(tǒng)</b>方案研究與應(yīng)用

    嵌入式數(shù)據(jù)庫在Java中的應(yīng)用解析

    嵌入式數(shù)據(jù)庫無需安裝,體積小巧,速度又很快,在很多場合可以替代目前流行的MySQL, SQLServer等大中型數(shù)據(jù)庫。本文介紹兩種嵌入式
    發(fā)表于 11-06 14:05 ?0次下載

    基于CORTEX-A8的嵌入式數(shù)控系統(tǒng)設(shè)計

    基于OMAP3530處理器的嵌入式實時系統(tǒng),然后在此基礎(chǔ)上完成基于實時嵌入式數(shù)控系統(tǒng)的設(shè)計。 本文對實時系統(tǒng)
    發(fā)表于 11-23 10:43 ?6次下載
    基于CORTEX-A8的<b class='flag-5'>嵌入式</b><b class='flag-5'>數(shù)控系統(tǒng)</b>設(shè)計

    嵌入式數(shù)控系統(tǒng)實時平臺的設(shè)計

    基于OMAP3530處理器的嵌入式實時系統(tǒng),然后在此基礎(chǔ)上完成基于實時嵌入式數(shù)控系統(tǒng)的設(shè)計。 標(biāo)準(zhǔn)的Linux內(nèi)核當(dāng)中,中斷處理機(jī)制會加設(shè)一定的延遲程序,從而使得
    發(fā)表于 01-25 16:43 ?0次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>數(shù)控系統(tǒng)</b>實時平臺的設(shè)計

    基于嵌入式數(shù)據(jù)庫的海量存儲技術(shù)解析

    到了這些數(shù)據(jù)庫產(chǎn)品的基本特性而已。有時我們需要的可能只是一個簡單的基于磁盤文件的數(shù)據(jù)庫系統(tǒng),這樣就不必安裝龐大的數(shù)據(jù)庫服務(wù)器, 以簡化數(shù)據(jù)庫應(yīng)用程序的設(shè)計。在某些特殊應(yīng)用場合,比如在
    發(fā)表于 06-05 11:00 ?2815次閱讀

    如何吧Mysql數(shù)據(jù)庫移植到嵌入式Linux的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何吧Mysql數(shù)據(jù)庫移植到嵌入式Linux的詳細(xì)資料說明。
    發(fā)表于 01-18 08:00 ?4次下載
    如何吧<b class='flag-5'>Mysql</b><b class='flag-5'>數(shù)據(jù)庫</b>移植到<b class='flag-5'>嵌入式</b>Linux的詳細(xì)資料說明

    嵌入式實驗】《嵌入式數(shù)據(jù)庫 sqlite 移植及使用》

    的基本方法,掌握 sqlite 數(shù)據(jù)庫軟件移植的步驟,掌握 sqlite 開發(fā)的兩種方式 — 命令模式和 C代碼開發(fā)模式 的使用方法,并編程實現(xiàn)簡單通訊錄查詢實驗。二.實驗內(nèi)容實驗4.
    發(fā)表于 10-21 10:51 ?6次下載
    【<b class='flag-5'>嵌入式</b>實驗】《<b class='flag-5'>嵌入式</b><b class='flag-5'>數(shù)據(jù)庫</b> sqlite 移植及使用》

    基于ARMS和FPGA的嵌入式數(shù)控系統(tǒng)設(shè)計原理

    電子發(fā)燒友網(wǎng)站提供《基于ARMS和FPGA的嵌入式數(shù)控系統(tǒng)設(shè)計原理.pdf》資料免費(fèi)下載
    發(fā)表于 10-10 09:33 ?2次下載
    基于ARMS和FPGA的<b class='flag-5'>嵌入式</b><b class='flag-5'>數(shù)控系統(tǒng)</b>設(shè)計原理