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

mscomm32的簡單應用

編輯:Delphi

  因為看到很多網友對串口通信的問題,其中最多的是關於元件的選用與通信的實現。
  我想您不論用什麼類型的控件操作rs232均是一樣的,我比較喜歡用mscomm32,因為它是ms的,且是vb程式設計軟件自帶的,並且免費哦
  還有一個就是moxa的rs232專業開發包pcomm,到
www.moxa.com.twwww.moxa.com.cn可以看到。
  但是我建議您使用ms的,它免費,但pcomm不是的。並且mscomm32有中文幫助的,基本對串口操作事例都有的。很好用!!!

  

  所以下面我就針對mscomm32的應用寫了一個簡單的串口通信工具,主要功能就是通過ms的mscomm32控件實現rs232的數據傳送與接受。
  主要講解2中傳送方法:
  1、直接傳送
  2、傳送數組元素

  down:

  http://delphi.ur-solution.com/Delphi_download/upload/35466_mscomm1.rar

  控件安裝〉〉〉

  方法零
  直接regsvr32 mscomm32.ocx
  條件:系統以前裝過vb

  方法一
  1、安裝VB6.0
  2、如同我上面的所說的安裝方法,在Delphi(5、6、7)中安裝就可以用了

  方法二
  原文著作:王金濤
  出處:http://www.s8s8.Net/cgi-bin/post.CGI?action=replyquote&forum=5&topic=2279&postno=4

  Delphi 具有功能強大、簡便易用和代碼執行速度快等特點,是全球公認的快速應用開發工具技術的先驅者。但是在對串口通信的控制上Delphi的幫助文檔和其他書籍中很少提及,這恰恰又是在開發應用系統時會經常遇到的問題。用過VB的程序員都知道 VB的MSComm通信控件具有豐富的與串口通信密切相關的屬性及事件,提供了一系列標准通信命令的接口,可以用它創建全雙工的、事件驅動的、高效實用的通信程序。在這裡就介紹一下如何把MSComm這個ActiveX控件加入到Delphi中,充分發揮出二者的優越性。

  首先在VB安裝目錄下找到下列三個文件:

  Mscomm.reg, Mscomm32.ocx,Mscomm32.dep ,

  把這三個文件拷貝到Windows的system目錄下(注意WinNT下是System32)。然後用Windows下的注冊工具regsvr32注冊該OCX控件,例如:

  Regsvr32 … system目錄Mscomm32.ocx .

  注冊成功後用記事本打開Mscomm.reg,可以看到類似下面的內容:

  [HKEY_CLASSES_ROOTLicenses4250E830-6AC2-11cf-8ADB-00AA00C00905]

  @ = "kjljvjjjoquqmjjjvpQQkqmqykypoqjquoun",為了能正確使用該控件,需要修改注冊表的信息,在注冊表的在HKEY_CLASSES_ROOTLicenses下建一主鍵:

  4250E830-6AC2-11cf-8ADB-00AA00C00905,主鍵的內容為

  kjljvjjjoquqmjjjvpQQkqmqykypoqjquoun.

  至此已經完成了控件的系統注冊工作,剩下的工作是在Delphi中導入這個ActiveX控件,進入Delphi環境在Component菜單下選Import ActiveX Control,這時在列表中可以看到Microsoft Comm Control 6.0選項, 選中這個選項點擊Install按鈕,完成安裝。在ActiveX控件頁上可以看到一個電話為圖標的控件,這就是MSComm控件。這樣就可以象在VB中一樣方便得使用MSComm控件了。

   

  但是byte array的資料就是不知該用什麼方法送出去?

  type
  TCharArray=array[0..1] of BYTE;
  PCharArray=^TCharArray;
  procedure WriteCom(comm:TMSComm;const Buf:array of BYTE);
  var
  V:Variant;
  p:PCharArray;
  i:Integer;
  begin
  V:= VarArrayCreate([Low(Buf), High(Buf)],varByte);
  P := VarArrayLock(V);
  try
  for i:=Low(Buf) to High(Buf) do P^[i]:=Buf[i];
  finally
  VarArrayUnlock(v);
  end;
  comm.OutPut:=V;
  end;

  

  procedure TForm1.Button3Click(Sender: TObject);
  var
  buf:array[1..20] of BYTE;
  i:integer;
  str:string;
  begin
  if comm1.PortOpen then
  begin
  for i:=1 to length(str) do
  buf[i]:=I;
  comm1.RThreshold:=20;
  WriteCom(comm1,buf);
  end;
  end;

  我想您使用byte array,應該是傳送2進制;需要將INPUTMODE為1 - comInputModeBinary。

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