Duet Module Warming State didn't goes Off
Raphayo
Junior Member
Hi all,
i'm currently working on a project and i'm having a strange issue.
I'm currently using channel_event[vdvDisplay,Warming] to know when the warming state switch from ON/OFF. at the same time i have enable counternofity-1 to know when warming-xx reach 0 and the warming state stay active. I didn't have this issue with the cooling state. any one have a clue for me.
Here's the part of the Data_event for my virtual device
Here's the part of the channel event
i have commented some line during my test to understand why it doesn't work.
Thanks folk for your help.
i'm currently working on a project and i'm having a strange issue.
I'm currently using channel_event[vdvDisplay,Warming] to know when the warming state switch from ON/OFF. at the same time i have enable counternofity-1 to know when warming-xx reach 0 and the warming state stay active. I didn't have this issue with the cooling state. any one have a clue for me.
Here's the part of the Data_event for my virtual device
COMMAND:
{
// local variables
STACK_VAR CHAR cCmd[DUET_MAX_CMD_LEN]
STACK_VAR CHAR cHeader[DUET_MAX_HDR_LEN]
STACK_VAR CHAR cParameter[DUET_MAX_PARAM_LEN]
STACK_VAR INTEGER nParameter
//STACK_VAR CHAR cTrash[20]
cCmd = DATA.TEXT
send_string 0,data.text
cHeader = DuetParseCmdHeader(cCmd)
switch(cHeader)
{
CASE 'COOLDOWN':
{
TDisplay.ncoolingtime = atoi(DuetParseCmdParam(cCmd))
//fnSendCommand(dvTPMain,"'^BMF-1,0,%GH',itoa(TDisplay.ncoolingtime),'%GL0'") // Set level range of TP
}
CASE 'WARMUP':
{
TDisplay.nwarmingtime = atoi(DuetParseCmdParam(cCmd))
//fnSendCommand(dvTPMain,"'^BMF-2,0,%GH',itoa(TDisplay.nwarmingtime),'%GL0'") // Set Level range of TP
}
CASE 'COOLING':
{
nParameter = atoi(DuetParseCmdParam(cCmd))
if(nParameter=False) TDisplay.ncooling=false else TDisplay.ncooling=true
TDisplay.nwaitingtimer = nParameter*255/TDisplay.ncoolingtime
fnSendLevel(dvTPMain,display_waitlvl,TDisplay.nwaitingtimer)
}
CASE 'WARMING':
{
nParameter = atoi(DuetParseCmdParam(cCmd))
if(nParameter=False)
{
TDisplay.nwarming=false
//fnSendCommand(vdvDisplay,'INPUTSELECT-6')
}
else
{
TDisplay.nwarming=true
}
TDisplay.nwaitingtimer = nParameter*255/TDisplay.nwarmingtime
fnSendLevel(dvTPMain,display_waitlvl,TDisplay.nwaitingtimer)
}
CASE 'INPUTSELECT':
{
nParameter = atoi(DuetParseCmdParam(cCmd))
TDisplay.ninput = nParameter
}
}
}
}
Here's the part of the channel event
channel_event[vdvDisplay,display_cooling] // Display Cooling
{
on:
{
//TDisplay.ncooling=true
fnSendString(0,'Display Cooling')
}
off:
{
//TDisplay.ncooling=false
fnSendString(0,'Display Cooling Complete')
}
}
channel_event[vdvDisplay,display_warming] // Display Warming
{
on:
{
//TDisplay.nwarming=true
fnSendString(0,'Display Warming')
}
off:
{
//Tdisplay.nwarming=false
//send_command vdvDisplay,'INPUTSELECT-6'
fnSendString(0,'Display Warming Complete')
}
}
i have commented some line during my test to understand why it doesn't work.
Thanks folk for your help.
Comments
-
When connected to the system, please telnet in and issue a
device status <display's duet virtual dev number>:1
What do you get back in terms of the feedback channels? Is 253 (SNAPI warming) going OFF or staying on? If telnet shows that it is going OFF, then it is netlinx code related. If it never goes off, then it is pointing towards a module problem.
To test your code, can you emulate the channel event through studio? If so, does that fire your send_string 0? -
What do you mean by telnet?
can I telnet the processor yo get the state of a vdevice?
I was only using emulate/control in studio
to troubleshoot.
if I reinit the module when the warming countdown is complete, everything goes fine.
right now I'm using the duet module of an NEC np600 projector because it's the device I have with me. -
Yes, you can telnet into the Netlinx Controller and query it for status of a device. This will tell you a number of bits of info. Here is a sample from a touchpanel on my desk:
Welcome to NetLinx v4.1.373 Copyright AMX LLC 2012 >device status 10005:1 Device Status ------------- Device 10005 AMX LLC,MXT-700i,v2.104.54 contains 3 Ports. Port 1 - Channels:255 Levels:8 MaxStringLen=1024 Types=8 bit MaxCommandLen=1024 Types=8 bit The following input channels are on:None The following output channels are on:None The following feedback channels are on:None Level 1=0 Supported data types=UByte,UInt Level 2=0 Supported data types=UByte,UInt Level 3=0 Supported data types=UByte,UInt Level 4=0 Supported data types=UByte,UInt Level 5=0 Supported data types=UByte,UInt Level 6=0 Supported data types=UByte,UInt Level 7=0 Supported data types=UByte,UInt Level 8=0 Supported data types=UByte,UInt -
great I will try that.
can i do the same thing with the web application in the processor under diagnostics ? -
i have create a basic program with only the vdevice and I have the same issue when warming up
PROGRAM_NAME='test' (***********************************************************) (***********************************************************) (* FILE_LAST_MODIFIED_ON: 04/05/2006 AT: 09:00:25 *) (***********************************************************) (* System Type : NetLinx *) (***********************************************************) (* REV HISTORY: *) (***********************************************************) (* $History: $ *) include 'SNAPI.axi' (***********************************************************) (* DEVICE NUMBER DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_DEVICE dvCom1 = 5001:1:0 // ComPort A (*** Virtual Device Duet Module ***) vdvDisplay = 41001:1:0 (***********************************************************) (* CONSTANT DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_CONSTANT TRUE = 1 FALSE = 0 DISPLAY_WARMING = 253 DISPLAY_COOLING = 254 DISPLAY_POWER = 255 DISPLAY_ONLINE = 251 DISPLAY_READY = 252 // Initialized DISPLAY_ON = 27 DISPLAY_OFF = 28 DISPLAY_HDMI = 6 //InputSelect Value (***********************************************************) (* DATA TYPE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_TYPE structure _DeviceState // Device State variable { integer ninitialize // Initialize State integer nonline // Online State integer npower // Power State integer nwarming // Warming State integer ncooling // Cooling State integer nwarmingtime // Warming Time Value integer ncoolingtime // Cooling time Value integer nwaitingtimer // Timer value during warming || cooling state integer nready // Ready to operate state integer nInput // Actual Input Selected integer nInputreq // Requested Input } (***********************************************************) (* VARIABLE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_VARIABLE _DeviceState TDisplay // Display Device State (***********************************************************) (* LATCHING DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_LATCHING (***********************************************************) (* MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_MUTUALLY_EXCLUSIVE (***********************************************************) (* SUBROUTINE/FUNCTION DEFINITIONS GO BELOW *) (***********************************************************) Define_Function fnSendString(Dev Device, Char Cmd[]) // Send String to a Device { Send_String Device, Cmd; } (***********************************************************) (* STARTUP CODE GOES BELOW *) (***********************************************************) DEFINE_START DEFINE_MODULE 'NEC_NP610_Comm_dr1_0_0' comm1(vdvDisplay, dvCom1) (***********************************************************) (* THE EVENTS GO BELOW *) (***********************************************************) DEFINE_EVENT DATA_EVENT[vdvDisplay] { ONLINE: { SEND_COMMAND vdvDisplay,'Baud_Rate,19200' SEND_COMMAND vdvDisplay,'PROPERTY-Poll_Time,5000' SEND_COMMAND vdvDisplay,'REINIT' SEND_COMMAND vdvDisplay,'COUNTERNOTIFY-1' SEND_COMMAND vdvDisplay,'?COOLDOWN' SEND_COMMAND vdvDisplay,'?WARMUP' } STRING: { send_string 0,"vdvDisplay.NUMBER,' String: ',data.text" } COMMAND: { // local variables STACK_VAR CHAR cCmd[DUET_MAX_CMD_LEN] STACK_VAR CHAR cHeader[DUET_MAX_HDR_LEN] STACK_VAR CHAR cParameter[DUET_MAX_PARAM_LEN] STACK_VAR INTEGER nParameter //STACK_VAR CHAR cTrash[20] cCmd = DATA.TEXT send_string 0,data.text cHeader = DuetParseCmdHeader(cCmd) switch(cHeader) { CASE 'COOLDOWN': { TDisplay.ncoolingtime = atoi(DuetParseCmdParam(cCmd)) //fnSendCommand(dvTPMain,"'^BMF-1,0,%GH',itoa(TDisplay.ncoolingtime),'%GL0'") // Set level range of TP } CASE 'WARMUP': { TDisplay.nwarmingtime = atoi(DuetParseCmdParam(cCmd)) //fnSendCommand(dvTPMain,"'^BMF-2,0,%GH',itoa(TDisplay.nwarmingtime),'%GL0'") // Set Level range of TP } CASE 'COOLING': { nParameter = atoi(DuetParseCmdParam(cCmd)) //if(nParameter=False) TDisplay.ncooling=false else TDisplay.ncooling=true TDisplay.nwaitingtimer = nParameter//*255/TDisplay.ncoolingtime //fnSendLevel(dvTPMain,display_waitlvl,TDisplay.nwaitingtimer) } CASE 'WARMING': { nParameter = atoi(DuetParseCmdParam(cCmd)) TDisplay.nwaitingtimer = nParameter//*255/TDisplay.nwarmingtime //fnSendLevel(dvTPMain,display_waitlvl,TDisplay.nwaitingtimer) } CASE 'INPUTSELECT': { nParameter = atoi(DuetParseCmdParam(cCmd)) TDisplay.ninput = nParameter } } } } channel_event[vdvDisplay,display_cooling] // Display Cooling { on: { TDisplay.ncooling=true fnSendString(0,'Display Cooling') } off: { TDisplay.ncooling=false fnSendString(0,'Display Cooling Complete') } } channel_event[vdvDisplay,display_warming] // Display Warming { on: { TDisplay.nwarming=true fnSendString(0,'Display Warming') } off: { Tdisplay.nwarming=false //send_command vdvDisplay,'INPUTSELECT-6' fnSendString(0,'Display Warming Complete') } } channel_event[vdvDisplay,display_ready] // display Initialized State { on: { TDisplay.ninitialize=true } off: { TDisplay.ninitialize=false } } channel_event[vdvDisplay,display_online] // display Online State { on: { TDisplay.nonline=true } off: { TDisplay.nonline=false } } channel_event[vdvDisplay,display_power] // Display Power State { on: { TDisplay.npower=true } off: { TDisplay.npower=false } } (***********************************************************) (* THE ACTUAL PROGRAM GOES BELOW *) (***********************************************************) DEFINE_PROGRAM (***********************************************************) (* END OF PROGRAM *) (* DO NOT PUT ANY CODE BELOW THIS COMMENT *) (***********************************************************)
i copy what i have monitor with mange system web browser<![CDATA[09/24/2014 14:16:06.083 FEEDBACK OFF[41001:1:1,252]]]> <![CDATA[09/24/2014 14:16:06.084 OFF[41001:1:1,252]]]> <![CDATA[09/24/2014 14:16:06.094 FEEDBACK OFF[41001:1:1,251]]]> <![CDATA[09/24/2014 14:16:06.094 OFF[41001:1:1,251]]]> <![CDATA[09/24/2014 14:16:06.428 FEEDBACK ON[41001:1:1,251]]]> <![CDATA[09/24/2014 14:16:06.428 ON[41001:1:1,251]]]> <![CDATA[09/24/2014 14:16:06.429 FEEDBACK ON[41001:1:1,252]]]> <![CDATA[09/24/2014 14:16:06.429 ON[41001:1:1,252]]]> <![CDATA[09/24/2014 14:16:06.474 FEEDBACK OFF[41001:1:1,255]]]> <![CDATA[09/24/2014 14:16:06.474 OFF[41001:1:1,255]]]> <![CDATA[09/24/2014 14:16:06.476 FEEDBACK OFF[41001:1:1,253]]]> <![CDATA[09/24/2014 14:16:06.476 OFF[41001:1:1,253]]]> <![CDATA[09/24/2014 14:16:06.674 FEEDBACK ON[41001:1:1,255]]]> <![CDATA[09/24/2014 14:16:06.674 ON[41001:1:1,255]]]> <![CDATA[09/24/2014 14:16:27.418 FEEDBACK ON[41001:1:1,254]]]> <![CDATA[09/24/2014 14:16:27.418 ON[41001:1:1,254]]]> <![CDATA[09/24/2014 14:17:58.071 FEEDBACK OFF[41001:1:1,255]]]> <![CDATA[09/24/2014 14:17:58.071 OFF[41001:1:1,255]]]> <![CDATA[09/24/2014 14:17:58.072 FEEDBACK OFF[41001:1:1,254]]]> <![CDATA[09/24/2014 14:17:58.072 OFF[41001:1:1,254]]]> <![CDATA[09/24/2014 14:22:12.722 FEEDBACK ON[41001:1:1,253]]]> <![CDATA[09/24/2014 14:22:12.722 ON[41001:1:1,253]]]> <![CDATA[09/24/2014 14:22:12.723 FEEDBACK ON[41001:1:1,255]]]> <![CDATA[09/24/2014 14:22:12.723 ON[41001:1:1,255]]]>
-
Here's the last Diagnostics, you could see at 15:11:20.939 i have to sent reinit to be able to reuse the module. sometime the warming is operating correctly. i'm using NEC_NP610_Comm_dr1_0_0.jar is there a chance there's something wrong with this module?
<![CDATA[09/24/2014 15:05:01.058 FEEDBACK ON[41001:1:1,253]]]> <![CDATA[09/24/2014 15:05:01.058 ON[41001:1:1,253]]]> <![CDATA[09/24/2014 15:05:01.059 FEEDBACK ON[41001:1:1,255]]]> <![CDATA[09/24/2014 15:05:01.059 ON[41001:1:1,255]]]> <![CDATA[09/24/2014 15:06:32.920 FEEDBACK OFF[41001:1:1,253]]]> <![CDATA[09/24/2014 15:06:32.920 OFF[41001:1:1,253]]]> <![CDATA[09/24/2014 15:07:28.609 FEEDBACK ON[41001:1:1,254]]]> <![CDATA[09/24/2014 15:07:28.609 ON[41001:1:1,254]]]> <![CDATA[09/24/2014 15:09:00.423 FEEDBACK OFF[41001:1:1,255]]]> <![CDATA[09/24/2014 15:09:00.423 OFF[41001:1:1,255]]]> <![CDATA[09/24/2014 15:09:00.423 FEEDBACK OFF[41001:1:1,254]]]> <![CDATA[09/24/2014 15:09:00.423 OFF[41001:1:1,254]]]> <![CDATA[09/24/2014 15:09:15.104 FEEDBACK ON[41001:1:1,253]]]> <![CDATA[09/24/2014 15:09:15.105 ON[41001:1:1,253]]]> <![CDATA[09/24/2014 15:09:15.105 FEEDBACK ON[41001:1:1,255]]]> <![CDATA[09/24/2014 15:09:15.105 ON[41001:1:1,255]]]> <![CDATA[09/24/2014 15:11:20.939 SEND COMMAND[41001:1:1] Type=CHAR Length=6 'REINIT']]> <![CDATA[09/24/2014 15:11:20.948 FEEDBACK OFF[41001:1:1,252]]]> <![CDATA[09/24/2014 15:11:20.948 OFF[41001:1:1,252]]]> <![CDATA[09/24/2014 15:11:20.960 FEEDBACK OFF[41001:1:1,251]]]> <![CDATA[09/24/2014 15:11:20.960 OFF[41001:1:1,251]]]> <![CDATA[09/24/2014 15:11:21.293 FEEDBACK ON[41001:1:1,251]]]> <![CDATA[09/24/2014 15:11:21.294 ON[41001:1:1,251]]]> <![CDATA[09/24/2014 15:11:21.295 FEEDBACK ON[41001:1:1,252]]]> <![CDATA[09/24/2014 15:11:21.295 ON[41001:1:1,252]]]> <![CDATA[09/24/2014 15:11:21.343 FEEDBACK OFF[41001:1:1,255]]]> <![CDATA[09/24/2014 15:11:21.343 OFF[41001:1:1,255]]]> <![CDATA[09/24/2014 15:11:21.345 FEEDBACK OFF[41001:1:1,253]]]> <![CDATA[09/24/2014 15:11:21.345 OFF[41001:1:1,253]]]> <![CDATA[09/24/2014 15:11:21.540 FEEDBACK ON[41001:1:1,255]]]> <![CDATA[09/24/2014 15:11:21.540 ON[41001:1:1,255]]]>
-
Is the display a NP610, or is it a close match that seems to work?
-
it's np510 who is the same series has the np610
-
Thank you for clarifying. My suggestion would be to open a technical support ticket at this point. In the past, we would receive one physical model in a "family" and write/test against that. Occasionally, there are quirks about individual models that are not visible in the protocol document, and because the physical device wasn't sent in, we are unaware of the issue. Moving forward, most display manufacturers are now creating their own AMX drivers and we no longer allow a driver for a "family" -- it is one driver per model. This allows us to easily target variations that occur in models. This module was created in 2010 and did not benefit from the current methods.
My guess is that given the mixed results you are receiving, it could be a problem with the module not understanding the response from the device. If you telnet into the processor again, you can do the following to try and further diagnose the issue on your own:msg on send c <duet virtual dev number>, 'DEBUG-4'
and observe the parsing of responses and how/if/why it is breaking down. -
I have done few test and increase the warming delay time to 120 and the module work perfectly. but if i bring it to 90 sec. It's looking to be goin into a loop somewhere waiting for a response who is never asked again.
if i passthru the command send after the countdown is complete the projector response me and the warming state going away. -
I have done few test and increase the warming delay time to 120 and the module work perfectly. but if i bring it to 90 sec. It's looking to be goin into a loop somewhere waiting for a response who is never asked again.
if i passthru the command send after the countdown is complete the projector response me and the warming state going away.
Good AM Raphael,
Try using 91; it is probably a logic error...
90 is the min value.
Let me know if this works. -
no success. i was hoping the module retrig the command send after the warming process ended but it look is not.
-
I'll bet the module is not querying the device and is simply using a wait or timeline to trigger the Warm/Cool State.
Control is IP or RS232?
If RS232 monitor the strings to and from the projector to see if it is actually using feedback.
If IP, use WireShark...
If they are faking the feedback; it could still be a logic issue.
Doesn't help if it is a logic module, but you could create your on Fake feedback to handle this.
Or create your own module... a bit of work. -
i find by sending
Send_Command vdvDevice,"'PASSTHRU-',$00,$85,$00,$00,$01,$01,$87"
i take control back of the module.
i would probably using that alternative with a timeline after the countdown is finnish and kill this timeline when the warming state will goes low.
the magic of writing code -
Yep, sometimes there are too many workarounds for code that we cannot modify.
Are you doing a lot of AMX in Montreal?
It seems most of the new jobs in Calgary are Cre$tron.
Shell is moving everything to Cre$tron over the next 2 years.
I have to go back out to TO in Oct/Nov to do Cre$tron P201. -
I'm doing somme we pushed both of control system. i recently complète my AMX certification but I'm still learning and develop my skill.
-
I still do not have certification.
Completed PII, and submitted the Project for "marking" and have not heard back...
Did you do PIII? -
no I have completed the practical exam for PII, If I'm correct there no more P3
Categories
- All Categories
- 2.5K AMX General Discussion
- 922 AMX Technical Discussion
- 514 AMX Hardware
- 502 AMX Control Products
- 3 AMX Video Distribution Products
- 9 AMX Networked AV (SVSI) Products
- AMX Workspace & Collaboration Products
- 3.4K AMX Software
- 151 AMX Resource Management Suite Software
- 386 AMX Design Tools
- 2.4K NetLinx Studio
- 135 Duet/Cafe Duet
- 248 NetLinx Modules & Duet Modules
- 57 AMX RPM Forum
- 228 MODPEDIA - The Public Repository of Modules for Everyone
- 943 AMX Specialty Forums
- 2.6K AMXForums Archive
- 2.6K AMXForums Archive Threads
- 1.5K AMX Hardware
- 432 AMX Applications and Solutions
- 249 Residential Forum
- 182 Tips and Tricks
- 146 AMX Website/Forums