首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi2010 SPComm 如何总是发送数据失败?求

2013-02-24 
Delphi2010 SPComm 怎么总是发送数据失败?求高手指点delphi2010 下使用spcomm发送数据,连接com后第一次发

Delphi2010 SPComm 怎么总是发送数据失败?求高手指点
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;
[解决办法]
这样试试?
CommGprs.WriteCommData(PCommand, Length(ACommand))
改成CommGprs.WriteCommData(PCommand^, Length(ACommand))
[解决办法]
PCommand := PAnsiChar(AnsiString(ACommand));

估计是这句有问题吧,试试用WideCharToMultiByte()转!
[解决办法]

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

var
  i: Integer;
  PCommand: PAnsiChar;
begin
  //同步界面at命令显示
  TxtAtCommand.Text := AComm……


你发送一次线程就结束了吧?
线程里加个死循环试一下
[解决办法]
换回Delphi2007试试

热点排行