程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 串口通訊應用程序的解決方案

串口通訊應用程序的解決方案

編輯:Delphi

  Delphi中常用串口控件簡介:
  mscomm:微軟的東西,是VB中帶的一個ActiveX控件,使用簡單,性能一般,由於是ActivX控件,打包時需要注冊好多信息,在Delphi中使用,建議使用VCL控件,編譯程序時直接編入程序中,再不需任何其它處理。
  spcomm:比較好的vcl控件,算是比較專業的,解剖了一下,功能比較完善。
  TurboPower:公認的專業通訊vcl控件。可以到其站點下載,開放源碼了。
  我在制作串口通訊軟件時三種都用過,最終全部使用TurboPower!所以也推薦大家使用它。
  寫了個例子,基本的串口通訊都可以實現,可提供參考:
  下載基地-》文件名稱:串口通訊控制器
  

  版權聲明:以下本文只允許在本站觀看,不得以任何媒體方式進行傳播。
  發表意見請到留言版。

  TurboPower串口通訊實際應用:
  在串口通訊時有字符和十六進制兩種數據傳輸方式,不論使用哪種方式,只要能正確收到數據就是目的,至於收到數據後如何處理,就要根據具體的情況來定了。

  1.接收數據的方法:
  輪詢和中斷(利用Windows消息激發事件)。
  1)輪詢:每間隔一定的時間查詢一下串口接收緩存中有無數據,有就讀出來。這種方法是很毫資源的,即沒事找事。
  2)中斷:在控件中有OnTrigger事件,當串口收到數據後,即觸發此事件,無數據時什麼都不做,在這個事件中接收數據就比較科學了。
  所以,提倡使用控件中的OnTrigger事件接收數據。

  2.通訊協議的制定:
  接收數據的一般處理方法,最基本的思路就是通過協議進行分析,所以協議的制定是至關重要的:
  1)首先要確定指令的起始點,從大量的數據流中將指令分離出來,沒有起始標志的話,結果就可想而知了,一串無效的費數據!
  2)然後就是指令結束識別點,可以利用指令的長度(如果長度一定或有表示長度的數據)或結束標志來確定,當然還可以利用下一條指令的指令頭。
  3)既然頭尾都明確了,指令的截取想來不是什麼問題了吧!但還有一種情況就是數據錯誤是的容錯,如何容錯呢,最簡單的辦法:發現不符合格式的指令,就將其拋掉或特殊處理(如要求重發)一下!
  4)有效數據中如果增加一些校驗,通訊將會更加可靠!
  例:#(指令頭)**(指令功能)0123456789(有效數據)**(有效數據校驗和)%(指令尾)
  注:**代表變動值。

  3.接收數據的分析技巧:
  通訊協議制定好後,一切將以通訊協議為中心。一套協議中的所有指令可能長度都是統一的,也有可能是長短不同的,並且在OnTrigger事件中實際反應速度及快,可能一條指令數據還沒有完全收齊就已經觸發了此事件,即收到了半截指令,並且有可能繼續收取的數據中除了下半截指令外,還有下一條指令的前半截,如何處理?
  我在做這種處理時是利用全局變量,將串口收到的所有數據都收到該串中,然後按指令格式進行截取,發現不合法指令做一下特殊處理(如要求重發)或拋棄。
  如收到的數據串為:
  #**0000012000**%#**0000000343#**000000540560**%#**0002200000**%
  分段截為:
  #**0000012000**%
  #**0000000343
  #**000000540560**%
  #**0002200000**%
  四條指令,其中:#**0000000343不完整,檢測到後進行拋棄處理。

  調試技巧篇:
  對於已了解協議的支持串口產品,要想進行編程控制,可以使用“串口通訊控制器”進行調試,以摸清具體實現數據,可按如下步驟進行:
  1.確定硬件連接無誤,這是首要條件,如果錯誤將沒有成功的可能;
  連線必須正確,必要時可以使用計算機自帶的多個端口相互進行測試,已保證硬件的連接無誤。串口通訊線有9針和25針,多用9針,其中最重要的是2(RXD)、3(TXD)、5(GND)線,對應關系如下:
  9針 25針
  2 -- 3
  3 -- 2
  5 -- 7

  2.確定通訊參數正確,如:波特率、奇偶校驗位、數據位、停止位等,以及收發的是十六進制還是字符串:

  3.以上確保正確,則使用“串口通訊控制器”,按協議輸入數據進行收發控制了。
  注意:有的儀器需要進行初始化,即先發一段激活指令,然後才能進入工作狀態,這種設置主要是為了實現利用硬件為軟件加密,即類似加密狗,需要有激活方法才行,不過該類方法使用較少。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved