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;
...全文
507 点赞 收藏 7
写回复
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()转!
回复 点赞
发动态
发帖子
网络通信/分布式开发
创建于2007-08-02

924

社区成员

3.3w+

社区内容

Delphi 网络通信/分布式开发
社区公告
暂无公告