非正弦交流可測電壓與波形.doc_第1頁
非正弦交流可測電壓與波形.doc_第2頁
非正弦交流可測電壓與波形.doc_第3頁
非正弦交流可測電壓與波形.doc_第4頁
非正弦交流可測電壓與波形.doc_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

非正弦交流可測電壓與波形想通過MSCOMM控件向51單片機(jī)發(fā)送一串字符,如:“ABCDEFGH”,然后由單片機(jī)按原來的順序發(fā)送回來,請求怎么編程實(shí)現(xiàn),謝謝! With MSComm1 .Setting=19200,n,8,1這里根據(jù)你的實(shí)際情況設(shè)置 If Not(.PortOpen) Then .PortOpen=True .InBufferCount=0 .Output=ABCDEFGH Dim Buf Do DoEvents Buf=Buf & .Input Loop Until InStr(Buf,vbCrLf)0這里的結(jié)束控制字符根據(jù)你的實(shí)際情況設(shè)定 Debug.Print 接收到的字符為 & BufEnd With單片機(jī)發(fā)送回來就要你單片機(jī)端處理了,也可以接收一個來自計(jì)算機(jī)的命令來識別是否要回傳字符,這要你自己在單片機(jī)程序里定義和相應(yīng)的硬件電路實(shí)現(xiàn)。 我是用:mscomm1.output=text1.text text.text=ABCDEFGH用INSTR()函數(shù)能否找到結(jié)束字符(呵呵,程序還沒有調(diào)試)對了,在Output的內(nèi)容后也要加上結(jié)尾控制字符,不然單片機(jī)無法判斷某次傳輸是否結(jié)束,這也要根據(jù)你單片機(jī)程序確定。InStr函數(shù)找的是結(jié)尾控制字符,這和停止位不是一個概念,這樣計(jì)算機(jī)就可以知道某次傳輸是否結(jié)束,是針對一個數(shù)據(jù)包,而不象停止位是針對一個字符。 mscomm1.output=text1.text & vbcrlf這樣表達(dá)對吧? 由于溫度巡回檢測儀具有結(jié)構(gòu)簡單、使用方便、測量準(zhǔn)確和可靠性好等優(yōu)點(diǎn),因而,它廣泛應(yīng)用于工業(yè)溫度測量中。98系列上潤儀表WP-RD溫度巡回檢測儀,能完成溫度顯示、輸出控制、網(wǎng)絡(luò)通信等功能。但溫度巡回檢測儀內(nèi)部存儲容量有限,需要與具有強(qiáng)大數(shù)據(jù)處理能力和豐富軟件資源的微機(jī)組成分布式系統(tǒng),實(shí)現(xiàn)由微機(jī)對整個測量過程的溫度數(shù)據(jù)進(jìn)行統(tǒng)一的顯示、存儲、打印報(bào)表、參數(shù)設(shè)定和數(shù)據(jù)的進(jìn)一步處理,這樣必須實(shí)現(xiàn)PC機(jī)與溫度巡回檢測儀之間的通信。它們之間的通信可以通過并行通信或串行通信兩種方式實(shí)現(xiàn),由于串行通信自身的長處,現(xiàn)已被廣泛的使用。Borland公司推出的Delphi是一種功能強(qiáng)大的高級編程語言,是新一代可視化開發(fā)工具,具有功能強(qiáng)大、簡便易用和代碼執(zhí)行速度快等特點(diǎn),特別適用在Windows環(huán)境下圖形界面和用戶程序的編制。本文開發(fā)的溫度智能化巡回檢測系統(tǒng),使用溫度巡回檢測儀作為下位機(jī)采集溫度數(shù)據(jù),經(jīng)過預(yù)處理后通過自帶的RS232串行口將數(shù)據(jù)送給上位機(jī)PC。在PC機(jī)上Win2000環(huán)境下運(yùn)行用Delphi和VB的通信控件MSComm編制的實(shí)時(shí)監(jiān)測系統(tǒng)軟件,接受串行口送來的數(shù)據(jù),進(jìn)行相應(yīng)的數(shù)據(jù)處理,在用戶界面上進(jìn)行實(shí)時(shí)顯示和設(shè)置。2 溫度智能化巡回檢測系統(tǒng)通信協(xié)議 溫度巡回檢測儀與PC機(jī)之間通過RS232異步串行通信接口通信,波特率為1200bps;字節(jié)數(shù)據(jù)格式為1位起始位、8位數(shù)據(jù)位和1位停止位;儀表地址傳送格式為雙字節(jié)、16進(jìn)制、高字節(jié)在前、低字節(jié)在后,數(shù)據(jù)傳輸格式為3字節(jié)定點(diǎn)數(shù)(3字節(jié)定點(diǎn)數(shù)低字節(jié)高4位ASC碼低字節(jié)低4位ASC碼高字節(jié)高4位ASC碼高字節(jié)低4位ASC碼小數(shù)點(diǎn)高4位ASC碼小數(shù)點(diǎn)低4位ASC碼);巡檢儀與上位機(jī)的數(shù)據(jù)通信是以“幀”為單位進(jìn)行的,“”為起始符號。3 MSComm控件的注冊和屬性3.1 MSComm控件的注冊 用Delphi實(shí)現(xiàn)串行通信,可用的方法有兩種:(1)使用Windows API;(2)使用在Windows操作系統(tǒng)中注冊的控件。其中調(diào)用API函數(shù)較為復(fù)雜,需要掌握大量通信知識;而利用MSComm控件,程序?qū)崿F(xiàn)相對簡單,結(jié)構(gòu)清晰,并且該控件具有豐富與串行通信密切相關(guān)的屬性和事件,提供對串口的各種操作,使用很方便,因此本實(shí)時(shí)監(jiān)測系統(tǒng)軟件使用第2種方法。 采用MSComm控件進(jìn)行串行通信時(shí),必須添加一MSComm控件到窗體中。其具體步驟是將MSComm.ocx拷入winntsystem32下,在Delphi主菜單中的Component,選擇Import ActiveX Control命令,彈出Import ActiveX窗口,選擇Microsoft Comm Control5.0,再選擇Add命令,加上MSComm32.ocx,在窗體中生成了一個MSComm對象,就可自由地設(shè)置它的屬性了。3.2 MSComm控件的屬性設(shè)置 MSComm控件提供了2種處理通信的方式:事件驅(qū)動(實(shí)時(shí))方式和查詢方式。由于查詢方式會占用大量的CPU時(shí)間,效率很低,所以本程序中使用的是事件驅(qū)動方式。 利用MSComm控件控制通信程序,關(guān)鍵是準(zhǔn)確理解和設(shè)置通信控件的屬性。下面對程序中所用到的主要屬性事件加以說明。 (1) CommPort屬性。設(shè)置或返回串行端口號,其取值范圍為199,缺省為1; (2) Setting屬性。設(shè)置或返回串行端口波特率、奇偶校驗(yàn)位、數(shù)據(jù)位、停止位等參數(shù),本系統(tǒng)設(shè)置為MSComm.Setting“1200,N,8,1; (3) PortOpen屬性。打開或關(guān)閉串行端口,格式為:MSComm.PortOpen=TRUE/FALSE; (4) InputMode屬性。設(shè)置從緩沖區(qū)讀取數(shù)據(jù)格式,本程序中設(shè)置為0,表示為字符串格式; (5) Input屬性。從接收緩沖區(qū)讀取數(shù)據(jù); (6) Output屬性。向發(fā)送緩沖區(qū)寫入數(shù)據(jù); (7) InBufferSize屬性。接收緩沖區(qū)的大小,缺省值為1024B; (8) InBufferCount屬性。接收緩沖區(qū)中接收字節(jié)數(shù); (9) OutBufferSize屬性。發(fā)送緩沖區(qū)的大小,缺省值為512B; (10) OutBufferCount屬性。發(fā)送緩沖區(qū)中待發(fā)送字節(jié)數(shù); (11) Inputlen屬性。設(shè)置或返回Input每次讀出的字節(jié)數(shù); (12) Rthreshold屬性。在MSComm控件設(shè)置CommEvent屬性為comEvReceive并產(chǎn)生Oncomm前,設(shè)置并返回的要接收的字符數(shù),缺省值為0,不產(chǎn)生Oncomm事件; (13) Sthreshold屬性。在MSComm控件設(shè)置CommEvent屬性為comEvSend并產(chǎn)生Oncomm前,設(shè)置并返回傳輸緩沖區(qū)中允許的最小字符數(shù),缺省值為0,不產(chǎn)生Oncomm事件; (14) CommEvent屬性。串口事件或錯誤。VB如何向串口發(fā)送十六進(jìn)制數(shù)VB如何向串口發(fā)送十六進(jìn)制數(shù)用VB編程想把兩個十六進(jìn)制數(shù)按順序從232串口發(fā)送到單片機(jī)01h和cch,試了多種方法都不成功,程序不出錯,但單片機(jī)就是沒有反應(yīng),設(shè)置沒問題單片機(jī)本身也沒問題.我想,可能還是我對那個串口發(fā)送十六進(jìn)制數(shù)不熟悉,請各位大蝦幫忙,謝謝,晨曦) 一級(初級) 我想可以這樣:大概過程是這樣,先把MSCOMM控件設(shè)置成二進(jìn)制模式,然后再發(fā)送,代碼如下MSComm1.CommPort = 1MSComm1.RThreshold = 1MSComm1.InputMode = comInputModeBinaryMSComm1.PortOpen = Truedim v(1) as bytev(0)=&h1v(1)=&hccMSComm1.output=v這樣應(yīng)該可以! 回復(fù)人(馮大狂)代碼如下:Private Sub Form_Load()初始化串口With MSComm1.InputMode = 1 設(shè)置接受數(shù)據(jù)的類型是二進(jìn)制類型數(shù)據(jù).InputLen = 8 一次性從接收緩沖區(qū)中讀取所有數(shù)據(jù)(8個字節(jié)為一組!).InBufferCount = 0 清空接收緩沖區(qū).OutBufferCount = 0 清空發(fā)送緩沖區(qū).SThreshold = 0 不觸發(fā)OnComm()事件.RThreshold = 1 接收1個字節(jié)數(shù)據(jù)觸發(fā)OnComm()事件.Settings = 9600,N,8,1.CommPort = 1.PortOpen = TrueEnd WithEnd Sub然后在按鈕1中:Private Sub Command1_Click()Dim Data(1) as ByteData(0)= &H1Data(1)=&HCC以上兩個就是你要發(fā)送的數(shù)據(jù)下面這一句就發(fā)給單片機(jī)了MsComm1.Oupput = DataEnd Sub至于對于單片機(jī)的反應(yīng)操作則

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論