是否可用SPCOMM控件接收数据(100分)

D

didi413

Unregistered / Unconfirmed
GUEST, unregistred user!
现正在做一个项目,具体是这样的:
系统架构为:子控制器汇总告警信息到总控制服务器,它们之间是
用SOCKET传送。从总控制服务器中获取告警信息数据包,并且分析
解读其内容。此数据包的格式为‘#S#,数据包的总字节数,信息内容,#E#’
其中'#S#'为此数据包的开始标示,'#E#'为结束标示。其中的
信息内容有8行,每行77字节。现做的软件只要在PC机上接收就可以,不用发送。
请问用SPCOMM可以实现吗?或是用什么方法?
 
以前作IC读卡器时用过spcomm,没问题的,好像它有个事件就是在收到数据时产生
 
TO:zleo
SOCKET是有OnReceiveData的事件,但主要问题是这个项目从子控制器汇总告警信息
到总控制服务器,它们之间是用SOCKET传送,能否用SPCOMM来接收?
 
那就不行了吧。spcomm是用串口啊,socket是用网线啊
 
用socket传输,接收数据用ClientSocket控件吧,能满足你要求的
 
to didi413:
你把Socket的东西混淆为用SPCOMM来实现,可真需要想象力.
一个是TCP/IP协议,一个是串口协议,通常是RS232,这是风马牛不想干的东西
当然,他们共同的一点是都用来传输数据,都可纳入通讯这个栏目把
 
用ClientSocket接收信息要注意什么呢?如何设置?
各位有例子吗,didi413@sohu.com
看DELPHI上的Chat的例子有用吗?还有好的其它的例子吗?
谢谢!
 
肯定可以。我没有用过spcomm,我是用的mscomm控件。



现时DELPHI上有很多串行口控件,SPCOMM控件有Data Bits、Parity、 Stop Bits 等配置,支持 Read/Write 时序控制 (Timing control)、 ReadIntervalTimeout、 WriteIntervalTimout 等 ,支持 DTR/DSR, RTS/CTS 硬件流程控置及 Xon/Xoff 软件流程控置,是目前比较完善的控件。 以下是一个用RS-232进行数据接收、显示的例子。必须将RS232的通信参数设置好才能正确接收数据。(Data Bits,Parity,Stop Bits,COM口参数)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, SPComm;
type
TForm1 = class(TForm)
Comm1: TComm;
Memo1: TMemo;
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;

BufferLength: Word);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
s: string;
begin
SetLength(S, BufferLength); //接收RS232的数据并显示Memo1上。
Move(Buffer^, PChar(S)^, BufferLength);
Memo1.Lines.Add(S);
Memo1.Invalidate;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Comm1.startcomm;//创建窗体时,将comm1控件打开。
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;//关闭窗体时,将comm1控件关闭。
end;
end.

以后多交流啊。qq:3227225


 
多人接受答案了。
 
顶部