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;
...全文
573 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jenhon 2013-05-27
  • 打赏
  • 举报
回复
我也碰到一样的问题,请教楼主,换成什么控件?
yinxd6112 2013-02-18
  • 打赏
  • 举报
回复
散分了,spcomm不好使,换别的控件了
datm 2013-02-01
  • 打赏
  • 举报
回复
换回Delphi2007试试
yinxd6112 2013-01-31
  • 打赏
  • 举报
回复
不行 ,改了后编译不过去了。
看那山瞧那水 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()转!

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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