多线程在串口通信中的运用问题?

haoguozhong 2004-08-04 09:35:03
如何利用多线程实现Com1与Com2同时进行数据发送或采集,请各位高手提供思路、代码或实例?
...全文
170 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jpyc 2004-08-11
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/TopicView.asp?id=3246340
suuare 2004-08-11
  • 打赏
  • 举报
回复
我用MSCOMM控件与DELPHI的TTHREAD对象成功封装了西门子GSM调制解调器短信接收与发送的功能.DELPHI的TTHREAD对象能非常简单地实现这一功能.楼主可按照自己的需求封装细节,并留出接口.无论是几个串口,在程序中无非是楼主封装类的多个对象的建立,问题应该是很简单的.
2004v2004 2004-08-11
  • 打赏
  • 举报
回复
guanzhu
richlife 2004-08-04
  • 打赏
  • 举报
回复
打开串口API程序
////////////////////////////////////////////////////
procedure TFormMain.OpenComPort; //打开串口子程序
var
cc:TCOMMCONFIG;
Temp:string;

begin
Temp:='COM'+ inttostr(ComPort); //打开端口
hComm:=CreateFile(PChar(Temp),GENERIC_READ or GENERIC_WRITE,
0,NIL,OPEN_EXISTING,0,0);
if (hComm=INVALID_HANDLE_VALUE) THEN
begin
MessageBox(0,'打开串口错误!','',MB_OK);
hComm:=0;
Exit;
end;
GetCommState(hComm,cc.dcb); //设置端口属性
cc.dcb.BaudRate:=BaudRate;
cc.dcb.ByteSize:=8;
cc.dcb.Parity:=NOPARITY;
cc.dcb.StopBits:=ONESTOPBIT;
if not SetCommState(hComm,cc.dcb) then
begin
MessageBox(0,'串口设置错误!','',MB_OK);
Exit;
end;
SetCommMask(hComm,EV_RXCHAR);

end;
////////////////////////////////////////////////////////////////////
redseaw 2004-08-04
  • 打赏
  • 举报
回复
up
南飞 2004-08-04
  • 打赏
  • 举报
回复
如果是用动态库就直接在多线程里调用,如果用控件就在线程中自动创建控件及其收发事件,串口控件的端口号等属性,在线程创建时传入.这是我的思路
getit911 2004-08-04
  • 打赏
  • 举报
回复
下一个spcomm组件,是开源的.
GoldShield 2004-08-04
  • 打赏
  • 举报
回复
NO.1

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