主题中讨论的其他器件:DLP7000
工具与软件:
我遇到了类似的问题、因为我甚至无法使用 LoadData 函数在 DMD 上加载最简单的测试模式。 我是不是在误解什么?
#include
#include "D4100_USB.h"//包含 USB 函数的头文件
#include //每个 memset
#include
#include
使用命名空间 std;
使用命名空间 USB;
// Costanti DLP7000
#define DMD_WIDTH 1024 //像素
#define DMD_HEIGHT 768 //右归 totali
#define bytes_per_row (dmd_width / 8)// 128
#define MAX_ROWS_CHUNK 400 //马西莫 numero di rigue da cararicare per chiamata
#define DMDTYPE_DLP7000 1 // da GetDMDTType ()、tipicamente 1 (根据 DLP7000)
int main(){
//步骤1:获取已连接的设备数
short numDevices = GetNumDev();
Cout <<"Number of Connected devices:"<< numDevices << endl;
如果(numDevices <= 0){
COUT <<"未找到器件。 正在退出..." <<结束;
返回-1;
}
//步骤2:获取有关第一个设备的基本信息
short deviceNumber = 0;//第一个器件的索引
unsigned int firmwareRev = GetFirmwareRev (deviceNumber);
unsigned int driverRev = GetDriverRev (deviceNumber);
long dllRev = GetDLLRev ();
短 usbSpeed = GetUsbSpeed (deviceNumber);
短 dmdType = GetDMDTYPE (deviceNumber);
短电平= 0;
COUT <<"器件信息:"<< endl;
COUT <<"固件版本:"<< firmwareRev << endl;
COUT <<"驱动程序版本:"<< driverRev << endl;
COUT <<"DLL 修订版本:"<< dllRev << endl;
COUT <<"USB Speed:"<<(usbSpeed =0? "低":"高")<< endl;
COUT <<" DMD 类型:"<< dmdType << endl;
//第3步:清除 FIFO 并设置基本参数
COUT <<"清除 FIFO..." <<结束;
简短结果= ClearFifos (deviceNumber);
短阻塞模式= GetBlkMd (deviceNumber);
COUT <<"BlockMode:..."<< blockmode << endl;
/*
SetTPGEnable (1、deviceNumber);
SetPatternForce (1、deviceNumber);
SetPatternSelect (0x1、deviceNumber);
std::this_thread:sleep_for (std::chrono::秒(5));
SetPatternSelect (0x2、deviceNumber);
std::this_thread:sleep_for (std::chrono::秒(5));
SetPatternSelect (0x7、deviceNumber);
cout <<"aaa"<< endl;
if (result == 1){
COUT <<"已成功清除 FIFO。" <<结束;
}
否则{
COUT <<"无法清除 FIFO。" <<结束;
}
COUT <<"将块模式设置为11..." <<结束;
if (result == 1){
COUT <<"已成功设置块模式。" <<结束;
}
否则{
COUT <<"无法设置块模式。" <<结束;
}
COUT <<"将块地址设置为1000..." <<结束;
Result = SetBlkAd (1000、deviceNumber);
if (result == 1){
COUT <<"已成功设置块地址。" <<结束;
}
否则{
COUT <<"无法设置块地址"。 <<结束;
}
*/
//步骤3.b vero
/*
Short rowAddress = 27;// Riga da impostare
// Imposta il 行地址 a 27.
if (SetRowAddr (rowAddress、deviceNumber)=1){
COUT <<"Row Address impostato A:"<< rowAddress << endl;
}
否则{
cout <<"Errore durante l'impostazione del Row Address!" <<结束;
返回-1;
}
// Leggi il 行地址
Int currentRowAddress = GetRowAddr (deviceNumber);
if (currentRowAddress = rowAddress){// Supponiamo Che -1表示存在错误
COUT <<"行地址属性:"<< currentRowAddress << endl;
}
否则{
cout <<"Errore durante la lettura del Row Address!" <<结束;
}
*/
//步骤4:测试数据加载
// Configurazione iniziale.
ClearFifos(deviceNumber);
LoadControl (deviceNumber);
SetBlkMd (10、deviceNumber);//每次复位 multiplo di blockchi 时 Modalità
SetBlkAd (0000、deviceNumber);// Iniziamo con il blocco 0
// Dati per una Riga tutta 1 e una tutta 0
unsigned char rowAllOn[128];// 1024像素/ 8 = 128字节
unsigned char rowAllOff[128];
// Inizializziamo i dati.
memset (rowAllOn、0xFF、sizeof (rowAllOn));// Tutti i pixel on
memset (rowAllOff、0x00、sizeof (rowAllOff));// Tutti i pixel off
// Carichiamo alternativamente right on e off
对于(int j = 0;j < 16;j++){// per tute le right del DMD7000
SetWDT (1、deviceNumber);// Abilita Watchdog Timer
LoadControl (deviceNumber);// carica il controllo
SetRowMd (10、deviceNumber);// Modalità Riga 标准
SetNSFLIP (1、deviceNumber);// Nessun flip nord-sud
SetRowAddr (j、deviceNumber);//里加医院
cout <<"Caricamento Riga:"<< j << endl;
如果(j % 2 =0){
// Riga pari: carica tutti 1.
LoadData (rowAllOn、sizeof (rowAllOn)、dmdType、deviceNumber);
}
否则{
// Riga desridi: carica tutti 0
LoadData (rowAllOff、sizeof (rowAllOff)、dmdType、deviceNumber);
}
}
Cout <<"dimensioni rowAllON:"<< sizeof (rowAllOn)<< endl;
SetRST2BLKZ (0、deviceNumber);
SetRowAddr (0、deviceNumber);
//步骤5:检索当前行地址
short currentRowAddr = GetRowAddr (deviceNumber);
短 currentROwmode = GetRowMd (deviceNumber);
COUT <<"当前行地址:"<< currentRowAddr << endl;
COUT <<"测试已完成。" <<结束;
COUT << Current Row MD:"<< currentROwmode << endl;
COUT <<"测试已完成。" <<结束;
返回0;
}