NI Masters new firmware v.2.32.148
Yuriy
Posts: 20
in AMX Hardware
New Features:
"Added Timeline loop count in Interpreter to handle consecutive zero length timeline events."
Explain what benefit from it?
What means in syslog "Timeline Loopcnt = 10"?
On what this parameter influences?
"Added Timeline loop count in Interpreter to handle consecutive zero length timeline events."
Explain what benefit from it?
What means in syslog "Timeline Loopcnt = 10"?
On what this parameter influences?
0
Comments
This fix was accomplished by having the master check for new input at each 0 time of a timeline, i.e. when the timeline event is supposed to fire.
Soon after we released the firmware with this fix we found that if a program has a lot of timelines firing about the same time, all this checking for new input will cause another lockup problem.
So in the v3.12.332 and v1.32.148 firmware the "0 timeline new input check" only checks for new input each 10th time, and you can adjust this with a terminal/telnet command.
I had problems with controllers NI-X000 with the firmware below v.2.32.138.
They sometimes lockup. I have traced, that lockup always occured at the moment of execution of a timeline. My programs a maximum two timelines execution simultaneously usually have. One for a feedback with panels, another for execution macros (switch on proj, turn on receiver, select input etc.) The timeline for a feedback is execution constantly with an interval of 0,5 second. The timeline for a macros is started from button event. In time execution of this line the controller sometimes lockup. I have rewrite a code with use of the nested waits and all perfectly works. But I like timelines for code more convenient for programming. I used the version of firmware v.2.32.138 and have found out, that problems have remained.
Now I shall test the new firmware and very much I hope that all will be good!
If you you don't want to make your timeline time longer, you might want to try using TIMELINE.REPETITION with a repeating timeline:
TIMELINE_EVENT[1]
{
SWITCH (TIMELINE.REPETITION)
{
CASE 1:
{
}
CASE 2:
{
}
CASE 3:
{
}
}
}
TIMELINE_EVENT[tlSourceSelect]
{
IF (TIMELINE.Repetition < 9)
SEND_LEVEL dvCP,1,nLevelVals[TIMELINE.Repetition + 1]
SWITCH (TIMELINE.Repetition + 1)
{
CASE 1:
{
SEND_COMMAND vdvKRAMER, "'PASSTHRU=L 48B7',$0D"
SEND_COMMAND dvRES, "'SP',RES_PWR_ON"
ON[dvRES,RES_VOL_DN]
}
CASE 2:
{
SEND_COMMAND vdvKRAMER, "'INPUT=',ITOA(nKramerInput)"
IF (nSource < SRS_CD)
SEND_COMMAND vdvScreen, "'SCREEN=1'"
ELSE
SEND_COMMAND vdvScreen, "'SCREEN=0'"
}
CASE 3:
{
OFF[dvRES,RES_VOL_DN]
SWITCH (nSource)
{
CASE SRS_DVD:
SEND_COMMAND dvRES, "'SP',RES_DVD"
CASE SRS_DSS:
SEND_COMMAND dvRES, "'SP',RES_DTV_CBL"
CASE SRS_VCR:
SEND_COMMAND dvRES, "'SP',RES_VCR1"
CASE SRS_CD:
SEND_COMMAND dvRES, "'SP',RES_DVD"
CASE SRS_TUN:
SEND_COMMAND dvRES, "'SP',RES_TUN"
}
}
CASE 4:
{
IF (nSource = SRS_VCR)
SEND_COMMAND dvVCR, "'SP',VCR_CH1"
}
CASE 5:
{
IF (nSource < SRS_CD)
SEND_COMMAND vdvLIFT, "'SCREEN=1'"
ELSE
SEND_COMMAND vdvLIFT, "'SCREEN=0'"
SEND_COMMAND dvRES, "'SP',RES_STEREO"
}
CASE 8:
{
SEND_COMMAND vdvKRAMER, "'INPUT=',ITOA(nKramerInput)"
}
CASE 10:
{
SEND_COMMAND vdvPROJ, "'STATUS?'"
SEND_COMMAND dvCP,"'@PPK-SourceSelectWait'"
SEND_COMMAND dvCP,"'PAGE-',cJumpPage"
OFF[nSelectMacros]
IF (TIMELINE_ACTIVE(tlSourceSelect))
TIMELINE_KILL(tlSourceSelect)
}
}
}