我使用I2C对DLPC图像序列设置为单次播放模式时第一次播放成功,再次执行.Validate Sequence 时出现I2C锁死,我看见GUI程序中有一个涉及0x7D的接口
DLPC350_StartPatLutValidate(),这个接口中使用写0x7D,写入一个字节,但是我看见手册中这个0x7D是只读的,于是我也尝试像0x7d写入00来应用图像设置,在循环播放模式是没有问题的,但是在单次播放模式
再次执行时会出现I2C通讯异常,这时候USB通讯依旧正常
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我使用I2C对DLPC图像序列设置为单次播放模式时第一次播放成功,再次执行.Validate Sequence 时出现I2C锁死,我看见GUI程序中有一个涉及0x7D的接口
DLPC350_StartPatLutValidate(),这个接口中使用写0x7D,写入一个字节,但是我看见手册中这个0x7D是只读的,于是我也尝试像0x7d写入00来应用图像设置,在循环播放模式是没有问题的,但是在单次播放模式
再次执行时会出现I2C通讯异常,这时候USB通讯依旧正常
DLPC350_StartPatLutValidate()
这个只是验证配置数据是否有效,不是完整的pattern数据。
需要先发送配置数据, please debug it to figure out where it stopped.
void MainWindow::on_pushButton_ValidatePatSeq_clicked()
{
int i = 0;
unsigned int status;
bool ready;
if((ui->radioButton_SLMode->isChecked() == false) && (ui->radioButton_VariableExpSLMode->isChecked() == false))
{
ShowError("Please change operating mode to Pattern Sequence before validating sequence");
return;
}
//if pattern sequence is already running it must be stopped first
emit on_pushButton_PatSeqCtrlStop_clicked();
//Clear the flags
ui->pushButton_PatSeqValIndExpOOR->setEnabled(false);
ui->pushButton_PatSeqValIndPatNumOOR->setEnabled(false);
ui->pushButton_PatSeqValIndTrigOutOverlap->setEnabled(false);
ui->pushButton_PatSeqValIndBlkVecMiss->setEnabled(false);
ui->pushButton_PatSeqValPatPeriodShort->setEnabled(false);
ui->pushButton_PatSeqCtrlStart->setEnabled(false);
ui->pushButton_PatSeqCtrlPause->setEnabled(false);
ui->pushButton_PatSeqCtrlStop->setEnabled(false);
if(DLPC350_StartPatLutValidate())
{
ShowError("Error validating LUT data");
return;
}
QEventLoop loop;
do
{
if(DLPC350_CheckPatLutValidate(&ready,&status) < 0)
{
ShowError("Error validating LUT data");
return;
}
if(ready)
{
break;
}
else
{
QTimer::singleShot(1000, &loop, SLOT(quit()));
loop.exec();
}
if(i++ > MAX_NUM_RETRIES)
break;
} while(1);
ui->pushButton_PatSeqValIndExpOOR->setEnabled((status & BIT0) == BIT0);
ui->pushButton_PatSeqValIndPatNumOOR->setEnabled((status & BIT1) == BIT1);
ui->pushButton_PatSeqValIndTrigOutOverlap->setEnabled((status & BIT2) == BIT2);
ui->pushButton_PatSeqValIndBlkVecMiss->setEnabled((status & BIT3) == BIT3);
ui->pushButton_PatSeqValPatPeriodShort->setEnabled((status & BIT4) == BIT4);
//Except BIT0 and BIT1 flags enable pattern sequence
if(!(status & BIT0) && !(status & BIT1))
{
ui->pushButton_PatSeqValStatus->setEnabled(true);
ui->pushButton_PatSeqCtrlStart->setEnabled(true);
ui->pushButton_PatSeqCtrlPause->setEnabled(true);
ui->pushButton_PatSeqCtrlStop->setEnabled(true);
}
else
{
ui->pushButton_PatSeqValStatus->setEnabled(false);
ui->pushButton_PatSeqCtrlStart->setEnabled(false);
ui->pushButton_PatSeqCtrlPause->setEnabled(false);
ui->pushButton_PatSeqCtrlStop->setEnabled(false);
}
}