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

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

?? delphi 中 串 行 通 信 的 實 現 (2000年7月22日).txt

?? delphi 編程技巧
?? TXT
字號:
Delphi 中 串 行 通 信 的 實 現 (2000年7月22日) 

本站更新  分類:   作者:王 琛  推薦:   閱讀次數:1070  
(http://www.codesky.net)  

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


  隨著現代信息技術的發展以及計算機網絡的廣泛使用,計算機通信技術已經日臻成熟,但串行通信作為一種靈活方便可靠的通信方式,仍不失為
有效的通信手段,被廣泛應用于工業控制中。在工業生產實踐中,用PC機對工程實現實時監控,通常要求PC機能在用戶界面上具有數據采集、數據處
理以及控制信號的產生與傳輸等功能。在這種特定的環境下,PC機要與過程控制的實時信號相聯系,就要求能實現對PC機的串行端口直接操作。Borland
公司推出的Delphi是一種功能強大的高級編程語言,其具有的可視化面向對象的特性,特別適于在Windows環境下圖形界面和用戶程序的編制。本文
就是介紹基于Windows95/NT操作系統用Delphi來實現PC機與下層PLC控制器之間的串口通信方法。

基于WIN95/NT的串行通信機制
  Windows操作系統的機制禁止應用程序直接訪問計算機硬件,但它為程序員提供了一系列的標準API函數,使得應用程序的編制更加方便并且免除
了對有關硬件的調試麻煩。在Windows95/NT中,原來Windows3.X的WM_COMMNOTIFY消息已被取消,操作系統為每個通信設備開辟了用戶可定義大小的
讀/寫緩沖區,數據進出通信口均由操作系統后臺完成,應用程序只需對讀/寫緩沖區操作即可。WIN95/NT中幾個常用的串行通信操作函數如下:

   CreatFile  : 打開串行口
   CloseHandle : 關閉串行口
   SetupComm  : 設置通信緩沖區的大小
   ReadFile   : 讀串口操作
   WriteFile  : 寫串口操作
   SetCommState : 設置通信參數
   GetCommState : 獲取默認通信參數
   ClearCommErro: r清除串口錯誤并獲取當前狀態
   除上述幾個函數外,還要經常用到一個重要的記錄DCB(設備控制塊)。DCB中記錄有可定義的串行口參數,設置串行口參數時必須先用GetCommState函數將系統默認值填入DCB控制塊,然后才可把用戶想改變的自定義值設定。在WIN95/NT中進行串行通信除了解基本的通信操作函數外,還要掌握多線程編程。線程是進程內部執行的路徑,是操作系統分配CPU時間的基本實體。每個進程都由單線程開始完成應用程序的執行。串行通信需要利用多線程技術實現,其主要的處理邏輯可以表述如下:進程一開始先由主線程做一些必要的初始化工作,然后主線程根據需要在適當時候建立通信監視線程監視通信口,當指定的串行口事件發生時,向主線程發送WM_COMMNOTIFY消息(由于WIN95取消了WM_COMMNOTIFY消息,因此必須自己創建),主線程對其進行處理。若不需要WM_COMMNOTIFY消息,則主線程終止通信監視線程。多線程同時執行,將會引起對共享資源的沖突。為避免沖突,就要用同步多線程對共享資源進行訪問。WIN95提供了許多保持線程同步的方法,筆者采用創建事件對象來保持線程同步。通過CraeteEvent()創建事件對象,使用SetEvent() 或PulseEvent()函數將事件對象設置成信號同步。在應用程序中,利用WaitSingleObject() 函數等待同步的觸發,等到指定的事件被其它線程設置為有信號時,才繼續向下執行程序。

Delphi下的具體實現方法
  Delphi的強大功能和支持多線程的面向對象編程技術,使得實現串行通信非常簡單方便。它通過調用外部的API函數來實現,主要步驟如下:首先,
利用CreateFile函數打開串行口,以確定本應用程序對此串行口的占有權,并封鎖其它應用程序對此串口的操作;其次,通過GetCommState函數填充設
備控制塊DCB,再通過調用SetCommState函數配置串行口的波特率、數據位、校驗位和停止位。然后,創建串行口監視線程監視串行口事件。在此基礎上
就可以在相應的串口上操作數據的傳輸;最后,用CloseHandle函數關閉串行口。具體的程序如下,本程序用Delphi3.0編制在Win95環t境下調試通過,
已投入實際應用中,供廣大讀者參考。
程序:
unit comdemou;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
const
Wm_commNotify=Wm_User+12;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
Procedure comminitialize;
Procedure MsgcommProcess(Var Message:Tmessage); Message Wm_commnotify;
{ Private declarations }
public
{ Public declarations }
end;
// 線 程 聲 明
TComm=Class(TThread)
protected
procedure Execute;override;
end;
var
Form1: TForm1;
hcom,Post_Event:Thandle;
lpol:Poverlapped;
implementation
{$R *.DFM}
Procedure TComm.Execute; // 線 程 執 行 過 程
var
dwEvtMask:Dword;
Wait:Boolean;
Begin
fillchar(lpol,sizeof(toverlapped),0);
While True do Begin
dwEvtMask:=0;
Wait:=WaitCommEvent(hcom,dwevtmask,lpol); // 等 待 串 行 口 事 件;
if Wait Then Begin
waitforsingleobject(post_event,infinite); // 等 待 同 步 事 件 置 位;
resetevent(post_event); // 同 步 事 件 復 位;
PostMessage(Form1.Handle,WM_COMMNOTIFY,0,0);// 發 送 消 息;
end;
end;
end;

procedure Tform1.comminitialize; // 串 行 口 初 始 化
var
lpdcb:Tdcb;
Begin
hcom:=createfile('com2',generic_read or generic_write,0,nil,open_existing,
file_attribute_normal or file_flag_overlapped,0);// 打 開 串 行 口
if hcom=invalid_handle_value then
else
setupcomm(hcom,4096,4096); // 設 置 輸 入, 輸 出 緩 沖 區 皆 為4096 字 節
getcommstate(hcom,lpdcb); // 獲 取 串 行 口 當 前 默 認 設 置
lpdcb.baudrate:=2400;
lpdcb.StopBits:=1;
lpdcb.ByteSize:=8;
lpdcb.Parity:=EvenParity; // 偶 校 驗
Setcommstate(hcom,lpdcb);
setcommMask(hcom,ev_rxchar); 
// 指 定 串 行 口 事 件 為 接 收 到 字 符;
end;
Procedure TForm1.MsgcommProcess(Var Message:Tmessage);
var
Clear:Boolean;
Coms:Tcomstat;
cbNum,ReadNumber,lpErrors:Integer;
Read_Buffer:array[1..100]of char;
Begin
Clear:=Clearcommerror(hcom,lpErrors,@Coms);
if Clear Then Begin
cbNum:=Coms.cbInQue;
ReadFile(hCom,Read_Buffer,cbNum,ReadNumber,lpol);
// 處 理 接 收 數 據
SetEvent(Post_Event); // 同 步 事 件 置 位
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
comminitialize;
post_event:=CreateEvent(nil,true,true,nil); // 創 建 同 步 事 件;
Tcomm.Create(False); // 創 建 串 行 口 監 視 線 程;
end;
end.
南京理工大學經濟管理學院96研究生210094王琛 
 
 


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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区在线电影| 在线播放一区二区三区| 欧美区视频在线观看| 国产亚洲一区二区三区四区| 亚洲6080在线| 成人av动漫网站| 欧美mv日韩mv亚洲| 亚洲欧美日韩一区二区 | 欧美精品久久久久久久多人混战 | 青青草原综合久久大伊人精品| 国产精品亚洲视频| 欧美一区二区女人| 亚洲国产另类av| 91看片淫黄大片一级在线观看| 欧美刺激脚交jootjob| 亚洲午夜精品网| 色哟哟一区二区在线观看| 国产色一区二区| 精品一区二区在线视频| 在线播放91灌醉迷j高跟美女| 亚洲精品中文字幕在线观看| 处破女av一区二区| 亚洲国产精品t66y| 国产一区二区三区不卡在线观看 | 亚洲午夜激情网站| 色狠狠一区二区三区香蕉| 国产精品久久二区二区| 成人国产精品免费网站| 国产精品素人一区二区| 成人av免费在线| 国产精品久久久久久亚洲毛片| 国产成都精品91一区二区三| 欧美韩日一区二区三区四区| 成人一区二区三区中文字幕| 中文字幕av免费专区久久| 国产精品一品二品| 国产精品视频麻豆| 99精品热视频| 亚洲综合激情网| 欧美日韩国产美女| 美脚の诱脚舐め脚责91 | 午夜精品久久久| 日韩一区国产二区欧美三区| 美洲天堂一区二卡三卡四卡视频| 日韩色在线观看| 国产剧情一区在线| 中文字幕日韩一区| 精品视频色一区| 裸体健美xxxx欧美裸体表演| 欧美精品一区二区不卡| 成人久久久精品乱码一区二区三区| 日本一区二区久久| 色综合久久久网| 日韩电影网1区2区| 国产亚洲va综合人人澡精品| 色综合天天综合给合国产| 亚洲国产精品一区二区尤物区| 欧美精品丝袜久久久中文字幕| 美国毛片一区二区三区| 国产欧美日韩麻豆91| 91精品办公室少妇高潮对白| 美女在线一区二区| 国产精品美女久久久久久久久| 欧美午夜片在线看| 国产呦精品一区二区三区网站| 中文字幕日韩一区| 日韩一区二区三区电影| www.在线成人| 麻豆久久久久久久| 亚洲欧美日韩小说| 欧美精品一区二区高清在线观看| a级精品国产片在线观看| 日韩中文字幕1| 日韩美女视频一区二区| 日韩精品专区在线影院观看| 成人动漫在线一区| 久久精品国产99| 亚洲精品高清在线| 国产亚洲va综合人人澡精品| 欧美日本在线视频| 成人av电影在线| 国产资源在线一区| 日日嗨av一区二区三区四区| 中文字幕亚洲视频| 精品国产露脸精彩对白| 欧美三级韩国三级日本三斤| 东方aⅴ免费观看久久av| 五月激情综合网| 亚洲日本护士毛茸茸| 久久综合九色综合欧美就去吻| 欧美性感一类影片在线播放| 99国产精品99久久久久久| 免费精品视频最新在线| 亚洲欧洲综合另类在线| 国产欧美精品一区二区色综合 | 欧美一区二区三区男人的天堂| 成人av网站免费| 国产精品一区二区果冻传媒| 免费精品视频在线| 爽好久久久欧美精品| 夜夜嗨av一区二区三区 | 精品成人在线观看| 欧美一区二区不卡视频| 欧美无乱码久久久免费午夜一区| 不卡一卡二卡三乱码免费网站| 国模冰冰炮一区二区| 麻豆91精品视频| 美女视频黄a大片欧美| 日韩—二三区免费观看av| 亚洲一级不卡视频| 一区二区三区国产精品| 一区二区三区不卡视频在线观看| 亚洲色欲色欲www在线观看| 中文字幕一区二区三区不卡| 国产精品久久久久久久久图文区 | 日产精品久久久久久久性色| 国产日产欧美一区二区视频| 欧美精品一区二区三区蜜臀| 精品国产凹凸成av人网站| 久久欧美中文字幕| 久久精品一区二区三区av| 日本一区二区免费在线| 亚洲欧洲一区二区三区| 一区二区三区不卡视频| 亚洲午夜精品17c| 三级不卡在线观看| 久久超碰97中文字幕| 麻豆成人免费电影| 蜜桃av一区二区三区电影| 激情久久久久久久久久久久久久久久| 精品在线一区二区| 成人av电影在线| 欧美午夜一区二区三区| 日韩一区二区三区在线视频| 欧美精品一区二区三区四区| 久久精品人人做人人爽人人| 中文字幕一区在线观看视频| 亚洲精品国产a| 蜜臀va亚洲va欧美va天堂| 喷白浆一区二区| 丰满放荡岳乱妇91ww| 欧美在线观看禁18| 欧美tickling网站挠脚心| 国产精品久久久久毛片软件| 亚洲永久精品国产| 极品少妇xxxx精品少妇偷拍| 99精品黄色片免费大全| 91麻豆精品91久久久久同性| 久久久久久久久蜜桃| 一区二区三区久久久| 久久99国内精品| 91黄视频在线| 久久―日本道色综合久久| 最新国产成人在线观看| 麻豆精品一区二区综合av| 99久久99久久精品免费看蜜桃| 欧美精品黑人性xxxx| 国产精品久久久久久久久搜平片| 视频一区视频二区在线观看| 国产不卡一区视频| 日韩视频永久免费| 亚洲综合色丁香婷婷六月图片| 国产精品中文欧美| 欧美男男青年gay1069videost| 国产亚洲人成网站| 日韩精品视频网站| 91麻豆自制传媒国产之光| 精品粉嫩aⅴ一区二区三区四区| 亚洲线精品一区二区三区八戒| 国产成人8x视频一区二区| 欧美一二三四在线| 亚洲一区成人在线| 91免费版在线| 中文字幕欧美国产| 精品一区二区三区香蕉蜜桃| 欧美日韩高清在线| 亚洲欧美日韩国产综合| 高清日韩电视剧大全免费| 日韩美女天天操| 日韩精品欧美精品| 欧美网站一区二区| 亚洲精品视频在线观看免费| 粉嫩一区二区三区性色av| 精品少妇一区二区| 日本午夜精品视频在线观看| 欧美日韩在线观看一区二区| 亚洲欧美国产77777| 不卡av电影在线播放| 国产欧美一区二区精品性| 国产伦精品一区二区三区免费 | 成人精品视频网站| 久久久国产午夜精品| 狠狠色丁香婷婷综合| 国产欧美精品国产国产专区| 美女精品自拍一二三四| 日韩精品中文字幕一区二区三区 | 欧美日韩免费电影| 亚洲永久免费av| 欧美日本在线一区| 日韩二区三区在线观看|