国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

VisualBasic通信程序設計

2019-11-18 17:46:07
字體:
來源:轉載
供稿:網(wǎng)友
VisualBasic中通信控件及其在windows平臺下的通信軟件設計方法,并結合具體實例給出了基本的通信程序。


  1992年crescentsoftwareinc.公司專為vb設計了mscomm.vbx用戶通信控件,它提供了通過串口發(fā)送和接收數(shù)據(jù)的串行通信能力,不但包括了全部windowsapi中關于串行通信的16個函數(shù)所完成的功能,而且開拓了更多的使用戶設計方便的對象屬性來滿足不同用戶不同業(yè)務的需求。目前國內眾多的vb資料中很少涉及該通信控件的介紹,本文將詳細介紹mscomm.vbx通信控件及編程方法,并結合工作中的一個實例給出基本通信程序。


1mscomm.vbx通信控件描述


mscomm.vbx通信控件可直接從vb的toolbox中加入窗體form,即可用其進行通信。若toolbox中無此控件,則用tools的customcontrols將mscomm.vbx從windows的system子目錄中加入vb的toolbox中。


1.1通信方式


mscomm.vbx有2種不同的方式來處理和解決各類通信軟件的開發(fā)和設計問題


1、事件驅動。它與c/c 寫windows軟件時的窗口回調函數(shù)類似,是1種功能強大的處理問題的方法。在實際工作中,往往要處理許多通信中的相關事件,例如:當線路數(shù)據(jù)到達本端或cd線和rts信號線狀態(tài)發(fā)生變化時,要求我們使用相應的事件來跟蹤和處理,該控件是使用oncomm事件來實現(xiàn)的,它也包括檢測和處理通信錯誤等方面的問題,commevent值返回最近的通信事件或錯誤的數(shù)字代碼。通信控件詳細的錯誤和事件舉例有:


mscomm-er-break收到1個breaksignal


mscomm-er-cdtocd信號超時


……


mscomm-ev-cdcd信號改變


……


2、查詢方式。由程序設計者負責讀取commevent的值并處理所發(fā)生的錯誤或事件。通常簡單的應用程序設計可采用這種辦法。


1.2通信控件的屬性


利用通信控件編制通信程序,關鍵是準確理解設置通信控件的屬性。mscomm.vbx提供了27個關于通信控件方面的屬性,例如:


commport:設置或返回通信口編號。

settings:設置或返回以字符串形式出現(xiàn)的數(shù)據(jù)通信格式:波特率、校驗、數(shù)據(jù)位和停止位。

portopen:設置或返回通信口狀態(tài)(包括打開和關閉1個通信口)

……


3、實例

本程序應用背景為dcc95型靜電除塵器自動監(jiān)控系統(tǒng)軟件,解決1個pc工控機(主站)與32個單片機(子站)之間的通信問題。主站與子站之間這總線式網(wǎng)絡結構,采用rs-485通信標準,以問答方式進行數(shù)據(jù)通信。由于32個子站與主站發(fā)送通信命令(下行命令),主站在接收子站發(fā)回的相應回答命令(上行命令)后繼續(xù)發(fā)送下行命令的通信形式。根據(jù)系統(tǒng)功能的要求,主站需發(fā)送2種類型的命令:(1)同期命令,它由定時器觸發(fā)引起,每隔ls周期發(fā)送1次;(2)非周期性命令,它由操作者按動相應命令按鈕引起,非周期性發(fā)送。自動監(jiān)控系統(tǒng)軟件安裝在主站上,而通信程序作為自動監(jiān)控系統(tǒng)軟件的一部分也安裝在主站上。


本文僅列出調試通信程序時進行試驗用的基本演示程序清單。試驗時,用1臺pc機作為主站,另一臺pc機模擬32個子站的工作,兩臺pc機之間采用rs232c串口通信。往主站的通信演示程序窗體(form)中加入1個通信控件、2個定時器控件和1個命令按鈕控件,通信控件(mscomm1)用于訪問串口,發(fā)送和接收數(shù)據(jù);periodic定時器控件(periodic)用于控制每秒由主站向各子站發(fā)送周期性命令;命令按鈕控件(nonperiodic-command)與nonperiodic定時器控件(nonperiodic)用于發(fā)送非周期性命令。數(shù)據(jù)傳送采用事件驅動的通信方式,根據(jù)不同的發(fā)送命令設置rtreshlod屬性,從而引起oncomm事件以接收數(shù)據(jù)。


2.1窗體各控件初始化程序


設置通信串口工作參數(shù),設置periodic定時器的在斷間隔為ls,nonperiodic定時器的中斷間隔為0.5s。


subform-load()


mscomm1.commport=2'選用com2串行口


mscomm1.settings="9600,n8,1"'波特率9600,無奇偶校驗位,8位數(shù)據(jù)位1位停止位


mscomm1.inputlen=0'input將讀取接收緩沖區(qū)的全部內容


mscomm1.inbuffersize=1024'設置接收緩沖區(qū)的字節(jié)長度


mscomm1.portopen=true'打開通信口


mscomm1.inbuffercount=0'清除發(fā)送緩沖區(qū)數(shù)據(jù)


mscomm1.outbuffercount=0'清除接收緩沖區(qū)數(shù)據(jù)


periodic.inteval=100'設置ls定時間隔,使遙測命令每隔ls發(fā)送1次


nonperiodic.inteval=500'設置0.5s定時間隔,查詢命令按鈕是否處于激活狀態(tài)以確定是否發(fā)送周期性命令


command-

endselect


endselect


endsub


隨著vb版本的不斷升級,vb將成為最快速、易用、強勁的應用開發(fā)工具,是企業(yè)級客戶/服務器應用軟件開發(fā)的首選工具之一。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 邵东县| 郓城县| 车险| 镇宁| 乌什县| 霍山县| 巴青县| 松潘县| 昭觉县| 长寿区| 将乐县| 建水县| 安塞县| 嘉祥县| 赣榆县| 临西县| 保康县| 宁城县| 大邑县| 浑源县| 阳谷县| 通城县| 岑溪市| 安新县| 阿拉善左旗| 丘北县| 广宁县| 中卫市| 白银市| 双鸭山市| 宜章县| 昌黎县| 乌兰县| 平罗县| 开封市| 甘泉县| 石林| 罗田县| 来凤县| 临颍县| 黔南|