<nobr id="zkazv"></nobr>

      午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
      首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
      中華工控網首頁
        P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
        D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
        電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
      Delphi中串行通信的實現
      中華工控網
      收藏本文     查看收藏
      Delphi 中 串 行 通 信 的 實 現 <BR> 王 琛 </P><P> --------------------------------------------------------------------------------</P><P> ---- 隨 著 現 代 信 息 技 術 的 發 展 以 及 計 算 機 網 絡 的 廣 泛 使 用, 計 算 機 通 信 技 術 已 經 日 臻 成 熟, 但 串 行 通 信 作 為 一 種 靈 活 方 便 可 靠 的 通 信 方 式, 仍 不 失 為 有 效 的 通 信 手 段, 被 廣 泛 應 用 于 工 業 控 制 中。 在 工 業 生 產 實 踐 中, 用PC 機 對 工 程 實 現 實 時 監 控, 通 常 要 求PC 機 能 在 用 戶 界 面 上 具 有 數 據 采 集、 數 據 處 理 以 及 控 制 信 號 的 產 生 與 傳 輸 等 功 能。 在 這 種 特 定 的 環 境 下,PC 機 要 與 過 程 控 制 的 實 時 信 號 相 聯 系, 就 要 求 能 實 現 對PC 機 的 串 行 端 口 直 接 操 作。Borland 公 司 推 出 的Delphi 是 一 種 功 能 強 大 的 高 級 編 程 語 言, 其 具 有 的 可 視 化 面 向 對 象 的 特 性, 特 別 適 于 在Windows 環 境 下 圖 形 界 面 和 用 戶 程 序 的 編 制。 本 文 就 是 介 紹 基 于Windows95/NT 操 作 系 統 用Delphi 來 實 現PC 機 與 下 層PLC 控 制 器 之 間 的 串 口 通 信 方 法。 </P><P> 基 于WIN95/NT 的 串 行 通 信 機 制<BR> ---- Windows 操 作 系 統 的 機 制 禁 止 應 用 程 序 直 接 訪 問 計 算 機 硬 件, 但 它 為 程 序 員 提 供 了 一 系 列 的 標 準API 函 數, 使 得 應 用 程 序 的 編 制 更 加 方 便 并 且 免 除 了 對 有 關 硬 件 的 調 試 麻 煩。 在Windows95/NT 中, 原 來Windows3.X 的WM_COMMNOTIFY 消 息 已 被 取 消, 操 作 系 統 為 每 個 通 信 設 備 開 辟 了 用 戶 可 定 義 大 小 的 讀/ 寫 緩 沖 區, 數 據 進 出 通 信 口 均 由 操 作 系 統 后 臺 完 成, 應 用 程 序 只 需 對 讀/ 寫 緩 沖 區 操 作 即 可。WIN95/NT 中 幾 個 常 用 的 串 行 通 信 操 作 函 數 如 下: </P><P> CreatFile 打 開 串 行 口 <BR> CloseHandle 關 閉 串 行 口 <BR> SetupComm 設 置 通 信 緩 沖 區 的 大 小 <BR> ReadFile 讀 串 口 操 作 <BR> WriteFile 寫 串 口 操 作 <BR> SetCommState 設 置 通 信 參 數 <BR> GetCommState 獲 取 默 認 通 信 參 數 <BR> ClearCommError 清 除 串 口 錯 誤 并 獲 取 當 前 狀 態 </P><P> ---- 除 上 述 幾 個 函 數 外, 還 要 經 常 用 到 一 個 重 要 的 記 錄DCB( 設 備 控 制 塊)。DCB 中 記 錄 有 可 定 義 的 串 行 口 參 數, 設 置 串 行 口 參 數 時 必 須 先 用GetCommState 函 數 將 系 統 默 認 值 填 入DCB 控 制 塊, 然 后 才 可 把 用 戶 想 改 變 的 自 定 義 值 設 定。 </P><P> ---- 在WIN95/NT 中 進 行 串 行 通 信 除 了 解 基 本 的 通 信 操 作 函 數 外, 還 要 掌 握 多 線 程 編 程。 線 程 是 進 程 內 部 執 行 的 路 徑, 是 操 作 系 統 分 配CPU 時 間 的 基 本 實 體。 每 個 進 程 都 由 單 線 程 開 始 完 成 應 用 程 序 的 執 行。 串 行 通 信 需 要 利 用 多 線 程 技 術 實 現, 其 主 要 的 處 理 邏 輯 可 以 表 述 如 下: 進 程 一 開 始 先 由 主 線 程 做 一 些 必 要 的 初 始 化 工 作, 然 后 主 線 程 根 據 需 要 在 適 當 時 候 建 立 通 信 監 視 線 程 監 視 通 信 口, 當 指 定 的 串 行 口 事 件 發 生 時, 向 主 線 程 發 送WM_COMMNOTIFY 消 息( 由 于WIN95 取 消 了WM_COMMNOTIFY 消 息, 因 此 必 須 自 己 創 建), 主 線 程 對 其 進 行 處 理。 若 不 需 要WM_COMMNOTIFY 消 息, 則 主 線 程 終 止 通 信 監 視 線 程。 </P><P> ---- 多 線 程 同 時 執 行, 將 會 引 起 對 共 享 資 源 的 沖 突。 為 避 免 沖 突, 就 要 用 同 步 多 線 程 對 共 享 資 源 進 行 訪 問。WIN95 提 供 了 許 多 保 持 線 程 同 步 的 方 法, 筆 者 采 用 創 建 事 件 對 象 來 保 持 線 程 同 步。 通 過CraeteEvent() 創 建 事 件 對 象, 使 用SetEvent() 或PulseEvent() 函 數 將 事 件 對 象 設 置 成 信 號 同 步。 在 應 用 程 序 中, 利 用WaitSingleObject() 函 數 等 待 同 步 的 觸 發, 等 到 指 定 的 事 件 被 其 它 線 程 設 置 為 有 信 號 時, 才 繼 續 向 下 執 行 程 序。 </P><P> Delphi 下 的 具 體 實 現 方 法<BR> ---- Delphi 的 強 大 功 能 和 支 持 多 線 程 的 面 向 對 象 編 程 技 術, 使 得 實 現 串 行 通 信 非 常 簡 單 方 便。 它 通 過 調 用 外 部 的API 函 數 來 實 現, 主 要 步 驟 如 下: 首 先, 利 用CreateFile 函 數 打 開 串 行 口, 以 確 定 本 應 用 程 序 對 此 串 行 口 的 占 有 權, 并 封 鎖 其 它 應 用 程 序 對 此 串 口 的 操 作; 其 次, 通 過GetCommState 函 數 填 充 設 備 控 制 塊DCB, 再 通 過 調 用SetCommState 函 數 配 置 串 行 口 的 波 特 率、 數 據 位、 校 驗 位 和 停 止 位。 然 后, 創 建 串 行 口 監 視 線 程 監 視 串 行 口 事 件。 在 此 基 礎 上 就 可 以 在 相 應 的 串 口 上 操 作 數 據 的 傳 輸; 最 后, 用CloseHandle 函 數 關 閉 串 行 口。 具 體 的 程 序 如 下, 本 程 序 用Delphi3.0 編 制 在Win95 環t 境 下 調 試 通 過, 已 投 入 實 際 應 用 中, 供 廣 大 讀 者 參 考。 <BR> ---- 程 序: </P><P> unit comdemou;<BR> interface<BR> uses<BR> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;</P><P> const<BR> Wm_commNotify=Wm_User+12;<BR> type<BR> TForm1 = class(TForm)<BR> procedure FormCreate(Sender: TObject);<BR> private<BR> Procedure comminitialize;<BR> Procedure MsgcommProcess(Var Message:Tmessage); Message Wm_commnotify;<BR> { Private declarations }<BR> public<BR> { Public declarations }<BR> end;</P><P> // 線 程 聲 明<BR> TComm=Class(TThread)<BR> protected<BR> procedure Execute;override;<BR> end;</P><P> var<BR> Form1: TForm1;<BR> hcom,Post_Event:Thandle;<BR> lpol:Poverlapped;<BR> implementation</P><P> {$R *.DFM}</P><P> Procedure TComm.Execute; // 線 程 執 行 過 程<BR> var<BR> dwEvtMask:Dword;<BR> Wait:Boolean;<BR> Begin<BR> fillchar(lpol,sizeof(toverlapped),0);<BR> While True do Begin<BR> dwEvtMask:=0;<BR> Wait:=WaitCommEvent(hcom,dwevtmask,lpol); // 等 待 串 行 口 事 件;<BR> if Wait Then Begin<BR> waitforsingleobject(post_event,infinite); // 等 待 同 步 事 件 置 位;<BR> resetevent(post_event); // 同 步 事 件 復 位;<BR> PostMessage(Form1.Handle,WM_COMMNOTIFY,0,0);// 發 送 消 息;<BR> end;<BR> end;<BR> end;</P><P> procedure Tform1.comminitialize; // 串 行 口 初 始 化<BR> var<BR> lpdcb:Tdcb;<BR> Begin<BR> hcom:=createfile('com2',generic_read or generic_write,0,nil,open_existing,<BR> file_attribute_normal or file_flag_overlapped,0);// 打 開 串 行 口<BR> if hcom=invalid_handle_value then<BR> else<BR> setupcomm(hcom,4096,4096); // 設 置 輸 入, 輸 出 緩 沖 區 皆 為4096 字 節<BR> getcommstate(hcom,lpdcb); // 獲 取 串 行 口 當 前 默 認 設 置<BR> lpdcb.baudrate:=2400;<BR> lpdcb.StopBits:=1;<BR> lpdcb.ByteSize:=8;<BR> lpdcb.Parity:=EvenParity; // 偶 校 驗<BR> Setcommstate(hcom,lpdcb);<BR> setcommMask(hcom,ev_rxchar); <BR> // 指 定 串 行 口 事 件 為 接 收 到 字 符;<BR> end;</P><P> Procedure TForm1.MsgcommProcess(Var Message:Tmessage);<BR> var<BR> Clear:Boolean;<BR> Coms:Tcomstat;<BR> cbNum,ReadNumber,lpErrors:Integer;<BR> Read_Buffer:array[1..100]of char;<BR> Begin<BR> Clear:=Clearcommerror(hcom,lpErrors,@Coms);<BR> if Clear Then Begin<BR> cbNum:=Coms.cbInQue;<BR> ReadFile(hCom,Read_Buffer,cbNum,ReadNumber,lpol);<BR> // 處 理 接 收 數 據<BR> SetEvent(Post_Event); // 同 步 事 件 置 位<BR> end;<BR> end;</P><P> procedure TForm1.FormCreate(Sender: TObject);<BR> begin<BR> comminitialize;<BR> post_event:=CreateEvent(nil,true,true,nil); // 創 建 同 步 事 件;<BR> Tcomm.Create(False); // 創 建 串 行 口 監 視 線 程;<BR> end;</P><P> end.</P><P> ---- 南 京 理 工 大 學 經 濟 管 理 學 院96 研 究 生 210094 王 琛 <BR> ---- 聯 系 電 話:025-4315011-405 或025-8760087 CALL 39787( 中 文)<BR>
       

      狀 態: 離線

      公司簡介
      產品目錄

      公司名稱: 中華工控網
      聯 系 人: 客服中心
      電  話: 0755-26546361
      傳  真: 0755-26585268
      地  址: 深圳市南山區創業路現代城華庭1棟6A
      郵  編: 518054
      主  頁:
       
      該廠商相關技術文摘:
      智能儀器儀表的發展特點與前景分析
      電動機性能虛擬儀器測試系統設計與實現
      視頻監控護航高鐵安全運營
      基于PLC,觸摸屏及變頻器對吹膜機的改造
      永宏PLC應用于自助圖書借還終端機
      基于永宏PLC的GSM通訊原理及其應用
      改善汽車生態學、安全性和舒適性,四大測試分析是關鍵
      改善汽車生態學、安全性和舒適性,四大測試分析是關鍵
      數控技術的發展趨勢及產業化
      數控技術發展戰略與發展途徑的思考
      用Energid 的軟件進行機器人的抓取和操作
      如何借助RFID技術升級企業信息管理水平
      更多文摘...
      立即發送詢問信息在線聯系該技術文摘廠商:
      用戶名: 密碼: 免費注冊為中華工控網會員
      請留下您的有效聯系方式,以方便我們及時與您聯絡

      關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
      工控網客服熱線:0755-86369299
      版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

      主站蜘蛛池模板: 亚洲av无码乱码在线观看野外| 国产精品亚洲一区二区z| 亚洲精品综合一区二区在线| 亚洲码与欧洲码区别入口| 91麻豆视频国产一区二区| 国产成人一区二区三区免费| 欧美一区二区三区欧美日韩亚洲| 成人伊人青草久久综合网| 二区三区亚洲精品国产| 久久亚洲精品中文字幕无| 国产明星精品无码AV换脸| 亚洲春色在线视频| 在线午夜精品自拍小视频| 国产精品国语对白露脸在线播放| 婷婷久久香蕉五月综合加勒比| 又大又粗又硬又爽黄毛少妇| 色综合色综合久久综合频道| 国产精品成人亚洲一区二区| 日本一区二区三区后入式| 好紧好湿好黄的视频| 精品不卡一区二区三区| 暖暖影院日本高清...免费| 波多结野衣一区二区三区| 精品一区二区三区在线播放视频| 国产激情文学亚洲区综合| 天堂V亚洲国产V第一次| 东京热一精品无码av| 亚洲不卡一区二区在线看| 熟妇啊轻点灬大JI巴太粗| 丰满少妇在线观看网站| 国产粉嫩一区二区三区av| 亚洲色最新高清AV网站| 国产欧美亚洲精品a第一页| 国产真人做受视频在线观看| 国产AV老师黑色丝袜美腿| 坐盗市亚洲综合一二三区| 中文字幕无码av不卡一区| 四虎影院176| 日韩中文字幕亚洲精品| 国产又色又爽又黄的视频在线| 国产视频一区二区三区麻豆|