亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 35.txt

?? VB文章集(含API、窗口、數(shù)據(jù)庫、多媒體、系統(tǒng)、文件、等等)
?? TXT
字號:
基于Win95的VB5串口通信程序
 

山東省水文水資源勘測局   王 軍

  VisualBasic5.0(以下簡稱VB)以其簡單易學(xué)、32位面向?qū)ο蟮某绦蛟O(shè)計等特點,倍受廣大計算機開發(fā)者的青睞,已廣泛地應(yīng)用于各個領(lǐng)域;在實時監(jiān)測系統(tǒng)中串行端口通信是一項基礎(chǔ)功能,因此我們使用VB5編寫了實時水庫水文自動監(jiān)測系統(tǒng)的后臺機軟件。本文就Windows95環(huán)境中采用VB5設(shè)計串行端口通信程序進行討論并給出實例。

  一般用VB開發(fā)串行通信程序有兩種方法:一是利用Windows的通信API函數(shù);另一種是采用VB標準控件Mscomm來實現(xiàn)。

Windows95的通信API

  Windows95中的串口通信API函數(shù)不同于Windows3.x中的OpenComm、CloseComm、ReadComm、WriteComm,而是采用硬件與文件通用的函數(shù)CreateFile、ReadFile、WriteFile、CloseHandle,該類函數(shù)更具有一般性,并且可以用EscapeCommFunction函數(shù)實現(xiàn)底層硬件操作,比如:SETXOFF、CLRDTR等。
  利用API編寫串口通信程序較為復(fù)雜,需要掌握大量通信知識,其優(yōu)點是可實現(xiàn)的功能更豐富、應(yīng)用面更廣泛,更適合于編寫較為復(fù)雜的低層次通信程序。采用這種方法編寫串行端口通信程序一般可分為以下幾個過程: 

  1.初始化串行端口

  首先用CreateFile函數(shù)打開指定串口,置參數(shù)中訪問類型為GENERIC_READ|GENERIC_WRITE、共享模式為0、創(chuàng)建標志為OPEN_EXISTING、模板句柄為NULL。

  2.配置串口

  Windows95的串口配置比Windows3.x較為復(fù)雜,但其功能更強大,對一般程序可使用CommConfigDialog函數(shù)以對話框方式設(shè)置波特率、數(shù)據(jù)位、奇偶校驗、停止位和流控制方式,并且可以恢復(fù)缺省值。

  3.超時控制

  為了防止意外情況使串口讀寫無休止地等待,Windows95提供了超時設(shè)置,這是由COMMTIMEOUTS結(jié)構(gòu)定義的,通過調(diào)用GetCcommTimeOuts函數(shù)獲得當前的設(shè)置,用SetCommTimeOuts函數(shù)來完成設(shè)置。

  4.數(shù)據(jù)傳輸

  讀寫串行端口與讀寫文件采用的函數(shù)相同,即ReadFile、WriteFile,讀寫操作可分四種方式:查詢方式、同步I/O、異步(后臺)I/O和事件驅(qū)動I/O。

  5.關(guān)閉串口

  程序的終止可以自動關(guān)閉串口,也可用函數(shù)CloseHandle(),以便釋放所獨占資源。

