使用Delphi 2007访问MS Surface Pro GPS数据
我正在用Delphi2007编程。我有一个Surface Pro平板电脑,想从传感器获取GPS数据。我知道Delphi的更高版本支持直接访问传感器。但这在2007年是不可用的 作为替代方案,我一直在尝试使用“虚拟Com端口”捕获数据。我已经安装了 使用超级终端(见下面的设置)和流行的gpsinfo.exeGPS组件嗅探工具,我能够获取数据。然而,我不能让任何Delphi应用程序工作。我已经试用过AProTApdComPort组件和TMS软件。我使用TApdComPort组件附加了项目中的一段代码。这段代码在真正的com端口应用程序中已经运行了多年。使用这两个组件,应用程序只需与comport建立连接,而不做其他事情。没有触发触发事件。应用程序就在那里 我需要做些什么来激活com端口吗使用Delphi 2007访问MS Surface Pro GPS数据,delphi,gps,Delphi,Gps,我正在用Delphi2007编程。我有一个Surface Pro平板电脑,想从传感器获取GPS数据。我知道Delphi的更高版本支持直接访问传感器。但这在2007年是不可用的 作为替代方案,我一直在尝试使用“虚拟Com端口”捕获数据。我已经安装了 使用超级终端(见下面的设置)和流行的gpsinfo.exeGPS组件嗅探工具,我能够获取数据。然而,我不能让任何Delphi应用程序工作。我已经试用过AProTApdComPort组件和TMS软件。我使用TApdComPort组件附加了项目中的一段代码
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更简单。它们确实更小、更轻,并且在出现问题时更容易进入和调试。