我的硬件带有GPRS模块,可以上网,我用下载的软件可以看到这个模块连接到我的PC后显示该模块的IP,该GPRS模块已经包含PPP、TCP/IP协议。看过一些帖子,说GPRS上网后显示的IP是移动公司的内部IP,是不是不能编成和这个IP连接?那请问我该如何编成实现和这个带GPRS模块的硬件进行数据通讯呢?
都需要使用什么控件?

解决方案 »

  1.   

    由于本人从没接触过这方面的程序,可能问题比较幼稚,请大家不要笑,我会虚心学习。
    由于本人英语水平很一般,所以一看到英文的文章就头疼,所以掌握的东西比较少,不过我还会努力学习,并且还请大家多多指教。我现在使用IdTCPServer控件,已经能收到GRPS模块传来的连接信息(代码如下):
    procedure TFormMain.IdTCPServerConnect(AThread: TIdPeerThread);
    begin
      LbLog.Items.Add('来自主机 ' + AThread.Connection.Socket.Binding.PeerIP + 
                    ' 的连接请求已被接纳!');
    end;
    但是我却收不到GPRS模块传来的数据信息(代码如下):
    procedure TFormMain.IdTCPServerExecute(AThread: TIdPeerThread);
    var
      sCommand: string;
    begin
      with AThread.Connection do
      begin
        sCommand := ReadLn();
        FLogEntry := sCommand + ' 来自于主机 ' + AThread.Connection.Socket.Binding.PeerIP;  {这里没有显示出来}
        AThread.Synchronize(AddLogEntry);
        if AnsiStartsText('DATA ', sCommand) then
        begin
          FReceived := RightStr(sCommand, Length(sCommand)-5);
          AThread.Synchronize(DisplayData);
          FLogEntry := '数据接收成功!' + #13 + sCommand;  {这里没有显示出来}       
          AThread.Synchronize(AddLogEntry);
        end
        else if SameText(sCommand, 'QUIT') then begin
          FLogEntry := '断开同主机 ' + AThread.Connection.Socket.Binding.PeerIP
                       + ' 的连接!'; {这里没有显示出来}
          AThread.Synchronize(AddLogEntry);
          Disconnect;
        end
        else begin
          FLogEntry := '无法识别命令:' + sCommand; {这里没有显示出来}
          AThread.Synchronize(AddLogEntry);
        end;//endif
      end;        
    end;
    //-------------------------------------------------------------------
    其中AddLogEntry方法是把FLogEntry写入到TListBox中。这样我可以看到相关通讯信息。
    请大虾们指教!!!
      

  2.   

    sCommand := CurrentReadBuffer;
      

  3.   

    谢谢qi7(奇奇号巡洋舰),已经能收到数据了。
    也谢谢vinsonshen(hoho)帮我顶:)