在TestComplete中操作COM端口

上一篇 / 下一篇  2007-09-25 10:27:10 / 个人分类:TestComplete

"w6~G+JW'O&Kzi'U w0TestComplete中操作COM端口51Testing软件测试网5M q}y/b:O:V*|

&Vj*EZrH0陈能技51Testing软件测试网kJ%].g@ MCT
2007-9-25

7Ran"uh"P4V051Testing软件测试网-J9E(P4y4U

有些软件系统,尤其是一些工业自动化控制方面的软件,经常要使用到COM端口,用于读写外部数据。

5{(k;Qw\1o#N+o0CM4\0

!_ X"F!DQ"~1{0TestComplete没有对这方面提供特殊的支持。但是可以利用Windows scrīpt Host来创建文件系统对象,用于操作COM端口。51Testing软件测试网 sX ~J%\x

51Testing软件测试网 dR1?*x T E4t/t

例如以下脚本:
4| F!N!Aw4e?$B0procedure TestCOMPort;
`Or]:CI,]+W,O\H0var
zH/QA^ `0  fso, f, ForWriting, TriStateFalse : OleVariant;51Testing软件测试网`EBx?!| ^
begin51Testing软件测试网c1na:|3qP2V I La
  ForWriting := 2;
5[0cJN{b0  TriStateFalse := 0;
`1x*O%jR J6N0  51Testing软件测试网0{6OT ^].T'GG`
  fso := Sys.OleObject['scrīpting.FileSystemObject'];51Testing软件测试网D4F^;z8e;h
  f := fso.OpenTextFile('COM1:', ForWriting, false, TriStateFalse);
O a(fb^iI9P0k0  // 往端口写数据51Testing软件测试网z0v)a,m.nGX:X
  f.Write(26);51Testing软件测试网 JbZ6`:Adw
  f.Write(' ');
T{6o i pG Z0  f.Write(Chr(27));
/p;P `Zt*Y*T0  f.Close();51Testing软件测试网?k+D!V@#Xp/E e#cT
end;51Testing软件测试网4^3zMh"UR&X x2{

c+yVw2F!B0另外一个解决办法是利用.NET的类库。System.IO.Ports命名空间包含了用于控制COM端口的类。可以通过TC的dotNET对象来访问这些类。

,z)D'Fs@+j8~%Z051Testing软件测试网8O5qE)Nj/v!u} hT

例如,下面脚本调用.NET的SerialPort类并生成实例对象,然后通过这个对象往端口发送数据和读取数据。51Testing软件测试网E/W+kHrXx+v.a?

'yP Na.AM5n0procedure Test;
T zfKWno C&~;[0var
F&` a7wrz8^0  Port, i, s : OleVariant;51Testing软件测试网I`Ly js*i
begin51Testing软件测试网 \f1De]'o
  Port := dotNET.System_IO_Ports.SerialPort.zctor_4('COM1', 9600);51Testing软件测试网:?8^(}Ja2w
 
"A'Kpv7L] ]0  Port.Open;51Testing软件测试网Q3? J] V/a_
  // 往端口发送数据
)R[o6VOz.C0  Port.Write('A ' + Chr(27));51Testing软件测试网&X f sN-@fF
   // 等待响应
GQ3MIH eH0  BuiltIn.Delay(1000);
l|2QHV D(K,M0  // 处理响应51Testing软件测试网 z$s2xl8N${-U2F
  if Port.BytesToRead <> 0 then51Testing软件测试网,d o W"]}9Y@,WX
  begin
m X9y4A-TlVX0    s := Port.ReadExisting;
P`1H1_J:j w0    Log.Message(s);
xc/w w$iGPXXk0  end
r*_ib&C {Euq w0  else51Testing软件测试网8ub"GE9rP TZ#O
    Log.Warning('No data');51Testing软件测试网4v&u[ H)xk0Z!] x
  Port.Close();51Testing软件测试网X5z2GZ9Ai)|.T @x:p
end;51Testing软件测试网a D$P:qX a

B{&GPLc%Kbs&~H@051Testing软件测试网_;D K%uN!u
 

*FNU.~ D0

TAG: TestComplete 测试工具 COM

引用 删除 david_flfl   /   2011-03-23 13:42:08
同问,如果想发十六进制数怎么办?动态链接库?
逸夫楼自习室 引用 删除 花怡蝶   /   2010-08-02 15:29:33
例如 : 0A FF 之类的
逸夫楼自习室 引用 删除 花怡蝶   /   2010-08-02 15:29:05
如果想发一串16进制数该怎么发?
 

评分:0

我来说两句

Open Toolbar