基于vc++的串口通信調(diào)試軟件的設計_第1頁
基于vc++的串口通信調(diào)試軟件的設計_第2頁
基于vc++的串口通信調(diào)試軟件的設計_第3頁
基于vc++的串口通信調(diào)試軟件的設計_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

基于vc++的串口通信調(diào)試軟件的設計

隨著粒子發(fā)生器技術的發(fā)展,越來越多的控制設備被用于離子源系統(tǒng)、真空系統(tǒng)、輻射流量診斷系統(tǒng)等。這些設備的通信接口繁雜,有RS-232、RS-485以及網(wǎng)絡接口等。在設備的安裝調(diào)試過程中,不同的接口需要使用不同的調(diào)試軟件,設備調(diào)試很不方便。另外,在加速器控制領域,為了保護人身安全遠離輻射,需要遠程控制各種設備,RS-232/RS-485接口的設備需通過串口服務器或者PC機接入以太網(wǎng)實現(xiàn)遠程控制。這就導致同一款設備在本地和遠程調(diào)試時需要使用不同的調(diào)試工具,非常麻煩。因此,設計一款能夠穩(wěn)定可靠完成串口和網(wǎng)絡接口設備的調(diào)試軟件非常有必要。本文介紹了在VC++平臺下實現(xiàn)的多功能的網(wǎng)絡及串口調(diào)試工具的設計。1基本技術原則1.1客戶端的通信模式實現(xiàn)網(wǎng)絡通信的方式有多種,WinSock是一種比較簡單的實現(xiàn)方法。WinSock提供了在Windows平臺下網(wǎng)絡編程的接口,是連接控制軟件和網(wǎng)絡驅(qū)動程序的橋梁。它以動態(tài)鏈接庫形式提供給用戶,具備支持多種協(xié)議和開放式的特點,其工作流程如圖1所示。WinSock支持面向連接的流式套接字TCP(TransmissionControlProtocol)和無連接服務的數(shù)據(jù)報式套接字UDP(UserDatagramProtocol)。加速器工作在強磁場強輻射的環(huán)境中,選擇基于TCP協(xié)議的面向連接的流式套接字編程方式,能夠保證可靠的數(shù)據(jù)傳輸。通信結構采用C/S(客服端/服務器)方式,被控設備作為服務器,遠端PC機的控制軟件作為客戶端。因此設備調(diào)試工具的網(wǎng)絡通信只需完成客戶端的通信功能?;赥CP的客戶端網(wǎng)絡程序編寫流程如下:(1)WinSock的初始化創(chuàng)建套接字,通過WSAStartup()函數(shù)完成加載套接字庫,同時指定套接字庫的版本以及套接字類型。(2)發(fā)出連接請求選擇非對稱式的C/S通信結構,客戶端程序無需調(diào)用bind()綁定IP和端口。只需聲明地址結構體(SOCKADDR_IN)用于指定服務器的IP和端口,然后通過connect函數(shù)可以與被控設備(服務器)建立連接。(3)進行通信當連接建立后,C/S就可進行通信??蛻舳耸褂胷ecv()接收設備的數(shù)據(jù),用send()向設備發(fā)送命令及數(shù)據(jù)。通信模式有阻塞和非阻塞兩種。阻塞方式下,客服端接收數(shù)據(jù)時會阻塞等待數(shù)據(jù)接收完畢,超時則作廢。在非阻塞模式下,采用事件驅(qū)動機制,當數(shù)據(jù)準備完成才去通知客服端接收,這種模式下客服端可響應多個socket連接。通過WSAAsyncSelect()實現(xiàn)異步非阻塞模式選擇。(4)釋放連接通信結束后需調(diào)close()關閉套接字,釋放為此套接字分配的資源,最后再調(diào)用WSACleanup()函數(shù)終止對套接字庫Winsock.dll的連接。1.2多端口監(jiān)控存儲串口通信用到的通信線少、方式簡單,在加速器現(xiàn)場的很多控制設備通過串口進行通信。VC環(huán)境下,串口的編程有兩種方式:一是調(diào)用微軟公司提供的ActiveX的控件MSComm,控件簡單易操作,開發(fā)者只需了解控件的屬性和事件,但多串口程序需要添加多個控件不靈活;二是利用Windows的API函數(shù),實現(xiàn)設備的無關性,編程雖比較復雜,但訪問串口功能豐富,可訪問多串口,該方法更為靈活,本設計選擇API函數(shù)方式實現(xiàn)。其通信過程圖2所示。(1)打開串口(COM)打開串口通過調(diào)用CreateFile()函數(shù),調(diào)用成功則返回一個句柄,該句柄在整個通信中都被使用。若調(diào)用失敗,則函數(shù)返回INVALID_HANDLE_VALUE。(2)串口配置串行傳輸?shù)淖畲筇攸c按位進行發(fā)送和接受數(shù)據(jù),因此需對串口進行一些初始化配置。通過DCB(DeviceControlBlock)結構來實現(xiàn),DCB包含了波特率、數(shù)據(jù)位、停止位、奇偶校驗方法等信息。調(diào)用GetCommState()可獲取串口現(xiàn)有的配置寫入DCB結構中。調(diào)用SetCommState()將指定的DCB配置當前串口。(3)讀寫串口通過ReadFile()和WriteFile()實現(xiàn)串口實時通信。WriteFile()將數(shù)據(jù)送到lpBuffer指針指向的數(shù)據(jù)緩沖區(qū),再由串口將并行數(shù)據(jù)轉(zhuǎn)為串行比特數(shù)由TXD發(fā)送出去。ReadFile()指定串口接收的數(shù)據(jù)存儲在lpBuffer指針指向存儲區(qū)域并接收數(shù)據(jù)。(4)關閉串口串口通信結束之后需要關閉串口,調(diào)用CloseHandle()關閉句柄就可實現(xiàn)。2軟件方案的設計基于網(wǎng)絡和串口通信的編程技術設計出滿足多種需求的調(diào)試軟件,下面詳細論述本調(diào)試軟件的關鍵之處。2.1監(jiān)視線程技術在加速器現(xiàn)場由于其環(huán)境惡劣,往往會因為各種因素導致網(wǎng)絡或者串口中斷。如:高壓導致一些控制器的損壞,從而導致連接的中斷,TCP內(nèi)部機制決定了長時間不進行通信就會導致連接中斷等。因此在網(wǎng)絡串口的編程技術上,引入了監(jiān)視線程技術。在開啟串口和網(wǎng)絡同時調(diào)用AfxBeginThread開啟工作者線程,進入自定義MonitorThread()監(jiān)視函數(shù)對串口及網(wǎng)絡實時監(jiān)測,以網(wǎng)絡編程為例其線程監(jiān)視主要代碼如下所示:2.2自動識別校驗在調(diào)試軟件和被控設備之間進行數(shù)據(jù)傳輸不僅要考慮其傳輸平臺、接口方式,還要考慮其數(shù)據(jù)格式即通信協(xié)議。在調(diào)試過程中發(fā)現(xiàn),不同設備遵循不同的通信協(xié)議,比如Modbus、DCON和一些設備自定義協(xié)議。Modbus協(xié)議采用RTU模式(十六進制)或ASCII碼發(fā)送,DCON協(xié)議采用字符發(fā)送。為方便調(diào)試人員,調(diào)試軟件支持這兩種不同的數(shù)據(jù)傳輸方式。用戶界面輸入命令均為ASCII碼,其含8bit字節(jié)(兩位十六進制字符)。十六進制字符命令用ASCII碼中‘1’(30H)~‘9’(39H)及‘A’(41H)~‘F’(46H)字符表示十六進制標識1~9、A~F,所以利用查表1對應關系可進行ASCII碼轉(zhuǎn)換成十六進制字符碼。接收數(shù)據(jù)均用十六進制表示,顯示十六進制和ASCII碼,十六進制顯示就是將每一個十六進制數(shù)轉(zhuǎn)換成對應的表1中的ASCII碼。而ASCII顯示則是通過ASCII碼表查找顯示。同時該軟件添加了多種校驗方式,CRC、LRC和奇偶校驗,這些校驗方式原理并不難,但計算卻相對復雜,人工計算繁瑣而且無法保證準確性,所以根據(jù)加速器現(xiàn)場設備常用的幾種校驗方式,集成了校驗組供操作人員選擇。點擊軟件中校驗按鈕出現(xiàn)校驗選擇對話框,如圖3,點擊OK就會將發(fā)送數(shù)據(jù)生成校驗碼并直接添加在要發(fā)送數(shù)據(jù)后面,簡單可靠。2.3控制命令的多種類型為了更好適應調(diào)試設備,調(diào)試軟件增加了實用的輔助功能。筆者所在的科研小組自主研制了一些控制設備,這些設備遵行自定義數(shù)據(jù)格式。此外還采用一些商用的AD、DA、繼電器模塊等。這導致了控制命令復雜多樣,不方便記憶,給調(diào)試帶來不便。因此,本調(diào)試軟件將常用模塊的控制命令制作了一個命令集參考庫。如圖4所示,當需要控制某模塊時,選擇相應的模塊類型,軟件將會自動彈出該模塊的常用命令,雙擊需要的命令就可以完成命令的發(fā)送,大大提高了調(diào)試效率。當然該軟件還具備自動發(fā)送數(shù)據(jù)、文件方式存儲數(shù)據(jù)和計數(shù)統(tǒng)計等輔助功能。3軟件的基本情況調(diào)試軟件目前已經(jīng)在近代物理研究所的負氫離子源、治癌離子源等控制系統(tǒng)調(diào)試中得到實際應用,本軟件很好地完成了調(diào)試任務。網(wǎng)絡通信界面如圖5所示,該界面顯示的是測試泓格I-7017AD模塊。在圖中的右上方網(wǎng)絡連接模塊,提供協(xié)議選擇、IP及端口號,然后點擊連接網(wǎng)絡,若連接成功指示燈亮,否則為灰色。在軟件運行過程中,發(fā)生中斷,軟件將會進行自動重連。串口通信界面如圖6所示。打開串口之前,需要配置好串口如串口號、波特率、校驗碼等等。軟件支持十六進制發(fā)送或者字符發(fā)送,支持十六進制顯示或者字符顯示。4系統(tǒng)調(diào)試軟件模塊本調(diào)試軟件以加速器現(xiàn)場的設備調(diào)試需求為基點,以VC++為平臺,采用多線程串口及網(wǎng)絡的通信方式、集成多種通信數(shù)據(jù)格式轉(zhuǎn)換及校驗功能,提供常用模塊的命令格式,以方便調(diào)試人員進行設備調(diào)試。同時本調(diào)試軟件也為以后的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論