使用Delphi 2007访问MS Surface Pro GPS数据

使用Delphi 2007访问MS Surface Pro GPS数据,delphi,gps,Delphi,Gps,我正在用Delphi2007编程。我有一个Surface Pro平板电脑,想从传感器获取GPS数据。我知道Delphi的更高版本支持直接访问传感器。但这在2007年是不可用的 作为替代方案,我一直在尝试使用“虚拟Com端口”捕获数据。我已经安装了 使用超级终端(见下面的设置)和流行的gpsinfo.exeGPS组件嗅探工具,我能够获取数据。然而,我不能让任何Delphi应用程序工作。我已经试用过AProTApdComPort组件和TMS软件。我使用TApdComPort组件附加了项目中的一段代码

我正在用Delphi2007编程。我有一个Surface Pro平板电脑,想从传感器获取GPS数据。我知道Delphi的更高版本支持直接访问传感器。但这在2007年是不可用的

作为替代方案,我一直在尝试使用“虚拟Com端口”捕获数据。我已经安装了

使用超级终端(见下面的设置)和流行的gpsinfo.exeGPS组件嗅探工具,我能够获取数据。然而,我不能让任何Delphi应用程序工作。我已经试用过AProTApdComPort组件和TMS软件。我使用TApdComPort组件附加了项目中的一段代码。这段代码在真正的com端口应用程序中已经运行了多年。使用这两个组件,应用程序只需与comport建立连接,而不做其他事情。没有触发触发事件。应用程序就在那里

我需要做些什么来激活com端口吗

  GPSComPort                     := TApdComPort.Create(self);
  GPSComPort.baud                := 9600;
  GPSComPort.ComNumber   := 3;
  with GPSComPort do begin
    DataBits := 8;
    Parity := pNone;
    StopBits := 1;
  end;
  GPSComPort.OnTriggerAvail      := GPSComPortTriggerAvail;
  GPSComPort.OnTrigger  := TriggerAvail;

  GPSComPort.OnTriggerData  := DataTriggerAvailable;
  GPSComPort.OnTriggerLineError   := LineErrorEvent;
  GPSComPort.OnTriggerStatus   := triggerstatus;
  GPSComPort.hwflowoptions:=[hwfusedtr,hwfuserts] ;   //  Added!!!

  try
    GPSComPort.Open        := true;
  except
    on e: Exception do
      showmessage(e.message);
  end;
TApdComport组件具有流控制设置。在所有使用该组件的应用程序中,我从来没有设置过这个。有什么想法应该如何设置

THWFlowOptions = (
  hwfUseDTR,         {Use DTR for receive flow control}
  hwfUseRTS,         {Use RTS for receive flow control}
  hwfRequireDSR,     {Require DSR before transmitting}
  hwfRequireCTS);    {Require CTS before transmitting}

{For reporting flow states, note: no rcv hardware flow status is provided}
TFlowControlState = (fcOff,        {No flow control is in use}
                     fcOn,         {Transmit blocked}
                     fcDsrHold,    {Transmit blocked by low DSR}
                     fcCtsHold,    {Transmit blocked by low CTS}
                     fcDcdHold,    {Transmit blocked by low DCD}
                     fcXOutHold,   {Transmit blocked by Xoff}
                     fcXInHold,    {Receive blocked by Xoff}
                     fcXBothHold); {Both are blocked by Xoff}
超级终端设置:

使用Warren的t导入组件的设置:

comport.BaudRate :=br4800;
comport.Port := 'COM3';
comport.stopbits := StrToStopBits('1');
comport.databits := StrToDataBits('8');
comport.Parity.Bits := prNone;
comport.ControlDTR := dtrEnable;
comport.?????

您可能需要断言流控制信号,如CTS或DTR或设置流控制?听起来你可能需要和你买这个虚拟串口数据驱动程序的人谈谈。你把com端口设置和你在Hyperterm中使用的设置匹配了吗?特别是:你确定波特率吗?@dummzeuch-是的。。。尝试了一系列波特率。以及所有其他设置(例如8-N-1)。@WarrenP-我会试试这些设置。我为TApdComPort组件添加了各种流控制设置。你知道我该怎么设置吗?这对我来说是完全陌生的。你应该将流量控制设置设置为与Hyper Terminal中相同的设置。通常RTS/CTS流量控制只是终端中的一个开/关设置。超级终端是开还是关?超级终端中DTR线路的状态是什么?On(在RS232中为+12V高电平状态)或Off(在RS232中为-12V低电平状态)您也可以尝试T导入组件的my分支。我发现它们(因为我自己的长期经验)比使用AsyncPro更简单。它们确实更小、更轻,并且在出现问题时更容易进入和调试。您可能需要断言流控制信号,如CTS或DTR或设置流控制?听起来你可能需要和你买这个虚拟串口数据驱动程序的人谈谈。你把com端口设置和你在Hyperterm中使用的设置匹配了吗?特别是:你确定波特率吗?@dummzeuch-是的。。。尝试了一系列波特率。以及所有其他设置(例如8-N-1)。@WarrenP-我会试试这些设置。我为TApdComPort组件添加了各种流控制设置。你知道我该怎么设置吗?这对我来说是完全陌生的。你应该将流量控制设置设置为与Hyper Terminal中相同的设置。通常RTS/CTS流量控制只是终端中的一个开/关设置。超级终端是开还是关?超级终端中DTR线路的状态是什么?On(在RS232中为+12V高电平状态)或Off(在RS232中为-12V低电平状态)您也可以尝试T导入组件的my分支。我发现它们(因为我自己的长期经验)比使用AsyncPro更简单。它们确实更小、更轻,并且在出现问题时更容易进入和调试。