Netlinx Crash when try Using Debugging
Hi All,
recently, when i try the debugging function
if i want to add a variables from list. the application is crashing.
someone else having this problem.
recently, when i try the debugging function
if i want to add a variables from list. the application is crashing.
someone else having this problem.
Comments
any clue on that.
it can came from the way variable are use inside the module.
thanks
Please post your code around the module declaration (DEFINE_MODULE .....)
Perhaps it's just a little error there.
Module_NAME='LgMonitorModule' (DEV dvport, DEV dvtp, integer nButton[]) (***********************************************************) (***********************************************************) (* FILE_LAST_MODIFIED_ON: 04/05/2006 AT: 09:00:25 *) (***********************************************************) (* System Type : NetLinx *) (***********************************************************) (* REV HISTORY: *) (***********************************************************) (* BUTTON AND TEXT BOX DEFINITIONS 1- ATV Input 2- AV1 Input 3- AV2 input 4- Component input 5- VGA input 6- HDMI1 Input 7- HDMI2 Input 20 Power Off 21 Power On 23 Mute On 30 Volume up 31 Volume down 84 85 Online/Offline END OF BUTTON AND TEXT BOX DEFINITIONS*) (* START OF LEVEL DEFINITIONS 86 Volume Level End OF LEVEL DEFINITIONS*) (* $History: $ *) (***********************************************************) (* DEVICE NUMBER DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_DEVICE (***********************************************************) (* CONSTANT DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_CONSTANT Integer False = 0 Integer True = 1 //TLLG = 6 // TimeLine for LG Monitor1 Polling CHAR LG_Power_ON[]={'k','a',$20,'0','1',$20,'0','1',$0d} // On CHAR LG_Power_OFF[]={'k','a',$20,'0','1',$20,'0','0',$0d} // Off CHAR LG_Power_Get[] = {'k','a',$20,'0','1',$20,'F','F',$0d} // Get CHAR LG_DTV1[] = {'x','b',$20,'0','1',$20,'0','0',$0d} // DTV1 CHAR LG_DTV2[] = {'x','b',$20,'0','1',$20,'0','1',$0d} // DTV2 CHAR LG_ATV1[] = {'x','b',$20,'0','1',$20,'1','0',$0d} // ATV1 CHAR LG_ATV2[] = {'x','b',$20,'0','1',$20,'1','1',$0d} // ATV2 CHAR LG_AV1[] = {'x','b',$20,'0','1',$20,'2','0',$0d} // AV1 CHAR LG_AV2[] = {'x','b',$20,'0','1',$20,'2','1',$0d} // AV2 CHAR LG_AV3[] = {'x','b',$20,'0','1',$20,'4','0',$0d} // Component1 CHAR LG_AV4[] = {'x','b',$20,'0','1',$20,'4','1',$0d} // Component2 CHAR LG_RGB[] = {'x','b',$20,'0','1',$20,'6','0',$0d} // RGB CHAR LG_HD1[] = {'x','b',$20,'0','1',$20,'9','0',$0d} // HDMI 1 CHAR LG_HD2[] = {'x','b',$20,'0','1',$20,'9','1',$0d} // HDMI 2 CHAR LG_HD3[] = {'x','b',$20,'0','1',$20,'9','2',$0d} // HDMI 3 CHAR LG_Source_Get[] = {'x','b',$20,'0','1',$20,'F','F',$0d} //Get Input CHAR LG_Volume_Get[] = {'k','f',$20,'0','1',$20,'F','F',$0d} //Get Volume CHAR LG_Volume_On[] = {'k','e',$20,'0','1',$20,'0','1',$0d} //Mute Off CHAR LG_Volume_Off[] = {'k','e',$20,'0','1',$20,'0','0',$0d} //Mute On CHAR LG_Mute_Get[] = {'k','e',$20,'0','1',$20,'F','F',$0d} //Mute Get Integer nLG_Warmdly = 100 // 10 Sec. Integer nLG_ReadyOff = 150 // 15 Sec. Integer nLG_Cooldly = 150 // 15 Sec. Integer nLG_Cmd = 30 // 3 Sec. (***********************************************************) (* DATA TYPE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_TYPE (***********************************************************) (* VARIABLE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_VARIABLE volatile integer nSelection = 0 // Last Button Press volatile integer DebugLgMonitorModule = 0 //LONG TLLGMonitorTime[4]={2000,2000,2000,2000} volatile integer nLGLock = 0 //LGNotReady volatile integer nLGOffreq = 0 //LG Power Off Request volatile integer nLGOnreq = 0 //LG Power On Request volatile integer nLGDly = 0 //LG Delay volatile integer nLGOn = 0 //LG power state volatile integer nLGOff = 1 //LG Power state volatile integer nLGReady = 1 //LG is ready volatile integer nLGWarm = 0 //LG Warming volatile integer nLGCool = 0 //LG Cooling volatile integer nLGr2Off = 0 //LG Ready to Off volatile integer nLGr2On = 0 //LG Ready to On volatile integer nLGBusy = 0 //LG is Fully Busy volatile integer nLGSequence = 1 //LG Command Sequence 1: Power, 2: Source, 3: Volume volatile integer nLGPowerFb = 0 //LGMonitor Power Feedback volatile integer nLGSourceFb = 0 //LGMonitor Source Feedback volatile integer nLGVolumeFb = 0 //LGMonitor Volume Feedback volatile integer nLGMuteFb = 0 //LGMonitor Mute Feedback (***********************************************************) (* LATCHING DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_LATCHING (***********************************************************) (* MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_MUTUALLY_EXCLUSIVE (nLGOnreq,nLGOffreq) // One or the other not the both of them should be request (***********************************************************) (* SUBROUTINE/FUNCTION DEFINITIONS GO BELOW *) (***********************************************************) (* EXAMPLE: DEFINE_FUNCTION <RETURN_TYPE> <NAME> (<PARAMETERS>) *) (* EXAMPLE: DEFINE_CALL '<NAME>' (<PARAMETERS>) *) DEFINE_FUNCTION fnCLEAR_INPUT() { STACK_VAR INTEGER i for(i=1;i<=7;i++) { OFF[dvport,nBUTTON[i]] } } DEFINE_CALL 'LGPower' (nLGPower)// Power Selection { IF(!nLGDly) { SWITCH (nLGPower) { CASE 1: { ON[nLGDly] ON[nLGLock] WAIT nLG_Warmdly off[nLGdly] WAIT nLG_ReadyOff off[nLGLock] on[nLGOn] on[nLGOnreq] // nLGSequence = 1 send_string dvport,LG_Power_ON } DEFAULT: { ON[nLGDly] ON[nLGLock] wAIT nLG_Cooldly off[nLGdly] WAIT nLG_cooldly OFF[nLGLock] // nLGSequence = 1 SEND_STRING dvport,LG_Power_OFF off[nLGOn] on[nLGOffreq] } } } } DEFINE_CALL 'LGInput' (Integer nLGInput) // Input Selection { IF(!nLGDly) { SWITCH (nLGPowerFb) { CASE 1: { ON[nLGDly] WAIT nLG_Cmd OFF[nLGDly] // nLGSequence = 2 select { active(nLGInput=10): SEND_STRING dvport,LG_ATV1 active(nLGInput=20): SEND_STRING dvport,LG_AV1 active(nLGInput=21): SEND_STRING dvport,LG_AV2 active(nLGInput=40): SEND_STRING dvport,LG_AV3 active(nLGInput=60): SEND_STRING dvport,LG_RGB active(nLGInput=90): SEND_STRING dvport,LG_HD1 active(nLGInput=91): SEND_STRING dvport,LG_HD2 } } DEFAULT: { ON[nLGDly] ON[nLGLock] WAIT nLG_Warmdly off[nLGdly] WAIT nLG_ReadyOff off[nLGLock] on[nLGOn] on[nLGOnreq] // nLGSequence = 1 send_string dvport,LG_Power_ON WAIT_UNTIL (!nLGdly) { // nLGSequence = 2 if(DebugLgMonitorModule) send_string 0,"'dvLG Input Select:',itoa(nLGInput)" select { active(nLGInput=10): SEND_STRING dvport,LG_ATV1 active(nLGInput=20): SEND_STRING dvport,LG_AV1 active(nLGInput=21): SEND_STRING dvport,LG_AV2 active(nLGInput=40): SEND_STRING dvport,LG_AV3 active(nLGInput=60): SEND_STRING dvport,LG_RGB active(nLGInput=90): SEND_STRING dvport,LG_HD1 active(nLGInput=91): SEND_STRING dvport,LG_HD2 } } } } } } DEFINE_CALL 'LGVolume' (integer nLGValue) // Volume Control { IF(nLGPowerFb) { //ON[nLGDly] //WAIT nLG_Cmd OFF[nLGDly] // nLGSequence = 3 SEND_STRING dvport,"'kf',$20,'01',$20,format('%02X',nLGValue),$0d" if(DebugLgMonitorModule) SEND_STRING 0,"'kf',$20,'01',$20,format('%02X',nLGValue),$0d" } } DEFINE_CALL 'LGMute' (nLGMute)// Mute Selection { IF(nLGPowerFb) { // nLGSequence = 3 SWITCH (nLGMute) { CASE 1: { send_string dvport,LG_Volume_On } DEFAULT: { SEND_STRING dvport,LG_Volume_Off } } } } (***********************************************************) (* STARTUP CODE GOES BELOW *) (***********************************************************) DEFINE_START (***********************************************************) (* THE EVENTS GO BELOW *) (***********************************************************) DEFINE_EVENT /* timeline_event[TLLG] { if(nDebugLG) send_string 0,"'dvLG TimeLine Sequence:',itoa(timeline.sequence)" switch(Timeline.Sequence) { Case 1: { if(nDebugLG) send_string 0,"'Polling Power'" nLGSequence = Timeline.Sequence send_String dvport, LG_Power_Get } Case 2: { if(nDebugLG) send_string 0,"'Polling Source'" nLGSequence = Timeline.Sequence send_String dvport, LG_Source_Get } Case 3: { if(nDebugLG) send_string 0,"'Polling Volume'" nLGSequence = Timeline.Sequence send_String dvport, LG_Volume_Get } Case 4: { nLGSequence = 1 if(nLGOnreq) { if(nDebugLG) send_string 0,"'LG Resquest On Send'" send_String dvport, LG_Power_ON } if(nLGOffreq) { if(nDebugLG) send_string 0,"'LG Resquest Off Send'" send_String dvport, LG_Power_OFF } } } } */ data_event[dvport] { online: { if(DebugLgMonitorModule) send_string 0,"'LG ',itoa(data.device.number),' Online',$0d" send_command dvport,'SET BAUD 9600,N,8,1' wait 30 send_String dvport, LG_Power_Get wait 40 send_string dvport, LG_Source_Get wait 50 send_String dvport, LG_Volume_Get wait 60 send_string dvport, LG_Mute_Get on[dvtp,nbutton[85]] //timeline_create(TLLG,TLLGMonitorTime,4,TIMELINE_relative,timeline_repeat) } offline: { if(DebugLgMonitorModule) send_string 0,"'LG ',itoa(data.device.number),' Offline',$0d" //timeline_kill(TLLG) off[dvtp,nbutton[85]] } string: { stack_var Char Cdump[50] if(DebugLgMonitorModule) send_string 0,"'LG ',itoa(data.device.number),' string: ',data.text" //timeline_pause(TLLG) cdump = remove_string(data.text,'OK',1) select { active(cdump = 'a 01 OK'): { nLGPowerFb=atoi(Left_String(data.text,2)) nLGon = nLGPowerFb } active(cdump = 'b 01 OK'): { fnCLEAR_INPUT() nLGSourceFb=atoi(Left_String(data.text,2)) switch(nLGSourceFb) { case 10: on[dvtp,nbutton[1]] case 20: on[dvtp,nbutton[2]] case 21: on[dvtp,nbutton[3]] case 40: on[dvtp,nbutton[4]] case 60: on[dvtp,nbutton[5]] case 90: on[dvtp,nbutton[6]] case 91: on[dvtp,nbutton[7]] } } active(cdump = 'e 01 OK'): { nLGMuteFb=(atoi(Left_String(data.text,2))) } active(cdump = 'f 01 OK'): { nLGVolumeFb=HEXTOI(Left_String(data.text,2)) send_level dvtp,nbutton[86],nLGVolumeFb*255/100 } } //timeline_restart(TLLG) } } button_event[dvtp,nButton] { push: { nSelection=Get_Last(nButton) switch(nSelection) { case 1: // ATV { CALL 'LGInput' (10) break } case 2: // Av1 { CALL 'LGInput' (20) break } case 3: // Av2 { CALL 'LGInput' (21) break } case 4: // Component { CALL 'LGInput' (40) break } case 5: // VGA { CALL 'LGInput' (60) break } case 6: // HDMI1 { CALL 'LGInput' (90) break } case 7: // HDMI2 { CALL 'LGInput' (91) break } case 20: //Power Off { CALL 'LGPower' (0) break } case 21: //Power On { CALL 'LGPower' (1) break } case 23:// Audio Mute { call 'LGMute' (!nLGMuteFb) } case 30:// Volume Up { if(nLGMuteFb=0) nLGMuteFb=1 nLGVolumeFb=nLGVolumeFb+2 if(nLGVolumeFb>=100) nLGVolumeFb=100 CALL 'LGVolume' (nLGVolumeFb) } case 31:// Volume Dn { if(nLGMuteFb=0) nLGMuteFb=1 nLGVolumeFb=nLGVolumeFb-2 IF(nLGVolumeFb<=1 || nLGVolumeFb>100) nLGVolumeFb=0 CALL 'LGVolume' (nLGVolumeFb) } } } hold[3,REPEAT]: { switch(nSelection) { case 30:// Volume Up { if(nLGMuteFb=0) nLGMuteFb=1 nLGVolumeFb=nLGVolumeFb+5 if(nLGVolumeFb>=100) nLGVolumeFb=100 CALL 'LGVolume' (nLGVolumeFb) } case 31:// Volume Up { if(nLGMuteFb=0) nLGMuteFb=1 nLGVolumeFb=nLGVolumeFb-5 IF(nLGVolumeFb<=5 || nLGVolumeFb>100) nLGVolumeFb=0 CALL 'LGVolume' (nLGVolumeFb) } } } } (***********************************************************) (* THE ACTUAL PROGRAM GOES BELOW *) (***********************************************************) DEFINE_PROGRAM [dvtp,nbutton[84]] = !nLGLock [dvtp,nbutton[23]] = !nLGMuteFb [dvtp,nbutton[20]] = !nLGPowerFb [dvtp,nbutton[21]] = nLGPowerFb (***********************************************************) (* END OF PROGRAM *) (* DO NOT PUT ANY CODE BELOW THIS COMMENT *) (***********************************************************)