Python - временной цикл PyDAQmx - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть плата сбора данных от 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мс циклов;и одна ветка для постобработки.

Любые предложения по реализации приветствуются, и я заранее благодарен.

...