Delphi2010 SPComm 怎么总是发送数据失败?求高手指点

yinxd6112 2013-01-31 10:16:23
delphi2010 下使用spcomm发送数据,连接com后第一次发送数据成功,但是以后就不行了,getlasterror 是1444,无效的线程ID。不知道是我用的spcomm有问题还是代码的问题?

var
i: Integer;
PCommand: PAnsiChar;
begin
//同步界面at命令显示
TxtAtCommand.Text := ACommand;
MmoComInfo.Lines.Add(ACommand);
if AHasEnter then
ACommand := ACommand + #13;
PCommand := PAnsiChar(AnsiString(ACommand));
WriteLog(ExtractFilePath(ParamStr(0)) + 'log.txt', ACommand + ' ' + DateTimeToStr(Now));
i := 0;
while i <= ATryNum do
begin
if CommGprs.WriteCommData(PCommand, Length(ACommand)) then
Exit
else
Inc(i);
Sleep(100);
end;

Application.MessageBox(PChar(AErr), PChar(Application.Title));
end;
...全文
540 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jenhon 2013-05-27
我也碰到一样的问题,请教楼主,换成什么控件?
  • 打赏
  • 举报
回复
yinxd6112 2013-02-18
散分了,spcomm不好使,换别的控件了
  • 打赏
  • 举报
回复
datm 2013-02-01
换回Delphi2007试试
  • 打赏
  • 举报
回复
yinxd6112 2013-01-31
不行 ,改了后编译不过去了。
  • 打赏
  • 举报
回复
这样试试? CommGprs.WriteCommData(PCommand, Length(ACommand)) 改成CommGprs.WriteCommData(PCommand^, Length(ACommand))
  • 打赏
  • 举报
回复
xjq2003 2013-01-31
引用 楼主 yinxd6112 的回复:
delphi2010 下使用spcomm发送数据,连接com后第一次发送数据成功,但是以后就不行了,getlasterror 是1444,无效的线程ID。不知道是我用的spcomm有问题还是代码的问题? var i: Integer; PCommand: PAnsiChar; begin //同步界面at命令显示 TxtAtCommand.Text := AComm……
你发送一次线程就结束了吧? 线程里加个死循环试一下
  • 打赏
  • 举报
回复
蓝色的天堂 2013-01-31
PCommand := PAnsiChar(AnsiString(ACommand)); 估计是这句有问题吧,试试用WideCharToMultiByte()转!
  • 打赏
  • 举报
回复
发帖
网络通信/分布式开发

1586

社区成员

Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
帖子事件
创建了帖子
2013-01-31 10:16
社区公告
暂无公告