亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? readme.txt

?? 智能監控delphi源碼, 操作說明 1. 在兩臺微機上分別運行文件夾中的可執行文件。 2. 主界面程序可以通過菜單或者按鈕選擇監控方式、報警模式、打開/關閉攝像頭、開始/停止錄像以及查看歷史記
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
spcomm 
 

搜集整理:giver  來源:不詳  作者:佚名
  收錄時間:2004-1-28  閱讀次數:本日/總計:  2/120  

Delphi 是新一代可視化開發工具,它具有功能強大、簡便易用和代碼執行速度快等特點,是全球公認的快速應用開發工具技術的先驅者,它越來越在構架企業信息系統方面發揮著重要作用。由于Delphi 這些顯著特點,許多程序員選擇Delphi作為開發工具編制各種應用程序。但是,令人惋惜的是Delphi沒有自帶串口通訊的控件,在它的幫助文檔里也沒有提及串口通訊,這就給編制通訊程序的開發人員帶來眾多麻煩,影響了開發進度,下面就這一技術進行討論。

  用Delphi 實現串口通訊,常用的幾種方法為:使用控件如MSCOMM和SPCOMM,使用API函數或者在Delphi 中調用其它串口通訊程序。利用API編寫串口通信程序較為復雜,需要掌握大量通信知識,其優點是可實現的功能更強大,應用面更廣泛,更適合于編寫較為復雜的低層次通信程序。相比較而言,利用SPComm控件則相對較簡單,該控件具有豐富的與串口通信密切相關的屬性及事件,提供了對串口的各種操作。

  使用控件這一方法容易掌握,而SPCOMM支持多線程,所以SPCOMM控件的應用更加廣泛。結合實例詳細介紹SPCOMM的使用。

一.SPCOMM控件的安裝

1.選擇下拉菜單Component的第二項Install Component 。


圖1

  彈出圖1所示的窗口,在Unit file name 處填寫控件SPCOMM控件所在路徑,其它可用默認值,點擊OK按紐。

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


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

1.屬性

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

BaudRate:設定波特率9600,4800等,根據實際需要來定,在串口打開后也可更改波特率,實際波特率隨之更改。

ParityCheck:奇偶校驗。

ByteSize:字節長度_5,_6,_7,_8等,根據實際情況設定。

Parity:奇偶校驗位

pBits:停止位

SendDataEmpty:這是一個布爾屬性,為true時表示發送緩存為空,或者發送隊列里沒有信息;為False時表示表示發送緩存不為空,或者發送隊列里有信息。

2.方法 

  Startcomm過程用于打開串口,當打開失敗時通常會報錯,錯誤主要有7種:
⑴串口已經打開 ;
⑵打開串口錯誤 ;
⑶文件句柄不是通訊句柄; 
⑷不能夠安裝通訊緩存; 
⑸不能產生事件 ;
⑹不能產生讀進程;
⑺不能產生寫進程;

  StopComm過程用于關閉串口,沒有返回值。

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

3.事件

OnReceiveData : procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word) of object 
  當輸入緩存有數據時將觸發該事件,在這里可以對從串口收到的數據進行處理。Buffer中是收到的數據,bufferlength是收到的數據長度。 

OnReceiveError : procedure(Sender: TObject; EventMask : DWORD) 
  當接受數據時出現錯誤將觸發該事件。

三.SPCOMM的使用

  下面,我們結合一個串口通訊的例子來說明SPCOMM的使用。

  為了實現PC與單片機8051之間的通訊,首先要調通它們之間的握手信號,假定它們之間的通訊協議是,PC到8051一幀數據6個字節,8051到PC一幀數據也為6個字節,當PC發出(F0,01,FF,FF,01,F0)后能收到這樣一幀(F0,01,FF,FF,01,F0),表示數據通信握手成功,兩者之間就可以按照協議相互傳輸數據。在PC方要發送及接受數據需要以下步驟:

1.創建一個新的工程COMM.DPR,把窗體的NAME屬性改為FCOMM,把窗體的標題改為測試通訊,添加控件。

  對COMM1(黑色矩形圍住的控件)進行屬性設計,設波特率4800,校驗位無,字節長度_8,停止位_1,串口選擇COM1。Memo1中將顯示發送和接受的數據。選擇File/Save As將新的窗體存儲為Comm.pas。

2.編寫源代碼

變量說明

var

FCOMM: TFCOMM;

Viewstring:string;

