成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

細致深入講解VB.NET通信程序

開發 后端
文章主要和大家討論一下VB.NET通信程序及其在windows平臺下的通信軟件設計方法,mscomm.vbx通信控件描述和實例 的講解。

和大家一起來探討一下VB.NET通信程序及其在windows平臺下的通信軟件設計方法,結合具體實例給出了基本的通信程序,希望對大家有幫助。1992年crescent software inc.公司專為vb設計mscomm.vbx用戶通信控件,它提供了通過串口發送和接收數據的串行通信能力,不但包括了全部windows api中關于串行通信的16個函數所完成的功能,而且開拓了更多的使用戶設計方便的對象屬性來滿足不同用戶不同業務的需求。目前國內眾多的vb資料中很少涉及該通信控件的介紹,本文將詳細介紹mscomm.vbx通信控件及編程方法,并結合工作中的一個實例給出基本通信程序。

1 mscomm.vbx通信控件描述

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

1.1 通信方式

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

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

  1. mscomm-er-break 收到1個break signal   
  2. mscomm-er-cdto cd 信號超時   
  3. ……   
  4. mscomm-ev-cd cd信號改變   
  5. ……  

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

1.2 通信控件的屬性

利用通信控件編制VB.NET通信程序,關鍵是準確理解設置通信控件的屬性。mscomm.vbx提供了27個關于通信控件方面的屬性,例如:
commport:設置或返回通信口編號。
settings:設置或返回以字符串形式出現的數據通信格式:波特率、校驗、數據位和停 止位。
portopen:設置或返回通信口狀態(包括打開和關閉1個通信口)
……

2.實例

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

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


2.1 窗體各控件初始化程序

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

  1. sub form-load ()   
  2. mscomm1.commport=2 '選用com2串行口   
  3. mscomm1.settings="9600,n8,1" '波特率9600,無奇偶校驗位,8位數據位1位停止位   
  4. mscomm1.inputlen=0 'input將讀取接收緩沖區的全部內容   
  5. mscomm1.inbuffersize=1024 '設置接收緩沖區的字節長度   
  6. mscomm1.portopen=true '打開通信口   
  7. mscomm1.inbuffercount=0 '清除發送緩沖區數據   
  8. mscomm1.outbuffercount=0 '清除接收緩沖區數據   
  9. periodic.inteval=100 '設置ls定時間隔,使遙測命令每隔ls發送1次   
  10. nonperiodic.inteval=500 '設置0.5s定時間隔,查詢命令按鈕是否處于激活狀態以確定是否發送周期性命令   
  11. command-pressed=false '命令按鈕為未激活狀態   
  12. during- periodic=false '周期性命令數據傳輸尚未開始   
  13. during- nonperiodic=false '非周期性命令數據傳輸尚未開始   
  14. end sub  

2.2 非周期性命令發送程序

根據命令按鈕狀態及周期性命令數據傳輸狀態,在nonperiodic定時器的中斷程序中發送非周期性命令。

  1. sub nonperiodic-command-click ()   
  2. command-pressed=true '命令按鈕激活   
  3. end sub   
  4. sub nonperiodic-timer ()   
  5. if during- periodic=true or command-pressed=false   
  6. then exit sub '若周期性命令數據傳輸尚未結束或命令按鈕處于激活狀態,則退出發送非周期性命令程序。   
  7. command-pressed=false '命令按鈕恢復為未激活狀態   
  8. call senddata (nonperiodic-command) '發送非周期性命令   
  9. mscomm1.rthreshold=r-nonperiodic-byte'發送非周期性命令后,設置rthreshold屬性,使主站接收所設定的字節數后引發oncomm事件   
  10. end sub   

2.3 periodic定時器程序

在periodic定時器的中斷程序中發送周期性命令:

  1. sub periodic-timer ()   
  2. if during- nonperiodic=true then exit sub '若非周期性命令數據傳輸尚未結束,則退出發送非周期性命令程序。   
  3. during-periodic=true '設置周期性命令數據傳輸狀態為正在進行中   
  4. call senddata (periodic-command) '發送周期性命令   
  5. mscomm1.rthreshold=r-periodic-byte '發送周期性命令后,主站接收r-remot- edata-byte個字節,可引發oncomm 事件   
  6. end sub   

 2.4 oncomm事件程序

