Часто задаваемые вопросы о 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();