Commsxw2005通信组件
//******************************************************************************
一:
A:
打开串口
OPENCOMMSTR
CommSXW2005.opencommstr('COM1','9600,N,8,1' ,FORM1.HANDLE,True)
说明:打开成功返回TRUE,失败FALSE
其中FORM1.HANDLE,是窗体接收线程ID,如不要返回,此处可为0.
在哪个窗体里接收数据就将哪个窗体的FORM1.HANDLE传入.
//*****************************************************************************
二:
发送数据:
//*****************************************************************************
A:
pubsenddata
COMMSXW2005.pubsenddata('1234567890',true);
说明:'1234567890'为要发送的数据,
TRUE为二进制发送.
那么这个'1234567890'对应的十六进制为:0X12,0X34,0X56,0X78,0X90
//******************************************************************************
B:
更参波特率发送并等等数据返回:
CommSXW2005.pubsenddata_changeset('1234567890',true,'9600,n,8,1',1000);
说明:
这里的'9600,N,8,1'可以更改为其它的波特率,不要关闭串口.可作第二次直接发送.
其中TRUE为文件或者十六进制发送,最后的1000为串口等待时间,也就是说将数据发送后在串口等待1000MS再返回.
等待1000MS后,如果收到数据,则在COMMSXW2005的getrevbin(十六进制接收),GETREVSTR(字符接收),这两个参数跟据你的设定再决定接收是十六进制还是字符串.有数据时,自动触发Procedure WMCommNoTify(Var Msg:Tmessage);Message WM_CommNoTify过程.
//*****************************************************************************
三:
文件的接收处理;
//******************************************************************************
A:自动触发接收处理(串口有数据接收时自动接收)
在窗体变量里加入监视函数:
private
Procedure WMCommNoTify(Var Msg:Tmessage);Message WM_CommNoTify;//接收定义
函数过程;
Procedure Tfrm_Main.WMCommNoTify(Var Msg:Tmessage); //接收的实现
begin
RevHex:=RevHex+Commsxw2005.getrevbin ;//这里的REVHEX为窗体级变量,你可以在止接收所有的串口数据,然后进行处理
//如果是字符串接收就要REVSTR:=REVSTR+COMMSXW2005.GETREVSTR
end;
//******************************************************************************
B:
查询式接收处理(延时等待后返回,再查询串口接收缓冲区是否有数据)
对于接收过程,也可以这样用,这种用法一般用在仪表的问答式通信中比较多.
CommSXW2005.pubsenddata_changeset('FF0B)',true,'9600,M,8,1',0);
CommSXW2005.pubsenddata_changeset('FF12',true,'9600,S,8,1',1000);
IF Commsxw2005.getrevbin<>'' then//判断接收数据
begin
//在等待1000MS后,接收数据不为空的处理....
end;
以上是将地址'FF0B'以波特率9600,M,8,1发出(不延时),再将数据"FF12"以波特率:9600,S,8,1发出(加延时等待过程1000MS).最后再判断串口接收数据是否为空.
不为空就进行处理.这种方式并不要在主窗体里加接收数据的消息处理.可以以过
程的方式来完全控制串口的收发.
//******************************************************************************
四:
关闭串口:
COMMSXW2005.CLOSECOM;
说明:直接调用既可