久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

VB中串口通訊的實現

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

第一篇:VB中串口通訊的實現

VB中串口通訊的實現.txt VB中串口通訊的實現

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

一、概述

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

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

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

MSComm控件的使用方法。

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

1、MSComm的屬性

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

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

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

Portopen:設置串口狀態,值為True時打開串口,值為False時關閉串口。

Input:從輸入寄存器讀取數據,返回值為從串口讀取的數據內容,同時輸入寄存器將被清空。

Ouput:發送數據到輸出寄存器。

InBufferCount:設置輸入寄存器所存儲的字符數,當將其值設為0時,則輸入寄存器將被清空。

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

OutBufferCount:設置輸出寄存器所存儲的字符數,當將其值設為0時,則輸出寄存器將被清空。

RThreshold:設置在MSComm控件設置CommEvent屬性為comEvReceive并產生OnComm事件之前要接受的字符 數。

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

2、MSComm的事件

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

三、串口通訊編程實例

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

1、PC機間的串口通訊

(1)、實現方法:

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

具體見下表:

控件類型 名稱 Caption屬性 作用

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

Text Text1-------輸入所要發送的信息

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

CommandButton Command1 發 送---------CommandButton Command2 退 出---------

Label Label1 發送的數據 提示

Label Label2 接收的數據 提示

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

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

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

D、輸入以下代碼:

Private Sub Command1_Click()

'...發送數據

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

MSComm1.Output = Text1.Text '...發送數據

End Sub

Private Sub Command2_Click()

'...退出

Unload Me

End Sub

Private Sub Form_Load()

'...初始化

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

MSComm1.Settings = “9600,n,8,1” '...設置通訊參數

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

End Sub

Private Sub Mscomm1_Oncomm()

'...通訊事件發生

Select Case MSComm1.CommEvent

Case comEvReceive '...有接受事件發生

Text2.Text = MSComm1.Input '...接受顯示數據

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

End Select

End Sub

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

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

A、同PC機間通訊的實現方法A-B。

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

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

Private Sub Mscomm1_Oncomm()

'...通訊事件發生

Dim indata As Variant

Dim bte(0)As Byte

Select Case MSComm1.CommEvent

Case comEvReceive '...有接受事件發生

indata = MSComm1.Input

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

'...制Byte類型的變量進行轉換!

bte(0)= AscB(indata)

Text2.Text = bte(0)

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

End Select

End Sub

Private Sub Command1_Click()

'...發送數據

Dim Num As Integer

Dim outbte(0)As Byte

Num = Val(Text1.Text)

outbte(0)= CByte(Num)

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

MSComm1.Output = outbte(0)'...發送數據

End Sub

Private Sub Command2_Click()

'...退出

Unload Me

End Sub

Private Sub Form_Load()

'...初始化

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

MSComm1.Settings = “9600,n,8,1” '...設置通訊參數

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

End Sub

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

PUSH PSW ;將程序狀態字壓入堆棧

PUSH ACC ;將累加器壓入堆棧

CLR EA ;關閉系統中斷

CLR RI ;清除中斷標志位

MOV A,SBUF ;從接收寄存器中讀取數據

MOV 70H,A ;分解數據百、十、個位并顯示

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;將接受的數據除以2

MOV SBUF,A ;將得數發送到輸出寄存器

ACALL DL1 ;延時保證數據完整發送

ACALL DL1

CLR RI ;清除中斷標志位

SETB EA ;打開系統中斷

POP ACC;累加器出棧

POP PSW ;程序狀態字出棧

RETI ;中斷程序返回

3、編程環境

以上程序在Windows 2000 Professional,Visual Basic 6.0企業版,AT89C52型單片機下調試通過。

四、總結

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

演講稿

尊敬的老師們,同學們下午好:

我是來自10級經濟學(2)班的學習委,我叫張盼盼,很榮幸有這次機會和大家一起交流擔任學習委員這一職務的經驗。

轉眼間大學生活已經過了一年多,在這一年多的時間里,我一直擔任著學習委員這一職務。回望這一年多,自己走過的路,留下的或深或淺的足跡,不僅充滿了歡愉,也充滿了淡淡的苦澀。一年多的工作,讓我學到了很多很多,下面將自己的工作經驗和大家一起分享。

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

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

在這次的交流會中,我希望大家可以從中吸取一些好的經驗,帶動本班級的學習風氣,同時也相信大家在大學畢業后找到好的工作。謝謝大家!

第二篇:VB實現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

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

網絡編程與實踐實驗報告

實驗內容:串口通信編程 學號:S201502189 姓名:職榮豪 日期:2015-9-28

一、實驗要求

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

二、實驗原理

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

該控件相關的函數如下: put__CommPort:設置串口號

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

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

put_RThreshold:設定當接收幾個字符時觸發OnComm事件,0表示不產生事件,1表示每接收一個字符就產生一個事件

put_SThreshold:設定在觸發OnComm事件前,發送緩沖區內所允許的最少的字符數,0表示發送數據時不產生事件,1表示當發送緩沖區空時產生OnComm事件

put_PortOpen:打開或關閉串口,傳入參數為true時打開串口,傳入參數為false時關閉串口 get_CommEvent:獲得串口上剛發生的事件,事件值為2表示接收到數據

get_InBufferCount:獲得緩沖區中的數據位數

get_Input:獲取緩沖區數據,返回類型為VARIANT put_Output:發送數據

三、設計思路

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

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

四、實驗步驟

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

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

添加一個按鈕用于發送數據,ID設置為IDC_BTN_SEND,Caption設置為“發送” 調整控件的大小與位置。

完成后如圖:

3.給控件綁定變量

右鍵單擊Microsoft Communications Control控件,選擇“添加變量”,變量名為m_com 打開類向導給控件添加變量:

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

4.給控件添加事件響應函數

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

在函數中添加以下代碼:

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

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

//更新m_strReceive的值

//獲取事件值

//獲取緩沖區位數

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

主站蜘蛛池模板: 欧美大肥婆大肥bbbbb| 午夜性色一区二区三区不卡视频| 欧美日韩中文国产一区发布| 日本丰满人妻xxxxxhd| 中文字幕丰满乱孑伦无码专区| 激情中文小说区图片区| 亚洲s久久久久一区二区| 国产精品久久久久这里只有精品| 国产日产精品_国产精品毛片| av怡红院一区二区三区| 99久久久无码国产麻豆| 亚洲性无码av在线欣赏网| 久久精品中文字幕大胸| 国产粉嫩小泬在线观看泬| 熟妇熟女乱妇乱女网站| 波多野结衣美乳人妻hd电影欧美| 欧美日韩精品一区二区三区在线| 免费无码国模国产在线观看| 亚洲裸男自慰gv网站| 国产成人精品视频ⅴa片软件竹菊| 午夜亚洲精品久久一区二区| 久久精品卫校国产小美女| 夜夜爽妓女8888视频免费观看| 国产午夜福利在线观看视频| 免费无码毛片一区二三区| 男人靠女人免费视频网站| 久热中文字幕无码视频| 中文字幕日韩精品有码视频| 免费国产a国产片高清网站| 欧美乱大交xxxxx疯狂俱乐部| 中文无码日韩欧免费视频app| 爽爽午夜影视窝窝看片| av无码不卡一区二区三区| 狠狠爱亚洲综合久久| 日本妈妈在线观看中文字幕| 香港三日本三级少妇三级视频| 精品少妇无码av无码专区| 国产精品久久久十八禁| 免费无码又爽又黄又刺激网站| 无码av一区在线观看免费| 亚洲欧美黑人猛交群|