FAQ TWedge
如何在不使用 StartListen 的情况下循环读取数据?
如何在不使用 StartListen 的情况下循环读取数据?
假设您想从两个脚本访问某个特定的 COM 端口,但该端口一次只能被一个脚本打开。因此,您不能使用 StartListen(),因为只要脚本(数据采集)处于活动状态,该函数就会一直占用该端口。
下面展示了如何打开端口、读取数据,然后关闭端口,以便另一个脚本可以访问它。
hConn2.Open(funcOnConnectionLost2);
var arr2Data = null;
retries2 = 60; // wait maximum 1 minute for data (60 * 1000 ms)
while (retries2-- > 0)
{
try
{
Print ("Waiting for data from " + hConn2.Port);
var currData = hConn2.ReadData(100, 1000); // try to read max 100 Bytes in 1 sec
if (arr2Data == null)
arr2Data = currData; // first data packet
else
arr2Data.concat(currData); // subsequent data packet -> append
}
catch (err)
{
// stop when we have data already (no data packet after successful read)
if (arr2Data != null)
break;
}
}
processData2 (arr2Data);
if (hConn2.IsOpen)
closeConnection2();