基于VC環(huán)境的變頻器聯(lián)網(wǎng)控制
3 應用DAO技術(shù)操作數據庫
數據庫是現代計算機應用的一個(gè)重要組成部分,是人們有效地進(jìn)行數據存儲、共享和處理的工具。有兩種主要的數據庫類(lèi)型,即平面數據庫和關(guān)系數據庫。簡(jiǎn)而言之,平面數據庫是一組記錄的集合,數據庫中的每一個(gè)記錄都是由字段構成的,第一個(gè)字段則包含了與本條記錄相關(guān)的特定信息。
而關(guān)系數據庫就像是由若干個(gè)平面數據庫連接在一起形成的。采用關(guān)系數據庫能夠建立一個(gè)記錄集合與另一個(gè)記錄集合之間的關(guān)系。在關(guān)系數據庫中,每一個(gè)記錄集合稱(chēng)為一張表,表之間的連接是通過(guò)關(guān)鍵字實(shí)現的,關(guān)鍵字用來(lái)確定一條記錄的值。
這個(gè)控制軟件的數據庫使用的是平面數據庫。數據庫中存儲了變頻器網(wǎng)絡(luò )的信息和網(wǎng)絡(luò )中各個(gè)變頻器的參數。數據庫用Access建立,應用DAO作為數據庫的訪(fǎng)問(wèn)接口。Microsoft Jet為像Access和Visual Basic這樣的產(chǎn)品提供了數據引擎。DAO是使用Microsoft Jet數據庫引擎來(lái)訪(fǎng)問(wèn)數據庫的。VisualC++6.0提供了對DAO的封裝,MFCDAO類(lèi)封裝了DAO的大部分功能,從而使VC程序可以使用MFCDAO類(lèi)方便地進(jìn)行數據庫訪(fǎng)問(wèn)。
下面具體敘述是如何利用數據庫完成軟件的網(wǎng)絡(luò )控制功能。首先用Access建立變頻器網(wǎng)絡(luò )的信息表,然后程序中建立一個(gè)基類(lèi)為CdaoRecordset(DAO中封裝的一個(gè)類(lèi))的類(lèi)Cdata,該類(lèi)與數據庫中的變頻器網(wǎng)絡(luò )信息表相聯(lián)系。當要在網(wǎng)絡(luò )中添加一個(gè)變頻器時(shí),不僅要在變頻器網(wǎng)絡(luò )信息表上進(jìn)行添加數據操作,還要在數據庫中添加一個(gè)關(guān)于該變頻器功能碼的新表。對變頻器網(wǎng)絡(luò )信息表的添加操作用了一個(gè)CdaoRecordset類(lèi)數據庫指針m_leftptr。CdaoRecordset類(lèi)是對DAO記錄集對象的封裝,代表從數據源中選擇的一種記錄,管理數據庫中表里記錄的操作。而要在數據庫中添加一個(gè)新增變頻器功能碼的新表,需要設定一個(gè)CdaoDatabase類(lèi)的變量。CdaoDatabase類(lèi)是對DAO數據庫對象的封裝,它代表了一個(gè)數據庫連接,管理數據庫的操作和數據庫中表的操作。下面是網(wǎng)絡(luò )中添加一個(gè)變頻器時(shí)對數據庫的操作程序。
CComzDoc*pDoc=(CComzDoc*)GetDocument();
m_leftptr=&pDoc->m_Docptr;
CAddNodeDlgm_addnode;
if(m_addnode.DoModal()==IDOK)
{
m_leftptr->Open();
m_leftptr->AddNew();
m_leftptr->m_NodeAddress=
m_addnode.m_adddress;
m_leftptr->m_NodeName=
m_addnode.m_addnodename;
m_leftptr->m_NodeOrderCalled=
m_addnode.m_comturn;
m_leftptr->Update();
m_leftptr->Close();
CDaoDatabasem_pDatabase;
m_pDatabase.Open(ConverterPc
97.mdb);
CDaoTableDeftable(&m_pDatabase);
table.Create(m_addnode.m_addnodename);
table.CreateField(AutoIndex,dbInteger,2);
table.CreateField(ParaGroup,dbText,10);
table.CreateField(ParaNo,dbInteger,2);
table.CreateField(ParaName,dbText,100);
table.CreateField(ParaDefaultVal,dbInteger,2);
table.CreateField(ParaCoefficient,dbInteger,2);
table.CreateField(ParaDW,dbText,10);
table.CreateField(ParaModif,dbInteger,2);
table.CreateField(ParaMemo,dbText,255);
table.Append();
m_pDatabase.Close();
}
添加完成后,該變頻器如果在線(xiàn)就完成初始化數據庫命令,初始化變頻器的功能碼。在軟件上顯示變頻器功能碼數據庫如圖4所示。
圖4 變頻器功能碼
對控制軟件的數據庫中表的刪除及表中記錄的刪除和更新操作所采用的DAO類(lèi)是一樣的,只是使用的指令不同,這里就不再贅述。變頻器功能碼表中的具體數據,要通過(guò)串口通信從相應的變頻器中獲得,這就要用到VC對計算機串口編程。
評論