i:integer;

rbuf,sbuf:array[1..6] of byte;

打開串口

procedure TFCOMM.FormShow(Sender: TObject);

begin

comm1.StartComm;

end;

關閉串口

procedure TFCOMM.FormClose(Sender: TObject; var Action: TCloseAction);

begin

comm1.StopComm;

end;

發送數據

自定義的發送過程

procedure senddata;

var

i:integer;

commflg:boolean;

begin

viewstring:="";

commflg:=true;

for i:=1 to 6 do

begin

if not fcomm.comm1.writecommdata(@sbuf[i],1) then

begin

commflg:=false;

break;

end;

sleep(2); {發送時字節間的延時}

viewstring:=viewstring+inttohex(sbuf[i],2)+" ";

end;

viewstring:="發送"+viewstring;

fcomm.memo1.lines.add(viewstring);

fcomm.memo1.lines.add("");

if not commflg then messagedlg("發送失敗!",mterror,[mbyes],0);

end;



procedure TFCOMM.Btn_sendClick(Sender: TObject);{發送按鈕的點擊事件}

begin

sbuf[1]:=byte($f0); {幀頭}

sbuf[2]:=byte($01); {命令號}

sbuf[3]:=byte($ff);

sbuf[4]:=byte($ff);

sbuf[5]:=byte($01);

sbuf[6]:=byte($0f); {幀尾}

senddata;{調用發送函數}

end;

接收過程

procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;

BufferLength: Word);

var

i:integer;

begin

viewstring:="";

move(buffer^,pchar(@rbuf^),bufferlength);

for i:=1 to bufferlength do

viewstring:=viewstring+inttohex(rbuf[i],2)+" ";

viewstring:="接受"+viewstring;

memo1.lines.add(viewstring);

memo1.lines.add("");

end;

  如果memo1上顯示發送F0 01 FF FF 0F 和 接受F0 01 FF FF F0

這表示串口已正確的發送出數據并正確的接受到數據,串口通訊成功。  



COMM32.PAS
==========

Version 1.00

Comm32.pas is a simple Communications VC for Borland Delphi 2.0 which 
demonstrates the Win32 Communications functions and the new Delphi
'TThread' class. It is implemented using two threads: one for reading
from, and one for writing to a Comm Port.

It probably needs to be implemented as a single thread for read/write
operations if it is needed for any synchronisation functions (such as
file-transfer algorithms).

I started to create a 'TAPI' component to use in conjunction with this
component (hence the 'OnRequestHangup' property) but as of this version
it is incomplete.

Version 1.02 - by small-pig team

    1. Add Read/Write timing control
    2. Add Data bits, Parity, Stop bits properties
    3. Support software and hardware flow control: DTR/DSR, CTS/CTS, XON/XOFF
    4. Add 'Sender' parameter in OnReceiveData

Version 2.0 - - by small-pig team

    1. Support separatly DTR/DSR and RTS/CTS hardware flow control setting
    2. Support separatly OutX and InX software flow control setting
    3. Log file(for debug) may used by many comms at the same time
    4. Add DSR sensitivity property
    5. You can set the error char. replacement when parity error
    6. Let XonLim/XoffLim and XonChar/XoffChar setting by yourself
    7. You may change flow-control when comm is still opened
    8. Change TComm32 to TComm
    9. Add OnReceiveError event handler when overrun, framing error,
       parity error
    10. Fix some bug

Version 2.01 - - by small-pig team

    1. Support some property about modem.
    2. Add OnModemStateChange event hander when RLSD(CD) change state

Version 2.02 - - by small-pig team

    1. Bug fix: When receive XOFF character, the system FAULT!!!!
    2. Remove CommFileLog property

SPCOMM.PAS
==========

Version 2.5

    1. Add OnSendDataEmpty event handler when all data in buffer
       are sent(send-buffer become empty) this handler is called.
       You may call send data here.
    2. Change the ModemState parameters in OnModemStateChange
       to ModemEvent to indicate what modem event make this call
    3. Add RING signal detect. When RLSD changed state or
       RING signal was detected, OnModemStateChange handler is called
    4. Change XonLim and XoffLim from 100 to 500
    5. Remove TWriteThread.WriteData member
    6. PostHangupCall is re-design for debuging function
    7. Add a boolean property SendDataEmpty, True when send buffer
       is empty


USAGE
=====

