<nobr id="zkazv"></nobr>

      午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
      首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
      中華工控網首頁
        P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
        D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
        電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
      VC++下串行通信的編程方法
      中華工控網
      收藏本文     查看收藏
      VC++下串行通信的編程方法</P><P> 張 力 呂振肅 趙慶林</P><P> 1 引言</P><P>   串行通信程序是微機監控軟件中基礎、關鍵的一個環節,如何有效地開發通信程序,是軟件開發人員所關心的話題。Microsoft公司從1993年推出VC++1.0開始,不斷升級,從 VC++1.52到目前最新的 VC++5.0,擁有大量的用戶,用VC++開發串行通信程序也隨版本的不同各有特點。本文詳細地介紹了用VC編寫通信程序的兩種方法:<BR>   . 用API(Application Programm Interface用戶程序接口)函數;<BR>   . 用OLE(Object Linking and Embedding對象鏈接與嵌入)控件。</P><P> 2 用API函數實現串行通信</P><P>   API函數是Windows程序開發使用的主要函數集,其中提供了十幾個專門的通信函數。對應Windows3.x和Win95及 NT開發環境,有16位和32位通信API函數,VC++ 2.0和以前的版本都保持16位和32位兩個版本,從 VC++4.0 以后,軟件只支持32位應用程序的開發。目前較多的應用是在Win95及NT的32位開發環境下,但也存在著Windows3.x下開發的16位通信程序向32位程序的移植問題。基于這種考慮,16位通信函數也列舉出來。</P><P> 2.1 主要通信函數的對比</P><P>   32位通信函數與16位函數的主要區別在于,32位API函數把對通信口的操作當作一個普通文件。這是因為在Windows95和NT下,WM—COMMNOTIFY消息已被取消,操作系統已將通信設備封裝起來了,系統為每個通信設備定義了用戶可定義大小的讀/寫緩沖區,應用程序只對讀/寫緩沖區操作,而不用和通信驅動程序打交道。<BR> 功能描述16位函數改進的32位函數打開通信資源OpenCommCreatFile關閉通信資源CloseCommCloseHandle讀通信緩沖區ReadCommReadFile寫通信緩沖區WriteCommWriteFile設置通信事件SetCommEventSetCommMask通信錯誤檢查GetCommErrorClearCommError</P><P> 2.2 用API函數編程的過程</P><P>   首先由應用向導(AppWizard)生成程序的主框架。在集成開發環境下選File/New菜單(以VC5.0為例),彈出New對話框,單擊project標簽后選MFC AppWizard (exe)項,在創建的第一步選中單文檔,其他五步接受缺省選項,只需編輯生成的視類.cpp文件即可?梢杂脙煞N方法編程:一種是利用Windows的 WM—COMMNOTIFY消息,映射出該消息的處理函數,通信編碼就放在該函數中,這主要適用于VC2.0及以前的版本 ;另一種方法是直接在.CPP文件中編寫通信部分,把通信當作視類的成員函數。不論用哪種方法,編程思路是相同的:設置初始化并打開串口—配置串口—在雙方間傳輸數據,并進行校驗等處理—不需要時釋放串口,供其他程序使用。</P><P> 2.3 注意事項</P><P>   在Windows 3.x 中,有專門的消息WM—COMMNOTIFY用于通信。在Windows95和NT下,該消息已被取消,但用戶也可以用自定義的WM—COMMNOTIFY消息,這時要注意消息映射的聲明必須如下:<BR>   ON—MESSAGE (WM—COMMNOTIFY,memberFxn); 其中memberFxn是該消息的處理函數名。<BR>   Win95中新增了基于線程的多任務,當應用程序希望僅在通信設備有數據出現時才對其操作,應創建線程來監視通信設備?紤]到通信較費時,建議使用多線程來管理通信,讓通信在后臺完成。在VC++的 MFC(Microsoft Foundation Classes 微軟基礎類庫)中提供了專門管理線程的類 CwinThread,同時VC++還提供了一些與線程有關的全局函數,如AfxBeginThread等。多線程中資源共享時,必須借助一些Win32同步函數來協調線程的活動,避免沖突。VC的MFC也提供了幾個與同步有關的類,如CSyncObject、CMutex、CSemaphore、Cevent等。在視類的.cpp文件下可創建通信線程,并根據實際需要確定線程的優先級,合理調用 API函數以實現通信。</P><P> 3 用OLE通信控件實現串行通信</P><P>   用VC++的OLE控件實現串行通信,是一種簡潔的編程方法。VC4.0版和VC5.0版所提供的通信控件略有不同,下面針對這兩個版本,對OLE通信控件做具體介紹。</P><P> 3.1 通信控件的插入</P><P>   在VC++4.0 下,首先生成一個項目,或者打開一個存在的項目。選擇菜單Insert/Component…,出現Component Gallery窗口,選中OLE Controls下的Microsoft CommControl,雙擊就將控件嵌入到項目文件中了。在VC++5.0下,選菜單Project/Add To Project,將會有一子菜單, 選中 Component and Controls項(注意如果沒有打開項目,Component項不會出現在子菜單項中),接著雙擊Registered ActiveX Controls,在其中會找到通信控件5.0,雙擊之便可插入。此時打開對話框編輯器,在工具條中會看到新增的通信控件。</P><P> 3.2 在程序中使用通信控件</P><P>   象所有其他OLE控件一樣,通信控件也是用一系列的屬性和用戶接口,用戶用Get…函數得到屬性的當前值,用 Set…函數設置屬性值?丶峁┝27個屬性,大部分屬性僅和Modem連接有關,現將常用的屬性列舉如下:<BR>   CommPort: 設置并返回通信口號,缺省值為COM1,可設置1—16個。<BR>   Settings: 設置并返回波特率、奇偶校驗、數據位、停止位的字符串。其中波特率的范圍為300b/s-19200b/s。<BR>   PortOpen: 設置并返回通信口的狀態,同時用來打開和關閉通信口。<BR>   InputLen: 決定每次Input讀入的字符個數,缺省為0,表示讀取接收緩沖區的全部內容。<BR>   Input: 讀入并清除接收緩沖區的字符。<BR>   InBufferCount: 返回接收緩沖區已接收的字符數,通過置0可清除接收緩沖區。<BR>   Output: 將發送的字符串或數組寫到發送緩沖區。<BR>   InputMode: 定義Inpput屬性獲得數據的方式(VC5.0新增屬性)。<BR>   Rthreshold: 設置、返回在通信控件置 ComEvRecieve并激發 OnComm事件前要接收的字符數。<BR>   SThreshold: 設置、返回通信控件置ComEvSend并激發OnComm事件前發送緩沖區中的最少字符數。<BR>   將通信控件放到對話框中,當作一個普通的控件來用?丶峁┝藘煞N處理方法:一是查詢,一是事件驅動。對于較簡單的通信任務,可通過查詢串口的CommEvent屬性來了解最近發生的事件或錯誤并進行相應的處理,較復雜的通信任務就應使用事件驅動接口。用事件驅動方法時,要定義CMSComm變量,以后針對此對象操作即可。添加消息處理函數時要用類向導ClassWizard,選中定義的 CMSComm變量并單擊,在消息欄雙擊 OnComm項就生成了消息處理函數。 在編寫發送和接收函數時,要重點注意幾個屬性的用法。比如InBufferCount屬性返回接收緩沖區中已收到的字節數,查詢方法可利用該屬性,看是否收到了規定數目的字節。還有 Rthreshold 和 SThreshold屬性,對由發送和接收激發的OnComm事件起著決定性的作用。Rthreshold 的值代表每當接收緩沖區中有該數目的字符時就產生 OnComm事件, 這對固定長度的幀接收非常有用,可將 Rthreshold 設為幀長度,每收到一幀就會激發 OnComm事件,在消息處理函數中添加代碼就能完成接收后的處理。發送比接收簡單,只不過用SThreshold屬性。<BR>   概括起來,用控件實現串行通信應該遵循和用API函數編寫程序相同的過程,只不過這里用控件的屬性代替了API函數。</P><P> 3.3 其它注意事項</P><P>   VC4.0下和VC5.0下Input屬性的返回值不同。在 VC4.0下Input 返回的是CString類,而在VC5.0下,返回 COleVariant類。COleVariant類封裝了VARIANT數據類型,該結構也是Output屬性所要求的類型。要用好控件就必須了解 VARIANT結構, 該結構囊括了所有常用的簡單數據類型。但是結構中每次可用的數據類型只有一種,由結構的成員vt識別。例如對字符串bstrVal,vt=8,對short類型,vt=2等等。同時注意到VC5.0控件增加了 InputMode屬性,提供兩種輸入模式:文本和二進制。兩種方式決定了Input接收的兩種數據類型。在文本方式下,Input返回值在成員bstrVal中,類型為vt=8,這和VC4.0下返回CString類是相同的。在二進制模式下,Input接受值在安全數組parray中,類型為 vt=0x2000 ,這是編程時容易忽略的地方。一般上下位機通信時,下位機的數據是以16進制形式存放,編寫通信程序建議選擇二進制輸入模式。用文本模式就必須在編碼時仔細考慮,否則容易丟失數據。另外,用事件驅動方法編程時還應注意,OnComm事件在通信事件或錯誤發生時都會激發, 在處理函數中應將各種可能的情況列舉出來分別處理,很重要的一點是及時處理通信錯誤。</P><P> 4 結束語</P><P>   總而言之,比起繁多的API函數,通信控件不失為一種簡潔有效的實現串行通信的途徑。只要掌握好控件的屬性,就能輕松地編寫通信程序。筆者在編寫一套電力系統的實時監控軟件時,用VC++5.0下的通信控件成功地實現了微機與下位機——3720ACM 儀表之間的通信,該儀表是加拿大PML公司生產的高級電力綜合監控儀表。</P><P> 張 力 碩士研究生。研究方向:計算機控制與信息工程!握衩C 碩士,教授。從事計算機控制與信息工程、CAD等方面的教學與研究工作!≮w慶林 碩士研究生。研究方向:計算機控制與信息工程。</P><P> 作者單位: 蘭州大學電子與信息科學系 甘肅.蘭州(730000)</P><P> 參考文獻</P><P>  [1]。勖溃軲icrosoft Corporation.Microsoft Win32程序員參考大全(二). 北京:清華大學出版社,1995<BR> 。2] [美]Scott Stanfield Ralph Arvesen.Visual C++ 4開發人員指南.北京:機械工業出版社,1997 </P><P>
       

      狀 態: 離線

      公司簡介
      產品目錄

      公司名稱: 中華工控網
      聯 系 人: 客服中心
      電  話: 0755-26546361
      傳  真: 0755-26585268
      地  址: 深圳市南山區創業路現代城華庭1棟6A
      郵  編: 518054
      主  頁:
       
      該廠商相關技術文摘:
      智能儀器儀表的發展特點與前景分析
      電動機性能虛擬儀器測試系統設計與實現
      視頻監控護航高鐵安全運營
      基于PLC,觸摸屏及變頻器對吹膜機的改造
      永宏PLC應用于自助圖書借還終端機
      基于永宏PLC的GSM通訊原理及其應用
      改善汽車生態學、安全性和舒適性,四大測試分析是關鍵
      改善汽車生態學、安全性和舒適性,四大測試分析是關鍵
      數控技術的發展趨勢及產業化
      數控技術發展戰略與發展途徑的思考
      用Energid 的軟件進行機器人的抓取和操作
      如何借助RFID技術升級企業信息管理水平
      更多文摘...
      立即發送詢問信息在線聯系該技術文摘廠商:
      用戶名: 密碼: 免費注冊為中華工控網會員
      請留下您的有效聯系方式,以方便我們及時與您聯絡

      關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
      工控網客服熱線:0755-86369299
      版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

      主站蜘蛛池模板: 成人做受120秒试看试看视频| 亚洲av二区国产精品| 一区二区三区四区高清自拍| 国产色婷婷亚洲99精品小说| 精品日韩亚洲av无码| caoporn成人免费公开| 日韩av一区二区三区不卡| 九九综合va免费看| 在线精品国产中文字幕| 国产中文字幕在线一区| 免费无码一区无码东京热| 国产三级黄色片在线观看| 国产福利永久在线视频无毒不卡| 国产AV国片精品有毛| 17岁日本免费bd完整版观看| 色综合AV综合无码综合网站| 久久综合狠狠综合久久| 国产成人无码AV大片大片在线观看| 久久夜色精品国产亚洲av| 久久av高潮av喷水av无码| 99热精品国产三级在线观看| 福利一区二区不卡国产| 亚洲一区二区约美女探花| 久久av色欲av久久蜜桃网| 狠狠色丁香婷婷综合尤物| 玖玖在线精品免费视频| 中文字幕一区二区三区久久蜜桃| 韩国精品视频在线日韩| 无码人妻一区二区三区四区AV| 亚洲综合无码明星蕉在线视频| 丁香五月亚洲综合在线国内自拍| 国产精品中文字幕二区| 色综合天天色综合久久网| 久久精品日日躁夜夜躁| 欧美喷潮最猛视频| 怡红院一区二区三区在线| 妖精视频亚州无吗高清版| 国产美女免费永久无遮挡| 农村老熟女一区二区三区| 香蕉乱码成人久久天堂爱| 夜夜春久久天堂亚洲精品|