最近在从官方的DLPLCR4500GUI中提取DLP4500的驱动时遇到了一些问题,由于在网上只知道了相似的问题却没有得到对应的解决方案,经过了一段时间痛苦的调试终于才找到了原因。所以在这里记录一下,能救一个是一个。

大部分人在使用DLP4500时是通过官方的客户端调试软件进行,但当我们需要进行类似双目重建之类的项目时则需要在程序中能够对其精确控制,所以我整理了他们的驱动并嵌入到自己的程序中。整个过程非常顺利,唯独在刚刚上电后投影会出现乱码问题,而使用官方封装的软件是并无此问题的。
于是只能通过对比函数的调用来排查,避免有某些配置项的遗漏,但是经过比较发现并无遗漏。于是猜测,可能是在传入的数据中出了问题,一定是某个操作在启动时清除了DMD中的残留数据,而我们自己的驱动没有这个操作,导致了数据叠加出现了乱码。
通过对DLP4500 AddPat这个操作的调试发现,官方在配置第一个数据项的时候Buf_swap选项是打开的,而后续的其他数据项都是关闭的。即在投影第一张的时候要开启buf_swap做一些类似清理的操作。

虽然结果很简单,但是排查调试的过程很痛苦,手册上并未找到对这一细节进行的说明,于是只能通过猜测-实验的过程来定位。