VB通信控件Mscomm

  Mscomm控件提供了功能完善的串口數(shù)據(jù)的發(fā)送和接收功能,Mscomm控件具有兩種處理方式:1事件驅(qū)動方式:由Mscomm控件的OnComm事件捕獲并處理通信錯誤及事件;2查詢方式:通過檢查CommEvent屬性的值來判斷事件和錯誤。
  Mscomm控件的通信功能實現(xiàn),實際上是調(diào)用了API函數(shù),而API函數(shù)是由Comm.drv解釋并傳給設(shè)備驅(qū)動程序執(zhí)行的,對于VB程序開發(fā)者只需知道Mscomm控件的屬性和事件的用法即可以實現(xiàn)串口的操作。

  以下是Mscomm控件的主要屬性和方法:

  1)CommPort:設(shè)置或返回串行端口號,其取值范圍為1~99,缺省為1。

  2)Setting設(shè)置或返回串行端口的波特率、奇偶校驗位、數(shù)據(jù)位數(shù)、停止位。如:Mscomm.Setting="9600,N,8,1"。

  3)PortOpen:打開或關(guān)閉串行端口,格式為:Mscomm.PortOpen={TRUE|FALSE}。

  4)InBufferSize:設(shè)置或返回接收緩沖區(qū)的大小,缺省為1024字節(jié)。

  5)InBufferCount:返回接收緩沖區(qū)內(nèi)的等待讀取的字節(jié)個數(shù),可通過設(shè)置該屬性為0來清除接收緩沖區(qū)。

  6)RThreshold:該屬性為一閥值,它確定當接收緩沖區(qū)內(nèi)字節(jié)個數(shù)達到或超過該值后就產(chǎn)生代碼為MSCOMM_EV_RECEIVE的OnComm事件。

  7)InputLen:設(shè)置或返回接收緩沖區(qū)內(nèi)用Input讀入的個數(shù)。若取0,則INPUT讀取整個緩沖區(qū)的內(nèi)容。

  8)Input:該屬性表示從接收緩沖區(qū)移走一串字符。

  9)OutBufferSize:設(shè)置或返回發(fā)送緩沖區(qū),缺省為512字節(jié)。

  10)OutBufferCounter:返回發(fā)送緩沖區(qū)內(nèi)等待發(fā)送的字符數(shù),可用來清空緩沖區(qū)。

  11)Output:向發(fā)送緩沖區(qū)傳送一字符串。

  12)EOFEnable:若置TRUE,則當輸入中出現(xiàn)EOF,就停止輸入并產(chǎn)生OnComm事件。

  如果在通信過程中發(fā)生錯誤或事件,就會引發(fā)OnComm事件并且改變屬性值,由CommEvent屬性代碼反映錯誤類型,在通信程序的設(shè)計中可根據(jù)該屬性值來執(zhí)行不同的操作,以下是部分屬性常數(shù)值及其含義:

  1)ComEvSend:其值為1,發(fā)送緩沖區(qū)的內(nèi)容少于SThreshold指定的值。

  2)ComEvReceive:其值為2,接收緩沖區(qū)內(nèi)字符數(shù)達到RThreshold值,該事件在緩沖區(qū)中數(shù)據(jù)被移走前將持續(xù)產(chǎn)生。

  3)ComEventFrame:其值為1004,硬件檢測到幀錯誤。

  4)ComEventRxOver:其值為1008,接收緩沖區(qū)溢出。

  5)ComEventTxFull:其值為1010,發(fā)送緩沖區(qū)溢出。

  6)ComEventRxParity:其值為1009,奇偶校驗。

  7)ComEvEOF:其值為7,接收數(shù)據(jù)中出現(xiàn)文件結(jié)束(ASCII碼為26)字符。

程序樣例

  采用Mscomm控件實現(xiàn)串口通信時,首先添加一Mscomm控件到窗體中,該控件一般不在通用工具窗口中,而是需通過菜單項"工程(P)→部件(O)"進入選擇窗口,在控件tab頁中選取MicrosoftCommControl5.0,此時工具窗口中出現(xiàn)Mscomm圖標,即可被使用。
  以下是事件驅(qū)動方式的接收程序的主要部分:

PrivateSubgetdatafromserial_Click()
  CommonDialog1.InitDir="c:\temp"
  CommonDialog1.ShowSave
  mainfrm.MSComm1.CommPort=1
  hfile=FreeFile
  '打開存儲接收數(shù)據(jù)的文件
  Open CommonDialog1.filename For Output As #hfile
  '設(shè)接收緩沖區(qū)的大小,可按量確定
  mainfrm.MSComm1.InBufferSize=4096
  If Not mainfrm.MSComm1.PortOpen Then'打開串口
  mainfrm.MSComm1.PortOpen=True
  End If
  If Err Then
  MsgBox"Communcationportcannotbeopened!!"
  '清接收緩沖區(qū)
  mainfrm.MSComm1.InBufferCount=0
  '設(shè)一次讀入的長度,可根據(jù)數(shù)據(jù)格式設(shè)置
  mainfrm.MSComm1.InputLen=77
  '設(shè)置接收事件觸發(fā)的閥值
  mainfrm.MSComm1.RThreshold=77
  counter=Timer+10
  Do
   If Timer>counter Then
    mainfrm.Label1.Caption="正在通信......"
    mainfrm.Label1.Refresh
    counter=Timer+10
   End If
   DoEvents
  Loop
