999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于內存共享的多道分析器與應用軟件數據交換的設計

2021-11-03 08:04:48宋青鋒趙龍于海明張偉
電子技術與軟件工程 2021年16期
關鍵詞:設置服務

宋青鋒 趙龍 于海明 張偉

(丹東東方測控技術股份有限公司 遼寧省丹東市 118000)

多道分析器早已在多種產品中應用,有模擬多道分析器,也有數字多道分析器。不同分析儀產品對多道分析器的需求不同,就形成了不同硬件通信接口和不同硬件通信協議的情況,應用軟件就要根據使用的多道分析器情況,更改硬件接口和通信協議,導致不同產品或者同一產品不同版本的應用軟件都不同。這樣對于應用軟件開發和軟件版本管理都增加了工作量,同時硬件通信協議對于每一個軟件開發人員都是開放的,也不利于多道分析器硬件技術的保密。為了將多道分析器與應用軟件的數據交換過程統一化,使用共享內存技術,開發多道分析器的接口服務軟件,將多道分析器與電腦之間的硬件通信封裝起來。多道分析器廣泛應用于中子活化多元素分析儀中[1-2],隨著產品銷售領域的不斷拓展,硬件及軟件的功能不斷的改變,對多道分析器硬件與應用軟件數據交互統一性的需求更加強烈。

1 數據交換的方法

由于不同多道分析器的硬件接口不同,通信協議也不同,在電腦端開發一個接口服務軟件,負責與多道分析器硬件進行通信。接口服務軟件將與多道分析器通信解析得到的數據按照一定的格式封裝,然后與應用軟件在同一臺電腦的情況下進行數據的交換。實現EXE 程序間數據交換的方法有多種,比如利用剪貼板、利用消息機制、利用SOCKET 和利用內存映射等,本設計采用共享內存映射的方法。在WINDOWS 操作系統中,任何一個進程不允許訪問另一個進程的數據,

包括變量、對象和內存分配等,但是在進程中創建一個內存映射對象,將文件映射到內存中,另一個進程可以訪問此內存中的數據。首先調用CreateFileMapping 函數把文件映射到內存,然后調用MapViewOfFile 函數把文件映像到進程地址空間上,接著通過MapViewOfFile 函數返回的映像內存地址指針寫數據或讀數據,最后通過調用UnmapViewOfFile 函數釋放映像內存[3]。

2 接口服務軟件設計

接口服務軟件基于VC++開發,各功能模塊的工作過程如圖1所示。軟件的主要功能包括:建立共享內存、數據的接收與發送、數據格式的轉換、共享內存的讀寫以及軟件退出時釋放共享內存。

圖1:接口服務軟件工作過程

軟件在初始化時建立共享內存映像并獲取句柄,供后續訪問內存使用。共享內存的屬性設置為可讀可寫,接口服務軟件對外寫數據和接收數據使用同一個內存區域,建立共享內存的主要代碼如下:

在接口服務軟件中實現USB、串口和網口通信,接收到硬件數據后,軟件對硬件數據進行解析,轉換成固定結構的數據,然后將數據寫入共享內存中。向硬件發送數據的過程與接收數據的過程相反,先讀取共享內存中的數據,然后按照硬件通信協議進行數據幀的轉換,最后將數據幀發送到硬件。讀寫共享內存的數據以結構體類型定義,主要代碼如下:

在結構體中成員變量kind 來表示這組數據的類型,比如表示數據是多道分析器的能譜數據、配置參數數據或者脈沖數據等,具體的數據內容存儲在成員變量data 數組中,數據的有效個數用成員變量dataNum 來指示。在讀取共享內存中的數據時需要知道數據是否被更新,寫入數據時也需要通知應用軟件數據是否更新,為了解決這個問題,在數據結構中加入了兩個成員變量id 和old_id。在向共享內存寫入數據時,將id 和old_id 設置不同的值,表示數據被更新。在讀取共享內存中的數據時,查詢id 和old_id 的值,若兩個變量的值不同,則數據被更新過。

接口服務軟件的界面如圖2所示,在軟件的通信接口中可以選擇USB、COM、UDP、TCP Server 和TCP Client,選擇適當的通信接口后,設置正確的接口參數就可以與多道分析器進行通信。接口服務軟件可以讀取硬件系統工作溫度和探測器高壓值,對探測器的運行狀態進行監測。在多個多道分析器同時應用的情況下,通過讀取硬件ID(身份識別碼)來區分連接的硬件。

圖2:接口服務軟件界面

應用軟件負責采集能譜數據和解譜分析,多道分析器的硬件屬性設置及工作狀態監控都在接口服務軟件中完成。為了防止接口服務軟件通信參數和硬件屬性參數被意外更改,設置了功能鎖定密碼,只有輸入正確的解鎖密碼才能使用相應功能。如圖3所示是硬件屬性設置及狀態監控界面,此功能可以讀取多道分析器的能譜數據并顯示,支持多種觸發模式的探測器信號及多道分析器內部信號的采集,用于分析信號狀態。讀取硬件的參數,修改后發送到多道分析器硬件中。

圖3:硬件屬性設置及狀態監控界面

3 應用軟件訪問共享內存

