多串口的问题及多客户端问题(200分)

  • 主题发起人 主题发起人 illcat
  • 开始时间 开始时间
你用多串口用PCOMM好,它不用建立PCOMM,只一个就可以,用循环可以打开多个端口,支持多线程,实例可以到http://www.gongkong.com/PRODUCT/include/721.asp去下载一个PCOMM.exe就可,要具体实例可以发邮件我liailmk@163.com
 
我看了,好像是MOXA的说明把,李艾如果你有例程的话不妨给兄弟发来一个,我学习以下PCOMM多线程的使用办法
 
pcom多线程例子学习学习
zhouhj@mail.716.com.cn
谢谢
 
我在playicq上传过一个例子,moxa卡多线程的,不过没有配置数据库,可以用来看看
 
moxa 的PComm很好

我以前也是用spcomm,后来全部用moxa的,感觉可靠性,效率很高,专业串口公司做出来的东西果然不同,尤其对他自己的多串口卡

当然,个人意见,并不诋毁spcomm
 
有多线程的实例吗?
To:陈晨
你上传到PlayICQ上的实例的连接地址是什么?
 
给偶发一个fakirc@sohu.com
 
借地方提问,用多线程后,其它程序运行效率骤减。
是多线程占用了太多资源,或有其它的解释
 
楼上,注意在线程中使用事件,否则你将看到CPU占有率=100%,以下是我的做法,供大家参考,另外,还要适时使用Sleep(dems),dwms可为若干ms,这样可使OS中的其他线程得到响应:

type
TPackComm = class(TThread)
private
FCommNO: Byte;
FSPComm: TSimpleComm;//TSimpleComm is Comm component of myself,in overlapped,but not in multi-threads mode
FCloseEvent: THandle;
....


function WantToTerminate:Boolean;
protected
procedure Execute; override;
procedure ExecCommTask;
public
constructor Create( AOwner: TComponent );
procedure Stop;
procedure AttachComm(SpComm: TSimpleComm);
procedure DeattachComm;
end;


function TPackComm.WantToTerminate:Boolean;//when the event is signaled,the comm thread is asked to terminate.
begin
Result:=WaitForSingleObject( FCloseEvent, 0 ) = WAIT_OBJECT_0;
end;

procedure TPackComm.Stop;
begin
SetEvent(FCloseEvent);
end;

procedure TPackComm.AttachComm(SpComm: TSimpleComm);
begin
FSpComm := SpComm;
FCommNO := SpComm.CommNO;
FSPComm.StopWaitEvent := FCloseEvent;
Resume;
end;

procedure TPackComm.DeattachComm;
begin
Suspend;
FSpComm := nil;
end;

constructor TPackComm.Create( AOwner: TComponent );
begin
FCloseEvent := CreateEvent( nil, True, False, nil );//signal to terminate the thread
inherited Create(True);
end;


procedure TPackComm.Execute;
begin
try
while {True}not Terminated do
begin
if WantToTerminate then break;//the thread close event was signaled?
try
ExecCommTask;
except
on E: Exception do HandleException(E.Message, E.HelpContext);//HandleException of yourself
end;
end;
finally
CloseHandle(FCloseEvent);
end;
end;

 
谢谢大家的参与,结束问题啦
 
后退
顶部