羅劍文, 許佳玲, 何炎明, 張以順
(中山大學 生命科學學院, 廣東 廣州 510275)
開放實驗教學是深化實驗教學改革、提高實驗教學質量的一項創新工作,建立和規范開放實驗管理制度是確保開放式研究性實驗教學能否順利進行的關鍵[1-2]。實驗室儀器開放管理中,接口技術的應用[3]控制了用戶在預約時間段內的儀器使用權限,提高了管理效率。
實驗人員經常會觸及開、關機的問題,許多人認為非常簡單的開機關機,也有值得我們探討的地方。如何令日常儀器管理中的開、關機操作規范化[4],減少因此對儀器造成的損害,發揮設備的科學和經濟效益,延長設備的有效壽命是一個重要的科學管理問題[5]。
實驗室儀器開放管理系統由預約管理系統和刷卡控制系統組成(見圖1),從軟件上實現了實驗室與儀器的預約,通過接口從硬件上實現了控制實驗室與儀器的使用,是一個基于Web平臺的網絡管理模型[6]。其中,刷卡系統又分為服務器端和客戶端。客戶端使用網絡接口[7-8]與服務器端連接,它可通過普通交換機拓展,也可以使用無線網絡方式通信[9],易用且拓展性好。

圖1 實驗室儀器開放管理系統結構
在儀器開放管理中,軟件預約系統與刷卡控制系統緊密結合,使預約記錄與使用記錄相對一致,但缺乏監督用戶正常關機的機制,需靠用戶熟練掌握操作流程,并自覺按標準執行[10]。在開放管理中,特別是儀器使用經驗不多的新用戶,有時難免出現差錯。儀器在運行狀態下斷電輕則影響使用壽命,重則損壞儀器。所以在大型設備共享平臺的儀器開放管理系統中[11],可引入儀器操作監控機制[12-13],將軟件預約系統與控制接口的刷卡系統有機地結合在一起,合理地控制流程。其中,進程管理模式比較適合大型儀器PC機控制端的操作監控,可有效地引導用戶合法關機。
在配置PC機的大型儀器中,外圍配套設施必須經過接口與PC機連接,并通過PC機的主程序去控制儀器執行各項操作指令。在儀器控制主程序運行過程中,會在PC機的操作系統里生成一個進程,從任務管理器中,可以查看到這個主程序進程的存在;同理,當程序完全退出的時候,這個進程也會隨之關閉。
早期曾經設想過用正在運行的“應用程序”作為刷卡系統的判斷依據,但這個對話框里的內容很容易被隱藏,影響系統對儀器運行狀態的判斷。進程對話框里的內容相對來說更能體現正在運行的程序,向系統反饋用戶操作信息。
引入進程監控機制的儀器開放管理系統,就是利用關鍵進程存在與否,判斷用戶是否已退出主程序,繼而判斷用戶是否合法關機,是否有權限退出管理系統。當用戶退出時,讀卡器將用戶的刷卡信息通過USB接口傳遞到PC機上[12-13],發出“下機”命令;如果用戶尚未退出主程序,接口控制程序會檢測到相應的進程未退出,提示用戶關閉儀器控制主程序后,再刷卡退出登錄狀態,按規定順序開、關機[14],以防止儀器外圍設施在未復位的狀態下,被強行關機。
當用戶正常關閉主程序時,接口控制程序則檢測到儀器使用程序不在任務管理器的進程列表中,允許用戶刷卡退出登錄狀態,終止計費。如果涉及多個主程序,還可以通過設定程序關閉的順序,更加有效地引導用戶用規范的方式退出系統。
在刷卡程序的客戶端,設計一個系統管理員初始化客戶端系統的對話框。在程序初始化的時候,設定服務器端與訪客戶端的通信IP地址,并抓取一個儀器維持使用所必須運行的主程序(關鍵進程)作為刷卡系統判斷儀器運行狀態是否已退出的依據。
(1) 開機。開機流程見圖2。

