欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      VB中串口通訊的實現(xiàn)

      時間:2019-05-14 18:43:44下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《VB中串口通訊的實現(xiàn)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《VB中串口通訊的實現(xiàn)》。

      第一篇:VB中串口通訊的實現(xiàn)

      VB中串口通訊的實現(xiàn).txt VB中串口通訊的實現(xiàn)

      ------------------

      一、概述

      串口通訊作為一種古老而又靈活的通訊方式,被廣泛地應(yīng)用于PC間的通訊以及PC和單片機之間的通訊之中。提到串口通訊的編程,人們往往立刻想到C、匯編等對系統(tǒng)底層操作支持較好的編程語言以及大串繁瑣的代碼。

      實際上,只要我們借助相關(guān)ActiveX控件的幫助,即使是在底層操作一向不被人看好的VB中,一樣能夠?qū)崿F(xiàn)串口通 訊,甚至其實現(xiàn)方法和C、匯編相比,要更加快捷方便。下面,筆者就介紹一下在VB中實現(xiàn)串口通訊的方法。

      在Visual Basic中有一個名為Microsoft Communication Control(簡稱MSComm)的通訊控件。我們只要通 過對此控件的屬性和事件進行相應(yīng)編程操作,就可以輕松地實現(xiàn)串口通訊。下面,筆者就簡要地介紹一下

      MSComm控件的使用方法。

      二、MSComm控件的主要屬性、事件

      1、MSComm的屬性

      由于MSComm控件屬性很多,在此筆者僅介紹與實現(xiàn)串口通訊密切相關(guān)的核心屬性。

      Commport:設(shè)置通訊所占用的串口號。如設(shè)成1(默認(rèn)值),表示對Com1進行操作。

      Setting:對串口通訊的相關(guān)參數(shù)。包括串口通訊的比特率,奇偶校驗,數(shù)據(jù)位長度、停止位等。其默認(rèn)值 是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校驗,8位數(shù)據(jù)位,1個停止位。

      Portopen:設(shè)置串口狀態(tài),值為True時打開串口,值為False時關(guān)閉串口。

      Input:從輸入寄存器讀取數(shù)據(jù),返回值為從串口讀取的數(shù)據(jù)內(nèi)容,同時輸入寄存器將被清空。

      Ouput:發(fā)送數(shù)據(jù)到輸出寄存器。

      InBufferCount:設(shè)置輸入寄存器所存儲的字符數(shù),當(dāng)將其值設(shè)為0時,則輸入寄存器將被清空。

      InputMode:設(shè)置從輸入寄存器中讀取數(shù)據(jù)的形式。若值為0,則表示以文本形式讀??;值為1,則表示以 二進制形式讀取。

      OutBufferCount:設(shè)置輸出寄存器所存儲的字符數(shù),當(dāng)將其值設(shè)為0時,則輸出寄存器將被清空。

      RThreshold:設(shè)置在MSComm控件設(shè)置CommEvent屬性為comEvReceive并產(chǎn)生OnComm事件之前要接受的字符 數(shù)。

      CommEvent屬性:返回最近的通訊事件或錯誤。通過對它具體屬性值的查詢,我們就可以獲得通訊事件和通 訊錯誤的完整信息。當(dāng)其值是comEvReceive時表示接收到數(shù)據(jù)。

      2、MSComm的事件

      除了公共事件之外,MSComm只有一個OnComm事件。當(dāng)CommEvent屬性值變化時將發(fā)生OnComm事件,指示發(fā)生 一個通訊事件或錯誤。當(dāng)我們設(shè)置Rtheshold屬性值為0時,將使得捕獲comEvReceive事件無效。

      三、串口通訊編程實例

      在完成了對MSComm控件的簡要介紹之后,筆者就以實際程序為例,介紹一下串口通訊的具體實現(xiàn)方法。

      1、PC機間的串口通訊

      (1)、實現(xiàn)方法:

      A、新建一個窗體,在上面放兩個Text控件、兩個CommandButton控件和兩個Label控件(如圖1.bmp所示)。

      具體見下表:

      控件類型 名稱 Caption屬性 作用

      -----------------

      Text Text1-------輸入所要發(fā)送的信息

      Text Text2-------顯示接收到的信息

      CommandButton Command1 發(fā) 送---------CommandButton Command2 退 出---------

      Label Label1 發(fā)送的數(shù)據(jù) 提示

      Label Label2 接收的數(shù)據(jù) 提示

      B、在控件工具箱中的空白處點擊鼠標(biāo)右鍵,在彈出的菜單中選擇“部件”,在彈出的窗口中的控件列表中 找到“Microsoft Comm Control”,將其選中,在點擊“應(yīng)用”、“關(guān)閉”,在控件工具欄中就會出現(xiàn)一個電 話的小圖標(biāo)。

      C、用串口線將兩臺電腦連接起來。您可以使用Com1對Com1的對應(yīng)連接,也可以使用Com1和Com2的交叉連接。

      本程序使用的是Com1對Com1的連接。

      D、輸入以下代碼:

      Private Sub Command1_Click()

      '...發(fā)送數(shù)據(jù)

      MSComm1.OutBufferCount = 0 '...清空輸出寄存器

      MSComm1.Output = Text1.Text '...發(fā)送數(shù)據(jù)

      End Sub

      Private Sub Command2_Click()

      '...退出

      Unload Me

      End Sub

      Private Sub Form_Load()

      '...初始化

      MSComm1.CommPort = 1 '...使用Com1口

      MSComm1.Settings = “9600,n,8,1” '...設(shè)置通訊參數(shù)

      MSComm1.PortOpen = True '...打開串口

      End Sub

      Private Sub Mscomm1_Oncomm()

      '...通訊事件發(fā)生

      Select Case MSComm1.CommEvent

      Case comEvReceive '...有接受事件發(fā)生

      Text2.Text = MSComm1.Input '...接受顯示數(shù)據(jù)

      MSComm1.InBufferCount = 0 '...清空輸入寄存器

      End Select

      End Sub

      2、PC機與單片機之間的通訊

      PC機與單片機之間的通訊被廣泛的用于工業(yè)、醫(yī)療測控等領(lǐng)域之中。在應(yīng)用中,我們通常將單片機作為“感 受器”和“效應(yīng)器”,負(fù)責(zé)數(shù)據(jù)采集、響應(yīng)計算機發(fā)出的指令對電路進行控制,有時也進行一些簡單的運算,最后再將執(zhí)行數(shù)據(jù)反饋給計算機處理。本程序?qū)崿F(xiàn)在PC機上輸入一個0-255之間的整數(shù),將此數(shù)據(jù)發(fā)送到單片 機,單片機接收到數(shù)據(jù)后,將數(shù)據(jù)在顯示管上顯示,再將此數(shù)除以2,將得數(shù)返回給PC機。(運行效果如圖 3.BMP所示)其實現(xiàn)方法如下:

      A、同PC機間通訊的實現(xiàn)方法A-B。

      B、連接電腦和單片機。注意!由于PC機端的RS232電平與單片機端TTL的并不不匹配,故應(yīng)注意電平轉(zhuǎn)換。

      C、在VB中輸入以下代碼:

      Private Sub Mscomm1_Oncomm()

      '...通訊事件發(fā)生

      Dim indata As Variant

      Dim bte(0)As Byte

      Select Case MSComm1.CommEvent

      Case comEvReceive '...有接受事件發(fā)生

      indata = MSComm1.Input

      '...注意!要通過MSComm控件發(fā)送或接收二進制數(shù)據(jù)必須用Variant類型的變量對二進

      '...制Byte類型的變量進行轉(zhuǎn)換!

      bte(0)= AscB(indata)

      Text2.Text = bte(0)

      MSComm1.InBufferCount = 0 '...清空輸入寄存器

      End Select

      End Sub

      Private Sub Command1_Click()

      '...發(fā)送數(shù)據(jù)

      Dim Num As Integer

      Dim outbte(0)As Byte

      Num = Val(Text1.Text)

      outbte(0)= CByte(Num)

      MSComm1.OutBufferCount = 0 '...清空輸出寄存器

      MSComm1.Output = outbte(0)'...發(fā)送數(shù)據(jù)

      End Sub

      Private Sub Command2_Click()

      '...退出

      Unload Me

      End Sub

      Private Sub Form_Load()

      '...初始化

      MSComm1.CommPort = 1 '...使用Com1口

      MSComm1.Settings = “9600,n,8,1” '...設(shè)置通訊參數(shù)

      MSComm1.PortOpen = True '...打開串口

      End Sub

      D、單片機工作方式置于1,比特率設(shè)為9600bit/s。在單片機上,我們只得使用匯編語言編寫,并且調(diào)用中 斷實現(xiàn)對串口數(shù)據(jù)的收發(fā)工作。源代碼如下:

      PUSH PSW ;將程序狀態(tài)字壓入堆棧

      PUSH ACC ;將累加器壓入堆棧

      CLR EA ;關(guān)閉系統(tǒng)中斷

      CLR RI ;清除中斷標(biāo)志位

      MOV A,SBUF ;從接收寄存器中讀取數(shù)據(jù)

      MOV 70H,A ;分解數(shù)據(jù)百、十、個位并顯示

      MOV B,#100

      DIV AB

      MOV 52H,A ;分解百位,送入存儲器52H

      MOV A,B

      MOV B,#10

      DIV AB

      MOV 51H,A ;分解十位,送入存儲器51H

      MOV 50H,B ;分解個位,送入存儲器50H MOV A,70H

      MOV B,#2

      DIV AB;將接受的數(shù)據(jù)除以2

      MOV SBUF,A ;將得數(shù)發(fā)送到輸出寄存器

      ACALL DL1 ;延時保證數(shù)據(jù)完整發(fā)送

      ACALL DL1

      CLR RI ;清除中斷標(biāo)志位

      SETB EA ;打開系統(tǒng)中斷

      POP ACC;累加器出棧

      POP PSW ;程序狀態(tài)字出棧

      RETI ;中斷程序返回

      3、編程環(huán)境

      以上程序在Windows 2000 Professional,Visual Basic 6.0企業(yè)版,AT89C52型單片機下調(diào)試通過。

      四、總結(jié)

      從以上程序可以看出,在VB中利用MSComm控件,可以快速開發(fā)出串口通訊程序,從而大大提高編程效率。

      演講稿

      尊敬的老師們,同學(xué)們下午好:

      我是來自10級經(jīng)濟學(xué)(2)班的學(xué)習(xí)委,我叫張盼盼,很榮幸有這次機會和大家一起交流擔(dān)任學(xué)習(xí)委員這一職務(wù)的經(jīng)驗。

      轉(zhuǎn)眼間大學(xué)生活已經(jīng)過了一年多,在這一年多的時間里,我一直擔(dān)任著學(xué)習(xí)委員這一職務(wù)?;赝@一年多,自己走過的路,留下的或深或淺的足跡,不僅充滿了歡愉,也充滿了淡淡的苦澀。一年多的工作,讓我學(xué)到了很多很多,下面將自己的工作經(jīng)驗和大家一起分享。

      學(xué)習(xí)委員是班上的一個重要職位,在我當(dāng)初當(dāng)上它的時候,我就在想一定不要辜負(fù)老師及同學(xué)們我的信任和支持,一定要把工作做好。要認(rèn)真負(fù)責(zé),態(tài)度踏實,要有一定的組織,領(lǐng)導(dǎo),執(zhí)行能力,并且做事情要公平,公正,公開,積極落實學(xué)校學(xué)院的具體工作。作為一名合格的學(xué)習(xí)委員,要收集學(xué)生對老師的意見和老師的教學(xué)動態(tài)。在很多情況下,老師無法和那么多學(xué)生直接打交道,很多老師也無暇顧及那么多的學(xué)生,特別是大家剛進入大學(xué),很多人一時還不適應(yīng)老師的教學(xué)模式。學(xué)習(xí)委員是老師與學(xué)生之間溝通的一個橋梁,學(xué)習(xí)委員要及時地向老師提出同學(xué)們的建議和疑問,熟悉老師對學(xué)生的基本要求。再次,學(xué)習(xí)委員在學(xué)習(xí)上要做好模范帶頭作用,要有優(yōu)異的成績,當(dāng)同學(xué)們向我提出問題時,基本上給同學(xué)一個正確的回復(fù)。

      總之,在一學(xué)年的工作之中,我懂得如何落實各項工作,如何和班委有效地分工合作,如何和同學(xué)溝通交流并且提高大家的學(xué)習(xí)積極性。當(dāng)然,我的工作還存在著很多不足之處。比日:有的時候得不到同學(xué)們的響應(yīng),同學(xué)們不積極主動支持我的工作;在收集同學(xué)們對自己工作意見方面做得不夠,有些事情做錯了,沒有周圍同學(xué)的提醒,自己也沒有發(fā)覺等等。最嚴(yán)重的一次是,我沒有把英語四六級報名的時間,地點通知到位,導(dǎo)致我們班有4名同學(xué)錯過報名的時間。這次事使我懂得了做事要腳踏實地,不能馬虎。

      在這次的交流會中,我希望大家可以從中吸取一些好的經(jīng)驗,帶動本班級的學(xué)習(xí)風(fēng)氣,同時也相信大家在大學(xué)畢業(yè)后找到好的工作。謝謝大家!

      第二篇:VB實現(xiàn)PC與歐姆龍PLC通訊的串口編程

      Private Sub Form_Load()

      Dim i As Integer'OPEN COM1

      If ComTrue(1)= 0 Then

      If ComOpen(1, 38400, 7, 1, 1, “sjh”)= 1 Then 'MsgBox(“已注冊”)'sjh為你的注冊賬號Call SetDelayNum(64)

      End If

      End If

      jisu

      jisu1

      jisu2

      End Sub

      第三篇:串口通訊實驗報告

      網(wǎng)絡(luò)編程與實踐實驗報告

      實驗內(nèi)容:串口通信編程 學(xué)號:S201502189 姓名:職榮豪 日期:2015-9-28

      一、實驗要求

      使用VS2010編寫基于對話框的MFC應(yīng)用程序,兩個窗口分別使用兩個串口,使得這兩個窗口可以進行通信,包括數(shù)據(jù)的發(fā)送與接收。

      二、實驗原理

      本實驗使用Microsoft Communications Control控件,利用這個ActiveX控件,只需要編寫少量代碼即可輕松進行通信。

      該控件相關(guān)的函數(shù)如下: put__CommPort:設(shè)置串口號

      put_Settings:以字符串的形式設(shè)置波特率、奇偶校驗位(n-無校驗,e-偶校驗,o-奇校驗)、數(shù)據(jù)位數(shù)、停止位數(shù)

      put_InputMode:設(shè)置接收數(shù)據(jù)的類型(0-文本類型,1-二進制類型)put_InputLen:設(shè)置從接收緩沖區(qū)讀取的字節(jié)數(shù),0表示全部讀取 put_InBufferSize:設(shè)置接收緩沖區(qū)大小 put_OutBufferSize:設(shè)置發(fā)送緩沖區(qū)大小

      put_RThreshold:設(shè)定當(dāng)接收幾個字符時觸發(fā)OnComm事件,0表示不產(chǎn)生事件,1表示每接收一個字符就產(chǎn)生一個事件

      put_SThreshold:設(shè)定在觸發(fā)OnComm事件前,發(fā)送緩沖區(qū)內(nèi)所允許的最少的字符數(shù),0表示發(fā)送數(shù)據(jù)時不產(chǎn)生事件,1表示當(dāng)發(fā)送緩沖區(qū)空時產(chǎn)生OnComm事件

      put_PortOpen:打開或關(guān)閉串口,傳入?yún)?shù)為true時打開串口,傳入?yún)?shù)為false時關(guān)閉串口 get_CommEvent:獲得串口上剛發(fā)生的事件,事件值為2表示接收到數(shù)據(jù)

      get_InBufferCount:獲得緩沖區(qū)中的數(shù)據(jù)位數(shù)

      get_Input:獲取緩沖區(qū)數(shù)據(jù),返回類型為VARIANT put_Output:發(fā)送數(shù)據(jù)

      三、設(shè)計思路

      需要添加一個Microsoft Communications Control控件,用于進行串口通信。由于要求同一程序可運行兩個窗口進行相互通信,需要兩個窗口開啟兩個不同串口,故需要添加一個Edit Control控件用于輸入串口號,并添加打開串口按鈕,在點擊該按鈕時對串口控件的參數(shù)進行設(shè)置并開啟串口。同時添加關(guān)閉串口按鈕,點擊后關(guān)閉串口并可以對串口號進行修改。

      需要添加兩個Edit Control 分別用于顯示接收到的數(shù)據(jù)以及輸入要發(fā)送的數(shù)據(jù)。需要添加一個發(fā)送按鈕,點擊后發(fā)送輸入的數(shù)據(jù)。

      四、實驗步驟

      1.建立基于對話框的MFC應(yīng)用程序 2.添加界面控件并設(shè)置ID與Caption 添加Microsoft Communications Control控件,用于進行串口通信 添加一個Edit Control控件,用于輸入串口號,ID設(shè)置為IDC_PORT 添加一個Static Text控件,用于標(biāo)注端口號,將Caption設(shè)置為“串口號:”

      添加兩個按鈕,分別用于打開串口、關(guān)閉串口。IDC分別設(shè)置為IDC_BTN_OPEN、IDC_BTN_CLOSE,Caption分別設(shè)置為“打開”、“關(guān)閉” 添加兩個Edit Control,分別用于顯示接收到的數(shù)據(jù)以及輸入要發(fā)送的數(shù)據(jù),ID分別設(shè)置為IDC_RECEIVE、IDC_SEND 添加兩個Static Text控件,用于標(biāo)注接收區(qū)與發(fā)送區(qū),Caption分別設(shè)置為“接收區(qū)”、“發(fā)送區(qū)”

      添加一個按鈕用于發(fā)送數(shù)據(jù),ID設(shè)置為IDC_BTN_SEND,Caption設(shè)置為“發(fā)送” 調(diào)整控件的大小與位置。

      完成后如圖:

      3.給控件綁定變量

      右鍵單擊Microsoft Communications Control控件,選擇“添加變量”,變量名為m_com 打開類向?qū)Ыo控件添加變量:

      給IDC_PORT綁定變量,用于存放輸入的端口號,數(shù)據(jù)類型為int,變量名為m_port 給IDC_RECEIVE綁定變量,用于存放接收到的數(shù)據(jù),數(shù)據(jù)類型為CString,變量名為m_strReceive 給IDC_SEND綁定變量,用于存放輸入的待發(fā)送的數(shù)據(jù),數(shù)據(jù)類型為CString,變量名為m_strSend

      4.給控件添加事件響應(yīng)函數(shù)

      右鍵單擊Microsoft Communications Control控件,選擇“添加事件處理程序”,點擊“添加編輯”,生成響應(yīng)函數(shù),此函數(shù)用于接收數(shù)據(jù)。

      在函數(shù)中添加以下代碼:

      UpdateData(TRUE);if(nEvent == 2){

      } UpdateData(FALSE);//將m_strReceive的值顯示到控件中

      //更新m_strReceive的值

      //獲取事件值

      //獲取緩沖區(qū)位數(shù)

      //時間值為2,此時為收到數(shù)據(jù) int nEvent = m_com.get_CommEvent();int k = m_com.get_InBufferCount();if(k <= 0)//位數(shù)小于等于0時則返回 return;char* str =(char*)m_com.get_Input().parray->pvData;//獲取接收到數(shù)據(jù)的字*(str + k)= '