End Sub

  以下為事件處理子程序,flag為一靜態(tài)變量記錄讀取次數(shù),以便改變接收數(shù)據(jù)的長度,讀者可根據(jù)實際需要添加其它處理內(nèi)容:

Private Sub MSComm1_OnComm()
  Select Case MSComm1.CommEvent
    Case comEvReceive
      If flag>246 Then
        MSComm1.InputLen=0:MSComm1.RThreshold=32
      End If
      buffer=MSComm1.Input
      temp=buffer
      Print #hfile,temp
      counter=Timer+10
      Do While Timer>counter
        DoEvents
      Loop
      flag=flag+1
    Case comEvEOF
      EVMsg$="檢測到文件結(jié)尾!!!"
    Case comFrame
      ERMsg$="幀出錯!!!"
    Case comRxParity
      ERMsg$="奇偶錯!!!"
  End Select
  If Len(EVMsg$) Then
    Text1.Text="Status:"&EVMsg$
  ElseIf Len(ERMsg$) Then
    Text1.Text="Status:"&ERMsg$
    Beep
    Ret=MsgBox(ERMsg$,1,"ClickCanceltoquit,OKtoignore.")
    MSComm1.PortOpen=False
  End If
End Sub

 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频在线看| 中日韩av电影| 丁香婷婷综合激情五月色| 亚洲资源中文字幕| 国产欧美日韩激情| 91精品一区二区三区在线观看| 成人精品鲁一区一区二区| 日本免费新一区视频| 亚洲欧美一区二区三区极速播放| 欧美va在线播放| 精品视频全国免费看| 99在线热播精品免费| 国产一区视频导航| 欧美96一区二区免费视频| 一区二区三区日韩在线观看| 国产精品天干天干在线综合| xvideos.蜜桃一区二区| 欧美一区二区网站| 欧美日韩在线观看一区二区| 成人av在线电影| 国产jizzjizz一区二区| 韩国毛片一区二区三区| 日本欧美加勒比视频| 亚洲永久精品大片| 一区二区三区中文字幕| 中文字幕亚洲成人| 国产精品网站在线| 国产欧美视频在线观看| 久久无码av三级| 欧美成人vr18sexvr| 91精品国产aⅴ一区二区| 欧美日韩国产免费一区二区| 欧美亚洲一区二区在线观看| 欧美亚洲国产一区在线观看网站| 一本大道久久a久久综合| 99re热视频这里只精品| 成人禁用看黄a在线| av在线不卡免费看| 91在线观看一区二区| 91一区一区三区| 99re成人精品视频| 国产sm精品调教视频网站| 丁香天五香天堂综合| 国产一区二区视频在线播放| 国产精品亚洲第一区在线暖暖韩国| 精品一区二区三区在线视频| 久久狠狠亚洲综合| 盗摄精品av一区二区三区| 国产一二精品视频| 国产精品一区免费视频| 成人性视频免费网站| 成人国产一区二区三区精品| 91丨九色porny丨蝌蚪| 91传媒视频在线播放| 欧美日韩成人在线| 日韩欧美三级在线| 国产午夜精品理论片a级大结局 | 日韩欧美资源站| 欧美一区二区三区在| 久久亚洲二区三区| 最近日韩中文字幕| 亚洲国产欧美在线人成| 日韩vs国产vs欧美| 国产精品一二二区| 97se亚洲国产综合在线| 欧美日韩国产小视频在线观看| 欧美一级专区免费大片| 国产欧美精品区一区二区三区| 成人免费在线视频观看| 首页国产欧美久久| 国产精品911| 91成人在线免费观看| 欧美一级一级性生活免费录像| 亚洲精品一区二区三区福利| 亚洲欧美激情在线| 免费一级片91| www.日韩在线| 91精品欧美一区二区三区综合在| 久久久www免费人成精品| 亚洲一区影音先锋| 国产精品99久久久久久似苏梦涵 | 久久精品噜噜噜成人av农村| 懂色中文一区二区在线播放| 欧美系列亚洲系列| 久久伊人蜜桃av一区二区| 一区二区三区四区精品在线视频| 日本美女一区二区三区| 成人av动漫网站| 日韩精品一区二区三区中文精品| 亚洲人精品午夜| 国产综合色在线| 久久精品久久久精品美女| 日本成人在线不卡视频| 亚洲一二三四久久| 国产精品亚洲成人| 欧美日韩精品一区二区| 国产精品久久久久毛片软件| 天天做天天摸天天爽国产一区 | 日韩免费一区二区三区在线播放| 中文字幕日本不卡| 精品在线亚洲视频| 欧美日韩国产在线观看| 国产婷婷一区二区| 婷婷综合久久一区二区三区| 色综合久久久久综合体| 久久久久久一二三区| 日精品一区二区三区| 91在线免费播放| 久久亚洲精品小早川怜子| 日日夜夜免费精品| 欧美日韩高清一区二区不卡| 国产精品嫩草99a| 国产剧情一区在线| 日韩一区二区三区在线视频| 婷婷成人激情在线网| 欧美性生活久久| 一区二区三区视频在线看| 99久久精品情趣| 亚洲国产精品ⅴa在线观看| 国内精品不卡在线| 精品久久久久久久久久久久久久久 | 欧美日韩不卡视频| 亚洲黄色片在线观看| eeuss鲁一区二区三区| 欧美激情艳妇裸体舞| 国产黄色精品视频| 欧美精品一区二区在线观看| 久久电影网电视剧免费观看| 日韩亚洲欧美高清| 美女在线观看视频一区二区| 日韩三级伦理片妻子的秘密按摩| 日产国产高清一区二区三区| 欧美日韩国产三级| 日韩av一区二区三区| 欧美一级二级在线观看| 奇米亚洲午夜久久精品| 日韩欧美你懂的| 另类小说一区二区三区| 欧美一区二区三区成人| 国产在线精品一区二区三区不卡| 一区二区三区在线视频免费观看 | 色偷偷一区二区三区| 欧美高清一级片在线观看| 成人手机在线视频| 国产精品乱人伦一区二区| 成人在线视频一区| 国产精品乱子久久久久| 91老师片黄在线观看| 亚洲专区一二三| 91麻豆精品国产91久久久使用方法| 日韩成人av影视| 精品国精品国产| 成人免费视频免费观看| 日韩一区日韩二区| 欧美日韩一区精品| 国产精品白丝av| 国产精品女同互慰在线看| 99久久精品情趣| 午夜精品久久久久久久蜜桃app| 欧美一区二区网站| 国产风韵犹存在线视精品| 综合久久给合久久狠狠狠97色| 欧美性生活大片视频| 久久91精品国产91久久小草| 欧美激情综合五月色丁香小说| 色一区在线观看| 91在线视频观看| 色一区在线观看| 91美女片黄在线观看| 91福利视频网站| 秋霞av亚洲一区二区三| www日韩大片| 91原创在线视频| 久久99精品国产| 亚洲人成小说网站色在线 | 成人在线视频一区二区| 亚洲黄色在线视频| 精品国产sm最大网站| 99久久99久久精品免费看蜜桃 | 国产一区二区福利| 亚洲欧美日韩系列| 日韩精品一区二区三区中文精品| av激情亚洲男人天堂| 蜜臀精品一区二区三区在线观看| 国产精品久久久久久久久动漫| 91精品在线免费| 91日韩在线专区| 国产一区二区毛片| 亚洲午夜一二三区视频| 欧美国产精品v| 日韩欧美第一区| 日本道色综合久久| 国产乱淫av一区二区三区| 亚洲福利国产精品| 国产精品成人免费在线| 国产午夜精品美女毛片视频| 久久精品国产**网站演员| 成人毛片在线观看| 亚洲日本丝袜连裤袜办公室| 奇米影视一区二区三区小说|