根據rthreshold屬性設置值,當接收緩存區內接收到相應字節的字符時,引發oncomm事件,在中斷程序中接收數據。

  1. sub mscomm1-oncomm () select case mscomm1.commevent '在此可插入處理各種不同錯誤或事件的代碼   
  2. case mscomm-ev-receive   
  3. receivestring$=mscomm1.input   
  4. select case mscomm1.rthreshold   
  5. case r-periodic-byte '周期性命令的應答數據   
  6. call disposedata(periodic-command) '處理接收數據   
  7. during periodic=false '設置周期性命令數據傳輸狀態為結束   
  8. case r-nonperiodic-byte '非周期性命令的應答數據   
  9. call disposedata(nonperiodic-command) '處理接收數據   
  10. during-nonperiodic=false '設置非周期性命令數據傳輸狀態為結束   
  11. end select   
  12. end select   
  13. end sub   

隨著vb版本的不斷升級,vb將成為最快速、易用、強勁的應用開發工具,是企業級客戶/服務器應用軟件開發的***工具之一。

【編輯推薦】

  1. 剖析VB.NET平臺調用是如何執行操作
  2. 分享個人總結VB.NET多線程
  3. 詳細說明VB.NET變量中四點
  4. 三類十二種VB.NET數據類型全面介紹
  5. VB.NET初步知識,初學者必看
責任編輯:田樹 來源: 中科軟件園
相關推薦

2010-01-13 18:17:00

VB.NET通信程序

2010-01-11 16:04:10

VB.NET使用wit

2009-10-20 10:16:24

VB.NET COMB

2009-10-14 09:58:43

VB.NET程序

2010-01-18 18:20:49

VB.NET使用API

2009-10-13 14:42:30

VB.NET靜態成員

2009-10-14 17:21:47

VB.NET定制Win

2009-10-27 12:20:06

VB.NET多線程應用

2009-10-12 13:54:22

VB.NET Data

2009-10-15 11:42:05

VB.Net賦值語句

2009-10-23 13:10:14

VB.NET List

2009-10-29 10:45:01

VB.NET設置控件

2010-01-12 15:21:48

VB.NET權限控制

2009-10-21 10:05:30

VB.NET運行環境

2009-10-10 17:06:09

VB和VB.NET

2009-10-12 16:56:36

VB.NET常量VB.NET枚舉

2009-10-29 13:24:09

VB.NET Cons

2009-10-19 09:16:08

VB.NET語言

2010-01-11 10:19:18

VB.NET啟動外部程

2009-10-28 13:24:25

VB.NET文件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 蜜桃传媒一区二区 | 午夜精品久久久久久久星辰影院 | 亚洲 成人 av | 国产欧美在线视频 | 在线亚洲欧美 | 日韩免费一区二区 | 国产成人精品a视频一区www | 精品国产一区二区三区性色av | 精品一区二区三区免费视频 | 一区在线免费视频 | 欧美激情精品久久久久久免费 | 欧美专区在线 | 欧美日本一区 | av影音资源| 91青娱乐在线 | 精品国产免费一区二区三区演员表 | av一区二区在线观看 | 羞羞的视频在线观看 | 日本精品一区二区三区在线观看视频 | 国产91精品久久久久久久网曝门 | 美女视频黄色的 | 国产日韩精品一区 | 日韩av资源站 | 99成人在线视频 | 日韩中文字幕 | 日韩免费中文字幕 | 中文字幕在线第一页 | 国产美女特级嫩嫩嫩bbb片 | 暖暖日本在线视频 | 91免费视频 | 中文字幕在线观看一区 | 香蕉大人久久国产成人av | 精品国产一区二区三区性色av | 北条麻妃av一区二区三区 | 日日噜噜噜夜夜爽爽狠狠视频, | av在线一区二区三区 | 免费在线性爱视频 | 久久亚洲一区 | a级大毛片| 国产激情一区二区三区 | 欧美男人天堂 |