To use the component once it is installed:
  1)  Attach an event handler to 'OnReceiveData'.
  2)  Call 'StartComm' to open the port.
  3)  Use the 'WriteCommData' method to write to the Comm port.
  4)  Call 'StopComm' to close the port.


PROPERTY
========

  CommName : String
    
      The name of comm port. The comm port is named 'COM1', 'COM2',...
      This comm port must exist when you open it. 

  BaudRate : DWORD

      The baud rate for this comm port. It must be a legal value for your
      serial port can accept it.
      You can change this value when the comm is open and
      the real baud rate is changed immediately.

  ParityCheck : Boolean

      Specifies whether parity checking is enabled. If this member is TRUE,
      parity checking is performed and errors are reported
      (to OnReceiveError handler).
      You can change this value when the comm is open.

  Outx_CtsFlow : Boolean

      Specifies whether the CTS (clear-to-send) signal is monitored
      for output flow control. If this member is TRUE and CTS is turned off,
      output is suspended until CTS is sent again.
      CTS is a input pin. You can read its state from MSR register. It
      usually connect to RTS pin in the other end.
      It is often used for hardware flow control to indicate that the other
      end if being waiting for data.
      You can change this value when the comm is open.

      CTS  Input on   | the other end is waiting for data
          ------------+----------------------------------------
           Input off  | the other end will NOT receive any data

  Outx_DsrFlow : Boolean

      Specifies whether the DSR (data-set-ready) signal is monitored for
      output flow control. If this member is TRUE and DSR is turned off,
      output is suspended until DSR is sent again.
      DSR is a input pin. You can read its state from MSR register. It
      usually connect to DTR pin in the other end.
      It is often used for hardware flow control to indicate that the other
      end is working(active, ready, wait for data...)
      You can change this value when the comm is open.

      DSR  Input on   | the other end is ready, and wait for your data
          ------------+----------------------------------------------------
           Input off  | the other end is not ready, we cannot send data out

  DtrControl : ( DtrEnable, DtrDiable, DtrHandshake )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2023国产精品自拍| 国产精品18久久久久久久网站| 成人妖精视频yjsp地址| 精品中文字幕一区二区| av电影一区二区| 国产一区二区在线看| 欧美精品18+| 精品一区二区三区欧美| 欧美极品xxx| 91蜜桃免费观看视频| 丝袜美腿亚洲色图| 久久久亚洲精品石原莉奈| 国产成人精品免费看| 中文字幕中文字幕一区二区| 91久久精品国产91性色tv| 日韩黄色免费电影| 久久亚洲免费视频| 在线欧美日韩国产| 久久99国产精品久久99 | 一区二区三区久久| 欧美丰满少妇xxxbbb| 精品夜夜嗨av一区二区三区| 国产精品伦一区二区三级视频| 欧美怡红院视频| 激情综合色综合久久| 自拍av一区二区三区| 日韩一区二区三区精品视频| 成人福利视频网站| 免费人成精品欧美精品 | 亚洲精品国产精华液| 欧美一区二区三区婷婷月色| 成人av电影免费在线播放| 婷婷成人综合网| 国产精品毛片久久久久久| 日韩欧美在线综合网| 一本大道久久精品懂色aⅴ| 黄页网站大全一区二区| 亚洲成a人片在线观看中文| 国产精品入口麻豆原神| 欧美成人伊人久久综合网| 91在线精品秘密一区二区| 国产伦精品一区二区三区在线观看| 一区二区三区不卡视频| 欧美激情一区二区三区蜜桃视频 | 福利一区二区在线| 免费观看久久久4p| 亚洲成av人综合在线观看| 综合久久给合久久狠狠狠97色 | 成人av电影在线| 久国产精品韩国三级视频| 亚洲3atv精品一区二区三区| 国产精品麻豆网站| 久久女同精品一区二区| 欧美精品久久久久久久多人混战 | 8x8x8国产精品| 一本大道久久精品懂色aⅴ| 国产99久久久国产精品潘金| 精品一区二区成人精品| 喷白浆一区二区| 视频一区国产视频| 午夜精品一区二区三区电影天堂| 亚洲男帅同性gay1069| 国产精品久久久久影院老司| 国产亚洲婷婷免费| 久久精品夜色噜噜亚洲aⅴ| 日韩欧美123| 51精品视频一区二区三区| 欧美日本不卡视频| 欧美日韩亚州综合| 欧美老女人第四色| 91精品国产欧美一区二区| 欧美色区777第一页| 欧美日韩亚洲国产综合| 在线播放/欧美激情| 91精品一区二区三区久久久久久| 欧美日韩视频在线第一区 | 久久91精品国产91久久小草| 美女一区二区视频| 久久精品国产**网站演员| 久久se精品一区二区| 国产一区二区三区四| 国产成人午夜99999| 成人亚洲精品久久久久软件| 成人手机在线视频| 日本伦理一区二区| 在线成人午夜影院| 精品奇米国产一区二区三区| 久久精品一区二区三区不卡牛牛| 国产精品人人做人人爽人人添| 亚洲人成影院在线观看| 亚洲成人黄色小说| 久草在线在线精品观看| 成人午夜碰碰视频| 欧美在线播放高清精品| 777奇米四色成人影色区| 久久综合九色综合久久久精品综合| 国产日韩在线不卡| 一区二区三区在线观看网站| 欧美aaaaaa午夜精品| 国产乱码一区二区三区| 97精品国产97久久久久久久久久久久| 色婷婷av一区二区三区大白胸| 6080yy午夜一二三区久久| 国产无遮挡一区二区三区毛片日本| 亚洲欧洲日韩在线| 日本视频一区二区三区| 国产又粗又猛又爽又黄91精品| 99久久综合国产精品| 欧美精品久久99久久在免费线 | 天天操天天综合网| 国产精品中文字幕日韩精品| 色综合天天综合| 日韩欧美一区在线观看| 综合激情成人伊人| 精品中文字幕一区二区| 91在线一区二区三区| 欧美mv和日韩mv的网站| 综合色天天鬼久久鬼色| 久久99久久99| 欧美私模裸体表演在线观看| 精品1区2区在线观看| 亚洲欧美激情插| 国产一区在线精品| 欧美日韩aaaaa| 亚洲欧洲另类国产综合| 麻豆国产一区二区| 欧美色图免费看| 中文字幕一区日韩精品欧美| 麻豆视频一区二区| 欧美日韩中文国产| 国产精品免费av| 久草精品在线观看| 日本久久一区二区| 国产精品少妇自拍| 精品午夜一区二区三区在线观看| 在线精品视频一区二区三四| 久久久久亚洲综合| 男女性色大片免费观看一区二区| 一本色道久久综合亚洲精品按摩| 久久久精品国产免大香伊 | 亚洲成人综合网站| 99久久99久久精品国产片果冻| 日韩精品一区二区三区视频播放 | 97久久精品人人做人人爽| 26uuu成人网一区二区三区| 天天色天天操综合| 欧美在线观看视频一区二区| 国产精品久久午夜夜伦鲁鲁| 国产精品综合一区二区三区| 日韩免费观看高清完整版| 亚洲第一主播视频| 欧美优质美女网站| 亚洲精品久久嫩草网站秘色| 波多野结衣一区二区三区| 中文字幕不卡的av| 国产风韵犹存在线视精品| 久久丝袜美腿综合| 国产一区二区调教| 国产视频一区在线观看| 国产自产2019最新不卡| 欧美精品一区二区久久婷婷| 久久99蜜桃精品| 日韩精品一区二区三区三区免费| 久久电影国产免费久久电影| 欧美大尺度电影在线| 日韩黄色免费电影| 日韩视频免费观看高清完整版在线观看 | 99国产精品久久久久| 国产精品色婷婷久久58| 丁香啪啪综合成人亚洲小说| 欧美国产日韩一二三区| av一区二区三区| 尤物av一区二区| 欧美美女一区二区| 琪琪久久久久日韩精品| 日韩一区二区在线免费观看| 精品一二三四区| 国产三级精品视频| 色婷婷久久久亚洲一区二区三区| 夜夜精品视频一区二区| 555夜色666亚洲国产免| 国精产品一区一区三区mba视频 | 国产精品三级av在线播放| 91无套直看片红桃| 天堂一区二区在线免费观看| 337p粉嫩大胆色噜噜噜噜亚洲| 成人三级伦理片| 亚洲图片欧美综合| 欧美本精品男人aⅴ天堂| 丁香婷婷深情五月亚洲| 一区二区三区在线高清| 欧美一级国产精品| 丁香婷婷深情五月亚洲| 亚洲一二三四区不卡| 欧美r级在线观看| 91蜜桃免费观看视频| 美女任你摸久久| 中文字幕在线不卡视频| 欧美日韩www| 成人av资源下载|