下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Delphi中Spcomm 使用屬性及用法詳解Delphi中Spcomn使用屬性及用法詳解Delphi是一種具有功能強大、簡便易用和代碼執(zhí)行速度快等優(yōu)點的可視化快速 應(yīng)用開發(fā)工具,它在構(gòu)架企業(yè)信息系統(tǒng)方面發(fā)揮著越來越重要的作用,許多程序 員愿意選擇Delphi作為開發(fā)工具編制各種應(yīng)用程序。但是,美中不足之處是 Delphi沒有自帶的串口通信控件,在它的幫助文檔里也沒有提及串口通信,這就給編制通信程序的開發(fā)人員帶來許多不便。目前,利用Delphi實現(xiàn)串口通信的常用的方法有 3種:一是利用控件,如 MSCOMM控件和SPCOMM控件;二是使用 API函數(shù);三是調(diào)用其他串口通 信程序。其中利用API
2、編寫串口通信程序較為復(fù)雜,需要掌握大量的通信知識。 相比較而言,利用SPCOMM控件則相對較簡單,并且該控件具有豐富的與串口 通信密切相關(guān)的屬性及事件,提供了對串口的各種操作,而且還支持多線程。下 面本文結(jié)合實例詳細(xì)介紹SPCOMM控件的使用。SPCOMM的安裝1 .選擇下拉菜單 Compo nent中的In stall Compo ne nt選項,彈出如圖1所示的 窗口。圖1在Unit file name處填寫SPCOMM控件所在的路徑,其他各項可用默認(rèn)值,點 擊OK按鈕。2.安裝后,在System控件面板中將出現(xiàn)一個紅色控件 COM?,F(xiàn)在就可以像 Delphi自帶控件一樣使用 COM控件了
3、。SPCOMM的屬性、方法和事件1屬性 CommName:表示 COM1、 COM2等串口的名字; BaudRate根據(jù)實際需要設(shè)定的波特率,在串口打開后也可更改此值,實際波 特率隨之更改; ParityCheck:表示是否需要奇偶校驗; ByteSize:根據(jù)實際情況設(shè)定的字節(jié)長度; Parity:奇偶校驗位; StopBits:停止位; SendDataEmpty這是一個布爾型屬性,為true時表示發(fā)送緩存為空,或者發(fā) 送隊列里沒有信息;為false時表示發(fā)送緩存不為空,或者發(fā)送隊列里有信息。2方法 Startcomm方法用于打開串口,當(dāng)打開失敗時通常會報錯。錯誤主要有7種:串口已經(jīng)打開;
4、打開串口錯誤;文件句柄不是通信句柄;不能夠安裝通 信緩存;不能產(chǎn)生事件;不能產(chǎn)生讀進(jìn)程;不能產(chǎn)生寫進(jìn)程; StopComm方法用于關(guān)閉串口,沒有返回值; WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word )方法是個帶有布爾型返回值的函數(shù),用于將一個字符串發(fā)送到寫進(jìn)程,發(fā)送成功返回true,發(fā)送失敗返回falseo執(zhí)行此函數(shù)將立即得到返回值,發(fā)送操作隨后執(zhí)行。該函 數(shù)有兩個參數(shù),其中 pDataToWrite是要發(fā)送的字符串,dwSizeofDataToWrite 是發(fā)送字符串的長度。3事件 On ReceiveData :pr
5、ocedure (Se nder: TObject;Buffer: Poi nter;BufferLe ngth: Word) of object當(dāng)有數(shù)據(jù)輸入緩存時將觸發(fā)該事件,在這里可以對從串口收到的數(shù)據(jù)進(jìn)行處理。Buffer中是收到的數(shù)據(jù),BufferLength是收到的數(shù)據(jù)長度。 On ReceiveError : procedure(Se nder: TObject; Eve ntMask : DWORD)當(dāng)接收數(shù)據(jù)出現(xiàn)錯誤時將觸發(fā)該事件。SPCOMM的使用下面是一個利用 SPCOMM控件的串口通信的例子。以實現(xiàn)PC機與單片機8051之間的通信為例,首先要調(diào)通它們之間的握手信號。 假定
6、它們之間的通信協(xié)議是:PC到8051 一幀數(shù)據(jù)6個字節(jié),8051到PC 一幀數(shù)據(jù)也為6個字節(jié)。當(dāng)PC發(fā)出(F0,01,FF,FF,01,F0后8051能收到一幀(F0,01,FF,FF,01,F0,表示數(shù)據(jù)通信握手成功,兩者之間就可以按照協(xié)議相互 傳輸數(shù)據(jù)。創(chuàng)建一個新的工程 COMM.DPR,把窗體的 NAME屬性定為FCOMM,把窗體 的標(biāo)題定義為測試通信,按照圖2添加控件(圖2中黑色矩形圍住的控件即為COMM1) o圖21. 設(shè)定COMM1屬性: 波特率:4800;奇偶校驗位:無;字節(jié)長度: 8;停止位: 1;串口: COM1。Memo1 中將顯示發(fā)送和接收的數(shù)據(jù)。將新的窗體存儲為Comm
7、.pas。2. 編寫源代碼/變量說明varfcomm: TFCOMM; viewstring:string; i:integer;rbuf,sbuf:array16 of byte; /打開串口 procedure TFCOMM.FormShow(Sender: TObject); begincomm1.StartComm;end;/關(guān)閉串口procedure TFCOMM.FormClose(Sender: TObject; var Action: TCloseAction); begincomm1.StopComm;end; /自定義發(fā)送數(shù)據(jù)過程 procedure senddata;va
8、ri:integer; commflg:boolean; begin丄c ,viewstring:= ' ; commflg:=true; for i:=1 to 6 do begin if not m1.writecommdata(sbufi,1) then begincommflg:=false;break;end; /發(fā)送時字節(jié)間的延時 sleep(2);viewstring:=viewstring inttohex(sbufi,2) ' ; end; viewstri ng:='發(fā)送+ viewstri ng; fcomm.memo1.lines.add(vie
9、wstring);fcomm.memo1.lines.add( ');if not commfig then messagedlg('發(fā)送失敗 !' ,mterror,mbyes,0); end;/發(fā)送按鈕的點擊事件procedure TFCOMM.Btn_sendClick(Sender: TObject); beginsbuf1:=byte( f0); /幀頭 sbuf2:=byte( 01); /命令號 sbuf3:=byte( ff);sbuf4:=byte( ff);sbuf5:=byte( 01); sbuf6:=byte( f0); /幀尾sen ddata;/調(diào)用發(fā)送函數(shù)end;/接收過程procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);vari:integer;begin丄C ,viewstring:= ' ;move(bufferA,pchar(rbufbufferle ngth);for i:=1 to bufferlength do viewstring:=viewstring inttohex(rbufi,2) ' ; viewstri 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙教版八年級第二學(xué)期期中科學(xué)試題含答案
- 2025版庭院租賃服務(wù)合同范本3篇
- 國際貨物貿(mào)易合同協(xié)議書范本
- 不動產(chǎn)贈與附撫養(yǎng)協(xié)議合同
- 舉辦商業(yè)演出活動協(xié)議
- 2025-2030全球低氧高原訓(xùn)練系統(tǒng)行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國紫外激光打標(biāo)機冷水機行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球公共事務(wù)咨詢服務(wù)行業(yè)調(diào)研及趨勢分析報告
- 2024年項目部治理人員安全培訓(xùn)考試題及答案(網(wǎng)校專用)
- 2023年-2024年新員工入職前安全教育培訓(xùn)試題附答案【培優(yōu)A卷】
- 高考英語閱讀理解練習(xí)4篇(附解析)
- 巖土工程勘察服務(wù)投標(biāo)方案(技術(shù)方案)
- 新修訂藥品GMP中藥飲片附錄解讀課件
- 五年級美術(shù)下冊第9課《寫意蔬果》-優(yōu)秀課件4人教版
- 節(jié)能降耗課件
- 尼爾森數(shù)據(jù)市場分析報告
- 氧氣霧化吸入法
- 非標(biāo)自動化設(shè)備技術(shù)規(guī)格書和驗收標(biāo)準(zhǔn)(模板)
- 領(lǐng)導(dǎo)干部個人有關(guān)事項報告表(模板)
- GB/T 33141-2016鎂鋰合金鑄錠
- 2023譯林版新教材高中英語必修二全冊重點短語歸納小結(jié)
評論
0/150
提交評論