我正在使用Delphi 2007编程。我有一台Surface Pro平板电脑,想要从传感器访问GPS数据。据我所知,后来的Delphi版本支持直接访问传感器。但这在2007年没有。
作为替代方案,我一直在尝试使用" Virtual Com Port"来捕获数据。我已经安装了this reverse gps driver from turboirc.com。
使用超级终端(参见下面的设置)和流行的 gpsinfo.exe GPS comport嗅探工具,我可以获取数据。但是我无法使用任何Delphi应用程序。我尝试过APro TApdComPort 组件和TMS软件TMS Aysnc。我使用 TApdComPort 组件从我的项目中附加了一段代码。这段相同的代码已经使用了多年真正的com端口应用程序。使用这两个组件,应用程序只需连接到comport,而不执行任何其他操作。没有 TriggerAvail 事件触发。应用程序就在那里。
我是否需要做些什么来激活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 组件具有Flow Control的设置。在过去使用此组件的所有应用程序中,我从未设置过此项。任何想法应该如何设置?
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的 TComPort 组件进行设置:
comport.BaudRate :=br4800;
comport.Port := 'COM3';
comport.stopbits := StrToStopBits('1');
comport.databits := StrToDataBits('8');
comport.Parity.Bits := prNone;
comport.ControlDTR := dtrEnable;
comport.?????