圖2 開機流程圖
//上機消息處理
{
if (WindowsMessage.MY_SAS_TYPE_LOGON == sasType)//判斷是否刷卡登錄系統
{
//開始儀器使用的處理過程
if (!_authenticationView.TryLogin())
{
_authenticationView.ShowWaitLoginView();//授權驗證不成功,返回等待登錄界面
return;
}
}
//授權驗證成功,進入登錄前處理
if (WindowsMessage.MY_SAS_TYPE_LOGON == sasType)
{
_authenticationView.OnLoggedOn();
_authenticationView.HiddenDialog();
}
}
(2) 關機。關機流程見圖3。

圖3 關機流程圖
進程監控管理的相關代碼:
//判斷進程是否存在
{
string name = ″AuthenticationClient″;//程序進程名稱
int ProgressCount = 1;//判斷進程是否運行的標識
Process[] prc = Process.GetProcesses();
foreach(Process pr in prc)//遍歷整個進程
{
if (name == pr.ProcessName)//如果進程存在
{
ProgressCount = 0;//計數器清空
return;
}
}
if (ProgressCount != 0)//如果計數器不為0,說明所指定程序沒有運行
{
switch(type)
{
case WindowsMessage.WM_USER_ON://下機消息
_winLogon.wlxSasNotify(WindowsMessage.MY_SAS_TYPE_LOGON);//通知程序處理登錄退出流程,向服務器返回刷卡記錄并終止計費
break;
case WindowsMessage.WM_USER_SHUTDOWN://關機消息
_winLogon.wlxSasNotify(WindowsMessage.MY_SAS_TYPE_SHUNTOWN);//通知程序處理登錄登出流程,向服務器返回刷卡記錄并終止計費
break;
default:
return;
}
}
else
{
MessageBox.Show(″請關閉儀器控制主程序后,再刷卡退出!″);
return;
}
}
這個模型引入了用戶操作的反饋機制,并利用操作系統自帶的任務管理器的進程監控功能來實現,工作流程簡單可行。在大型儀器的關機操作中,有效地提示用戶按流程關機,減少了儀器在未復位狀態下關機帶來的損壞。本文研究的課題是實驗技術人員長期接觸各種儀器體會到的儀器使用的共性問題,所述的解決方法是專業技術和管理方法的完美結合。
[1] 溫光浩,程蕾.加強實驗室開放與共享為創新人才培養提供強有力支撐[J].實驗室研究與探索,2009,28(4):10-12.
[2] 何炎明,戚康標.實驗室全開放模式下安全管理的實踐與探索[J].實驗技術與管理,2012,29(5):213-216.
[3] 劉樂善. 微型計算機接口技術及應用[M].武漢:華中科技大學出版社, 2000.
[4] 沈啟松, 周亞林.談如何提高醫護人員的儀器操作能力[J].醫療裝備,2005,18(12):30-31.
[5] 王金發,戚康標.強化共享平臺建設促進 教學與科研相互轉化[J].實驗室研究與探索,2009,28(4):216-217,235.
[6] 李捷,王汝傳.基于Web平臺的分布式網絡管理模型的研究與實現[J].計算機工程與應用, 2003,39(36):134-137.
[7] 王亮,白晶.基于Internet的遠程機電控制系統智能網絡接口設計[J].機電一體化,2007(1):52-55.
[8] 龔靜.信息家電網絡的嵌入式網絡接口設計[J].通信與廣播電視,2009(1):34-42.
[9] 吳海華,孔為民.無線網絡應用實例分析[J].現代情報,2008(9):223-225.
[10] 董文祥.醫用電子儀器維護和修理的一般方法[J].醫療衛生裝備,2008,29(5):120.
[11] 張以順,馮雙.實驗教學示范中心大型設備共享平臺建設探索與實踐[J].中國現代教育裝備,2012(21):15-18.
[12] 陳爭光, 楊雪松.系統進程監視及保護系統的實現[J].自動化技術與應用,2008 ,27(2):64-66.
[13] 吳正國,周治國.自動化運維操作監控審計技術的探討[J].電子技術,2011(10):40-42.
[14] 王冬海,唐濤.USB總線的IC 卡讀卡器設計[J].北京交通大學學報,2004,28(5):88-91.