亚洲欧美第一页_禁久久精品乱码_粉嫩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?。骸£P閉串行口
   SetupComm ?。骸≡O置通信緩沖區的大小
   ReadFile  ?。骸∽x串口操作
   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一区二区三区免费野_久草精品视频
国产成人一区二区精品非洲| 日产精品久久久久久久性色| 日韩欧美在线123| 欧美伊人久久久久久久久影院 | 亚洲猫色日本管| 国产亚洲制服色| 久久久国产综合精品女国产盗摄| 日韩你懂的电影在线观看| 欧美一区二区三区在线看| 欧美精品日韩一区| 欧美日韩国产乱码电影| 91.com视频| 久久五月婷婷丁香社区| 久久久久国产一区二区三区四区| 精品国产免费人成电影在线观看四季 | 国产精品久久久99| 亚洲私人影院在线观看| 亚洲综合久久久久| 天天影视涩香欲综合网| 免费在线成人网| 久久成人免费网| 懂色av一区二区三区免费看| www.欧美亚洲| 欧美日韩一区二区在线观看视频| 91精品久久久久久久99蜜桃 | 紧缚奴在线一区二区三区| 国产一区二区三区免费在线观看 | 国产精品美女久久福利网站| 中文字幕一区二区三区在线不卡| 亚洲日本在线a| 日韩在线卡一卡二| 国产99一区视频免费| 99国产欧美另类久久久精品| 欧美三日本三级三级在线播放| 日韩一区二区在线看| 国产欧美精品日韩区二区麻豆天美| 国产片一区二区| 午夜免费久久看| 国产成人免费xxxxxxxx| 欧美日韩国产综合视频在线观看 | 国产精品网站在线| 天天综合日日夜夜精品| 国产91精品一区二区| 欧美另类z0zxhd电影| 久久久久久久久久看片| 亚洲不卡一区二区三区| 成人深夜福利app| 91麻豆精品国产自产在线 | 欧美疯狂性受xxxxx喷水图片| 日韩免费一区二区| 一区二区三区四区在线播放| 激情综合色播五月| 欧美日韩亚洲综合| 亚洲少妇最新在线视频| 韩国三级电影一区二区| 69av一区二区三区| 一区二区三区在线高清| 99热在这里有精品免费| 2020国产成人综合网| 丝袜美腿高跟呻吟高潮一区| 成人精品免费看| 欧美一区中文字幕| 中文字幕视频一区| 成人亚洲一区二区一| 欧美成人免费网站| 日本中文在线一区| 91精品欧美一区二区三区综合在 | 亚洲精品成人少妇| 成人av在线观| 国产亚洲精品bt天堂精选| 老鸭窝一区二区久久精品| 欧美剧情电影在线观看完整版免费励志电影| 国产精品视频在线看| 国产精品一区二区在线观看不卡| 日韩欧美一区二区视频| 久久精品理论片| 日韩免费一区二区三区在线播放| 青青草国产成人99久久| 日韩一区二区电影| 久久av资源网| 久久久久久久久久久久电影| 久久99国产精品麻豆| 欧美电影免费观看高清完整版 | 亚洲电影你懂得| 欧美高清一级片在线| 日韩av电影免费观看高清完整版| 欧美日韩国产123区| 午夜亚洲福利老司机| 911国产精品| 国内欧美视频一区二区| 国产欧美一区二区精品婷婷| 福利一区二区在线| 亚洲三级久久久| 欧美日韩精品欧美日韩精品| 天堂av在线一区| 欧美r级电影在线观看| 丁香桃色午夜亚洲一区二区三区| 中日韩av电影| 欧美伊人久久大香线蕉综合69| 亚洲成人av福利| 欧美大片在线观看| 波多野结衣在线aⅴ中文字幕不卡| 国产精品美女www爽爽爽| 欧美专区亚洲专区| 免费高清在线视频一区·| 久久品道一品道久久精品| 99麻豆久久久国产精品免费| 夜夜夜精品看看| 久久丝袜美腿综合| 色香蕉久久蜜桃| 精品无人码麻豆乱码1区2区| 久久久久久久久99精品| 欧洲在线/亚洲| 黑人巨大精品欧美一区| 亚洲精品视频一区二区| 精品99999| 欧美日韩激情一区| 国产不卡视频在线播放| 天天做天天摸天天爽国产一区| 久久久久久久久岛国免费| 欧美日韩成人在线| 不卡大黄网站免费看| 久久av中文字幕片| 亚洲一区二区视频| 国产精品伦一区二区三级视频| 91国产丝袜在线播放| 国产在线精品一区二区不卡了 | 1000部国产精品成人观看| 日韩一区二区三区av| 91搞黄在线观看| 丰满少妇久久久久久久| 久久精品国产成人一区二区三区| 自拍偷拍欧美激情| 国产日韩欧美激情| 日韩欧美美女一区二区三区| 色哟哟国产精品| 本田岬高潮一区二区三区| 国产乱人伦精品一区二区在线观看| 午夜精品在线视频一区| 亚洲欧美偷拍另类a∨色屁股| 久久久久九九视频| 精品奇米国产一区二区三区| 欧美色电影在线| 91传媒视频在线播放| 白白色亚洲国产精品| 国产成人免费av在线| 国产一区二区美女诱惑| 久久精品国产久精国产爱| 日本欧美大码aⅴ在线播放| 一区二区日韩av| 一个色综合av| 亚洲第一av色| 天天综合网天天综合色| 性感美女极品91精品| 天天影视涩香欲综合网| 午夜久久久影院| 日本v片在线高清不卡在线观看| 亚洲在线成人精品| 午夜精品影院在线观看| 五月天国产精品| 美女爽到高潮91| 久久se这里有精品| 国产尤物一区二区在线 | 欧美国产成人精品| 国产精品美女一区二区在线观看| 欧美激情一区二区在线| 国产精品网站在线观看| 亚洲欧美一区二区三区久本道91| 一区二区在线电影| 亚洲成人动漫在线免费观看| 婷婷丁香激情综合| 国内成人精品2018免费看| 国产精品一级片| 91视频精品在这里| 欧美日韩一区在线观看| 欧美不卡激情三级在线观看| 久久九九99视频| 亚洲狼人国产精品| 日韩专区中文字幕一区二区| 久久99精品国产麻豆婷婷洗澡| 国产精品自拍av| 色伊人久久综合中文字幕| 欧美绝品在线观看成人午夜影视| 精品美女在线观看| 国产精品日日摸夜夜摸av| 亚洲自拍偷拍九九九| 国内外精品视频| 91福利小视频| 精品国产区一区| 亚洲精选视频在线| 久久激五月天综合精品| 99久久精品免费看| 欧美日韩夫妻久久| 国产精品久久久久aaaa| 毛片不卡一区二区| 欧美在线999| 亚洲国产精品t66y| 免费观看在线综合| 欧美这里有精品| 国产精品久久久久一区|