У меня есть плата сбора данных от National Instruments, которую я использую для сбора данных с датчиков.Для этого я использую не LabVIEW, а новый Python API от NI.
Моя задача - собирать измерения в циклах по 50 мс с отклонением + -1 мс.
Что делает код:
- читает значение внутреннегосчетчик на плате (вход в счетчик - последовательность импульсов от датчика скорости вращения колеса)
- выводит значение в файл журнала
- каждые 5 минут, создается новый файл журнала (так что в случае сбоя системы будет потеряна только часть измерений)
То, что я до сих пор пробовал, это:
fileTimer = time.time() #used to count 5 minutes for the new file creation
loopTimer = time.time() #used to count 50ms
while(1):
if((time.time()-loopTimer)>=0.05):
Print(task.read())
#reinitialize loop timer
loopTimer = time.time()
if((time.time()-fileTimer)>=5*60):
print "NEW FILE CREATED"
fileTimer = time.time()
newFileName = "something"
#set the flag to TRUE to open the new file
Print.next = True
Результаты, которые я получаю, являютсянемного хуже, чем принято ... На самом деле, я получаю 55 мс за один цикл.
Я читал об опциях, использующих многопоточность, один поток для чтения данных, чтобы убедиться, что считывания выполняются ровно в 50мс циклов;и одна ветка для постобработки.
Любые предложения по реализации приветствуются, и я заранее благодарен.