Other Parts Discussed in Thread: DLPC350,
Hi there,
I meet the similar question: after play once, I want to play once again, I think push the play button will achieve this goal, but it wasn't;
I found the Seq.running is still light green after play once over, and the most serious problem is that I can not stop the Sequence by pushing Stop button.
Is there any way to solve this problem?
BTW: Firmware version is 3.1.0 & GUI version is 3.1.0 Win10 os.
I use the function in dlpc350_api.h, after Play once, when I call
DLPC350_PatternDisplay(0)
and check
DLPC350_GetPatternDisplay(&action)
"action" always be 2, which means it is still running,
looks like the function [int DLPC350_PatternDisplay(unsigned int)] do not work but it return the appropriate value(typically, 7, show how many bit have been send by USB).
the function like this
int DLPC350_PatternDisplay(unsigned int Action) /** * (I2C: 0x65) * (USB: CMD2: 0x1A, CMD3: 0x24) * This API starts or stops the programmed patterns sequence. * * @param Action - I - Pattern Display Start/Stop Pattern Sequence * 0 = Stop Pattern Display Sequence. The next "Start" command will * restart the pattern sequence from the beginning. * 1 = Pause Pattern Display Sequence. The next "Start" command will * start the pattern sequence by re-displaying the current pattern in the sequence. * 2 = Start Pattern Display Sequence * * @return >=0 = PASS <BR> * <0 = FAIL <BR> * */ { hidMessageStruct msg; msg.text.data[2] = (Action&0x03); DLPC350_PrepWriteCmd(&msg, PAT_START_STOP); return DLPC350_SendMsg(&msg,true); } int DLPC350_GetPatternDisplay(unsigned int *pAction) /** * (I2C: 0x65) * (USB: CMD2: 0x1A, CMD3: 0x24) * This API starts or stops the programmed patterns sequence. * * @param *pAction - O - Returns the state of the Pattern Display * 0 = Stop Pattern Display Sequence. The next "Start" command will * restart the pattern sequence from the beginning. * 1 = Pause Pattern Display Sequence. The next "Start" command will * start the pattern sequence by re-displaying the current pattern in the sequence. * 2 = Start Pattern Display Sequence * * @return >=0 = PASS <BR> * <0 = FAIL <BR> * */ { hidMessageStruct msg; DLPC350_PrepReadCmd(PAT_START_STOP); if(DLPC350_Read() > 0) { memcpy(&msg, g_InputBuffer, 65); *pAction = (msg.text.data[0] & 0xFF); return 0; } return -1; }
and I found if I check the Global data Invert checkbox after play once, it can make Seq stop forcibly after projected some 'strange' patterns. After Seq was stopped, I can use the play button to play once again.(but in cpp's comments, this operation is not recommended). Like using this function in dlpc350_api.h :
int DLPC350_SetInvertData(bool invert) /** * (I2C: 0x74) * (USB: CMD2: 0x1A, CMD3: 0x30) * This API dictates how the DLPC350 interprets a value of 0 or 1 to control mirror position for displayed patterns. * Before executing this command, stop the current pattern sequence. After executing this command, call * DLPC350_ValidatePatLutData() API before starting the pattern sequence. * * @param invert - I - Pattern Display Invert Data * 0 = Normal operation. A data value of 1 will flip the mirror to output light, * while a data value of 0 will flip the mirror to block light * 1 = Inverted operation. A data value of 0 will flip the mirror to output light, * while a data value of 1 will flip the mirror to block light * * @return >=0 = PASS <BR> * <0 = FAIL <BR> * */ { hidMessageStruct msg; msg.text.data[2] = invert; DLPC350_PrepWriteCmd(&msg, INVERT_DATA); return DLPC350_SendMsg(&msg,true); }
Like the function for validating the pattern sequence, these functions all need the sequence in stop mode, If this operation is not do damage to the projector, can I use this operation to stop the Seq?
Best regard,
Yang.