應用軟件要訪問共享內存中的數據,首先也需要建立共享內存映像文件。多個進程要共享單個文件映像對象必須使用相同的名字來訪問該文件映像對象[4]。應用軟件建立的共享內存映像文件名稱要與接口服務軟件建立的共享內存映像文件名稱一致。應用軟件在寫入共享內存數據時要設置不同的id 和old_id 值,讀取共享內存時需要查詢id 和old_id 的值。為了便于應用軟件的開發,去掉應用軟件與訪問共享內存時的繁瑣操作,將訪問共享內存的具體操作和判斷全部封裝到Dll 動態鏈接庫[5]中。Dll 動態鏈接庫提供的接口函數主要有:

DMCASERVERDATA * CreateDmcaData (int DmcaNumber,char OpenDmcaServer,const char *DmcaServerFilePath);

BOOL WriteDmca(DMCASERVERDATA *m_pDmcaServerData,char *cmd);

int ReadDmca(DMCASERVERDATA *m_pDmcaServerData,BOOL bGetFlag);

BOOL DeleteAllDmcaData(DMCASERVERDATA **m_pDmcaServerData,BOOL KillDmcaServer);

BOOL DmcaDataValid(DMCASERVERDATA *m_pDmcaServer Data);

BOOL HideDmcaServer(DMCASERVERDATA *m_pDmcaServer Data);

BOOL DisplayDmcaServer(DMCASERVERDATA *m_pDmca ServerData);

首先應用軟件調用函數CreateDmcaData( )來創建共享內存映像,然后應用軟件可以調用函數WriteDmca( )向共享內存中寫入數據,調用函數ReadDmca( )讀取共享內存中的數據,使用完成后可以調用函數DeleteAllDmcaData( )釋放共享內存映像。在使用共享內存映像前可以調用函數DmcaDataValid( ),根據函數返回值判斷共享內存是否有效。應用軟件調用函數HideDmcaServer( )可以將接口服務軟件界面隱藏到后臺運行,調用函數DisplayDmcaServer()可以使接口服務軟件界面顯示出來。

4 結語

通過使用共享內存技術,設計了多道分析儀與應用軟件之間進行數據交換的接口服務軟件,將不同硬件接口和不同協議的多道分析器與應用軟件之間的數據交換實現了統一的數據結構。多道分析器的改進、升級將不會影響應用軟件的接口部分程序,同時訪問數據提供動態鏈接庫,應用軟件不需要關心具體的硬件通信。

猜你喜歡
設置服務
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
服務在身邊 健康每一天
今日農業(2019年14期)2019-09-18 01:21:54
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
7招教你手動設置參數
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年15期)2019-01-03 12:11:33
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 国产亚洲欧美日本一二三本道| 伊人久久久久久久| 亚洲区欧美区| 激情六月丁香婷婷四房播| 热伊人99re久久精品最新地| 人妻中文久热无码丝袜| 日韩无码视频专区| 色九九视频| 青青国产成人免费精品视频| 免费在线a视频| 久久人人妻人人爽人人卡片av| 欧美一区精品| 视频二区欧美| 欧美日韩国产在线人| 日本一区二区三区精品视频| 欧美日韩中文国产| 国产99免费视频| 尤物精品国产福利网站| 久久亚洲国产最新网站| 99精品欧美一区| 日本一区二区三区精品国产| 无码精油按摩潮喷在线播放| 久久国产成人精品国产成人亚洲| 久久特级毛片| 国产人成在线视频| 欧美成人h精品网站| 欧美日韩成人在线观看| 国产主播在线一区| 青青草欧美| 精品国产污污免费网站| 久久综合亚洲色一区二区三区| 欧美国产在线一区| 亚洲码一区二区三区| 欧美中文字幕在线二区| 五月婷婷丁香色| 91精品国产综合久久香蕉922| 欧美日韩资源| 狠狠色成人综合首页| 午夜福利视频一区| 欧美亚洲国产精品久久蜜芽| 欧美日韩午夜| 亚洲丝袜第一页| 专干老肥熟女视频网站| 999精品免费视频| 色噜噜在线观看| 国产一区二区三区视频| 免费毛片视频| 亚洲中文字幕23页在线| 亚洲中久无码永久在线观看软件| 无码专区在线观看| 亚洲欧洲日本在线| 波多野结衣一区二区三区AV| 欧美一级99在线观看国产| 波多野结衣一区二区三区AV| 99视频在线看| 亚洲国产精品一区二区高清无码久久| 在线网站18禁| 国产精品女人呻吟在线观看| 国产美女免费网站| 思思99思思久久最新精品| 国产特级毛片aaaaaa| 五月婷婷中文字幕| 免费无码网站| 91无码人妻精品一区| 国产丝袜啪啪| 国产网站免费| 亚洲人成色77777在线观看| 中文字幕乱妇无码AV在线| 无码福利日韩神码福利片| 亚洲男人天堂2018| 男女精品视频| 日本一本在线视频| 欧美精品色视频| 网友自拍视频精品区| 白浆视频在线观看| 国产成人无码综合亚洲日韩不卡| 午夜免费小视频| 亚洲欧洲日韩国产综合在线二区| a级毛片毛片免费观看久潮| 四虎免费视频网站| 日韩欧美中文在线| 99视频精品在线观看|