• <tr id="ewewk"></tr>
  • <option id="ewewk"><dd id="ewewk"></dd></option>
  • <tbody id="ewewk"></tbody>
    <menu id="ewewk"><em id="ewewk"></em></menu>
  • <tr id="ewewk"></tr>
  • <menu id="ewewk"><noscript id="ewewk"></noscript></menu>

    Delphi使用spcomm

    Delphi使用spcomm實(shí)現(xiàn)串口通信 基礎(chǔ)知識及(兩個實(shí)例)



    學(xué)習(xí)下載專區(qū) 【2019-11-16 10:42】


    心得

    轉(zhuǎn)自:https://www.cnblogs.com/beeone/archive/2010/08/12/1798280.html

    如果你已經(jīng)會使用SPCOMM且出現(xiàn)10個以上的串口問題

    請改一下串口名

    COM1.CommName='\\.\com18';

    就這樣 加'\\.\'就行了我也不知道什么回事.......

    以下為抄錄不知道是誰的

    Delphi 是新一代可視化開發(fā)工具,它具有功能強(qiáng)大、簡便易用和代碼執(zhí)行速度快等特點(diǎn),是全球公認(rèn)的快速應(yīng)用開發(fā)工具技術(shù)的先驅(qū)者,它越來越在構(gòu)架企業(yè)信息系統(tǒng)方面發(fā)揮著重要作用。由于Delphi 這些顯著特點(diǎn),許多程序員選擇Delphi作為開發(fā)工具編制各種應(yīng)用程序。但是,令人惋惜的是Delphi沒有自帶串口通訊的控件,在它的幫助文檔里也沒有提及串口通訊,這就給編制通訊程序的開發(fā)人員帶來眾多麻煩,影響了開發(fā)進(jìn)度,下面就這一技術(shù)進(jìn)行討論?! ∮肈elphi 實(shí)現(xiàn)串口通訊,常用的幾種方法為:使用控件如MSCOMM和SPCOMM,使用API函數(shù)或者在Delphi 中調(diào)用其它串口通訊程序。利用API編寫串口通信程序較為復(fù)雜,需要掌握大量通信知識,其優(yōu)點(diǎn)是可實(shí)現(xiàn)的功能更強(qiáng)大,應(yīng)用面更廣泛,更適合于編寫較為復(fù)雜的低層次通信程序。相比較而言,利用SPComm控件則相對較簡單,該控件具有豐富的與串口通信密切相關(guān)的屬性及事件,提供了對串口的各種操作?! ∈褂每丶@一方法容易掌握,而SPCOMM支持多線程,所以SPCOMM控件的應(yīng)用更加廣泛。結(jié)合實(shí)例詳細(xì)介紹SPCOMM的使用。一.SPCOMM控件的安裝

    1.選擇下拉菜單Component的第二項(xiàng)Install Component 。

    在Unit file name 處填寫控件SPCOMM控件所在路徑,其它可用默認(rèn)值,點(diǎn)擊OK按紐。

    2.安裝成功后,system控件面板中將出現(xiàn)一個紅色控件COMM?,F(xiàn)在使用COMM控件可以象Delphi自帶控件一樣使用.。

    二.SPCOMM的主要屬性,方法和事件

    1.屬性CommName:填寫COM1,COM2…等串口的名字,在打開串口前,必須填寫好此值。

    ?BaudRate:設(shè)定波特率9600,4800等,根據(jù)實(shí)際需要來定,在串口打開后也可更改波特率,實(shí)際波特率隨之更改。

    ParityCheck:奇偶校驗(yàn)。

    ByteSize:字節(jié)長度_5,_6,_7,_8等,根據(jù)實(shí)際情況設(shè)定。

    Parity:奇偶校驗(yàn)位StopBits:停止位SendDataEmpty:這是一個布爾屬性,為true時表示發(fā)送緩存為空,或者發(fā)送隊列里沒有信息;為False時表示表示發(fā)送緩存不為空,或者發(fā)送隊列里有信息。

    2.方法   Startcomm過程用于打開串口,當(dāng)打開失敗時通常會報錯,錯誤主要有7種:

    ⑴串口已經(jīng)打開 ;

    ⑵打開串口錯誤 ;

    ⑶文件句柄不是通訊句柄;

    ⑷不能夠安裝通訊緩存;

    ⑸不能產(chǎn)生事件 ;

    ⑹不能產(chǎn)生讀進(jìn)程;

    ⑺不能產(chǎn)生寫進(jìn)程;  

    StopComm過程用于關(guān)閉串口,沒有返回值?! ?/p>

    函數(shù)WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word ): boolean 用于發(fā)送一個字符串到寫線程,發(fā)送成功返回true,發(fā)送失敗返回false, 執(zhí)行此函數(shù)將立即得到返回值,發(fā)送操作隨后執(zhí)行。函數(shù)有兩個參數(shù),其中 pdatatowrite是要發(fā)送的字符串,dwsizeofdatatowrite 是發(fā)送的長度。

    3.事件OnReceiveData : procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word) of object   

    當(dāng)輸入緩存有數(shù)據(jù)時將觸發(fā)該事件,在這里可以對從串口收到的數(shù)據(jù)進(jìn)行處理。Buffer中是收到的數(shù)據(jù),bufferlength是收到的數(shù)據(jù)長度。

    OnReceiveError : procedure(Sender: TObject; EventMask : DWORD)   

    當(dāng)接受數(shù)據(jù)時出現(xiàn)錯誤將觸發(fā)該事件。

    三.SPCOMM的使用  下面,我們結(jié)合一個串口通訊的例子來說明SPCOMM的使用。  

    為了實(shí)現(xiàn)PC與單片機(jī)8051之間的通訊,首先要調(diào)通它們之間的握手信號,假定它們之間的通訊協(xié)議是,

    PC到8051一幀數(shù)據(jù)6個字節(jié),8051到PC一幀數(shù)據(jù)也為6個字節(jié),當(dāng)PC發(fā)出(F0,01,FF,FF,01,F0)后能收到這樣一幀(F0,01,FF,FF,01,F0),表示數(shù)據(jù)通信握手成功,兩者之間就可以按照協(xié)議相互傳輸數(shù)據(jù)。在PC方要發(fā)送及接受數(shù)據(jù)需要以下步驟:1.創(chuàng)建一個新的工程COMM.DPR,把窗體的NAME屬性改為FCOMM,把窗體的標(biāo)題改為測試通訊,添加控件?! OMM1(黑色矩形圍住的控件)進(jìn)行屬性設(shè)計,設(shè)波特率4800,校驗(yàn)位無,字節(jié)長度_8,停止位_1,串口選擇COM1。Memo1中將顯示發(fā)送和接受的數(shù)據(jù)。選擇File/Save As將新的窗體存儲為Comm.pas。




    download spcomm :
    http://m.culliganredwoodfalls.com/download/SPCOMMXE-XE10.1FULLSOURCE.rar
    友情鏈接:
    sql修復(fù)專家
    • 關(guān)注微博
      聯(lián)系QQ
    • 二維碼
    • 掃一掃加關(guān)注

    ——信陽市速全網(wǎng)絡(luò)科技有限公司——

    版權(quán)所有:信陽市速全網(wǎng)絡(luò)科技有限公司

    豫ICP備19030104號-2

    正在观看国产无码,亚洲国产电影av在线网址,欧美亚洲日韩精品,亚洲欧美专区另类 日韩欧美无砖专区一中文字幕 久久免费看少妇高潮A不卡
  • <tr id="ewewk"></tr>
  • <option id="ewewk"><dd id="ewewk"></dd></option>
  • <tbody id="ewewk"></tbody>
    <menu id="ewewk"><em id="ewewk"></em></menu>
  • <tr id="ewewk"></tr>
  • <menu id="ewewk"><noscript id="ewewk"></noscript></menu>