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.

[参考译文] DLP4500:DLP4500 USB 通信

Guru**** 2013580 points
Other Parts Discussed in Thread: DLP4500, DLPC350
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/dlp-products-group/dlp/f/dlp-products-forum/1241267/dlp4500-dlp4500-usb-communication

器件型号:DLP4500
主题中讨论的其他器件: DLPC350

您好、TI!

我尝试用 hid 向 ubuntu 上的 EKB DLP4500投影仪发送"启动"USB 命令。 但我不能让它工作。

我可以获取投影仪信息、但无法投射图形。

您能举手说明一下吗?

谢谢!

周德林

结果如下:

制造商字符串:Texas Instruments Inc.
产品串:DLPC350
序列号字符串:(76) LCR3
索引字符串1:LCR3
结果:60

以下是代码:

#包含 // printf
#包含 // wchar_t
#包含

#include "hidapi.h"

#define MAX_STR 255

int main (int argc、char* argv[])
{
内部分辨率;
unsigned char buf[60];
wchar_t wstr[MAX_STR];
HID_DEVICE *手柄;
INT I;

//初始化 hidapi 库
res = hid_init();

//使用 VID、PID 打开设备,
//以及可选的序列号。
句柄= hid_open (0x0451、0x6401、NULL);
如果(!handle){
printf("无法打开设备\n");
HID_EXIT();
返回1;

//读取制造商字符串
RES = hid_get_manufacturer_string (handle、wstr、MAX_STR);
printf ("制造商字符串:%ls\n"、wstr);

//读取产品字符串
RES = hid_get_product_string (句柄、wstr、MAX_STR);
printf ("产品字符串:%ls\n"、wstr);

//读取序列号字符串
RES = hid_get_serial_number_string (handle、wstr、MAX_STR);
printf ("序列号字符串:(%d)%ls\n"、wstr[0]、wstr);

//读取索引字符串1
RES = hid_get_index_string (handle、1、wstr、MAX_STR);
printf ("索引字符串1:%ls\n",wstr);


buf[0]= 0x00;
buf[1]= 0x00;
buf[2]= 0x00;
buf[3]= 0x03;
buf[4]= 0x1a;
buf[5]= 0x24;
buf[6]= 0x02;

RES = HID_WRITE(句柄、buf、60 );

printf ("结果:%d\n"、res);

HID_CLOSE (Handle);

//最终确定 hidapi 库
res = hid_exit();

返回0;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Derlin:

    欢迎回到 E2E 论坛、我们希望能帮助您解决您的问题。

    您以前是否能够使用 DLP Lightcrafter 4500控制软件 GUI 进行通信和显示图像?  

    您是否在发送命令以显示任何内容这些命令看起来就像您在读取信息一样? 您似乎在读回显示正在进行一些通信的信息。

    此致、

    亚历克斯·陈

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alex:

    非常感谢您的快速回复。

    我的 Windows 笔记本电脑可以根据需要运行 GUI 并控制投影仪。 所有图形都将保存在固件中、并可以使用 Windows GUI 进行投影(验证后、点击"开始")。 我正在尝试做的是通过 USB 将命令(USB:CMD2:0x1A、CMD3:0x24)发送到投影仪、以在 ubuntu 上投影图形。

    buf[0]= 0x00;
    buf[1]= 0x00;
    buf[2]= 0x00;
    buf[3]= 0x03;
    buf[4]= 0x1a; //CMD2
    BUF[5]= 0x24; //CMD3  
    buf[6]= 0x02; //数据


    另一个问题是、我无法在 Ubuntu PC 上创建有效的 USB 设备规则、即使我在此线程中尝试了这个方法、也必须使用"sudo ./xxxx"来打开该设备。

    e2e.ti.com/.../lightcrafter-4500-gui-for-linux-and-mac

    我的 CmakeList.txt 如下所示

    Cmake_minimument_required (版本3.4.3)
    项目( DLP4500_test )
    SET (CMAKE_CXX_FLAGS "-std=c++11")
    find_package(需要 OpenCV )
    find_package(Pylon Quiet )
    如果(不是${Pylon_found})
      include ("${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindPylon.cmake)
    endif()


    include_directories (包括
      ${OpenCV_Include_DIRS}
      ${Pylon_include_DIRS}
      ${pylon_camera_include_DIRS}
    )
    add_executable (DLP4500_test dlp4500_test.cpp)
    target_link_libraries (DLP4500_test
          ${OpenCV_libs}
          ${Pylon_libraries}
          ${pylon_camera_include_DIRS}
          -lcyusbserial
          -lpthread
          -ludev
          -lhidapi-hidraw

    )
     

    谢谢!

    德林

       

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Derlin:

    我们的团队需要对此进行研究、并 在几天后与您联系。

    此致、

    洛里  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Lori:

    (1)

    我在此线程中找到了"如果没有 sudo 则无法打开设备"的解决方案   

    https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/943759/tmp117evm-tmp117evm-gui-cannot-connect-to-usb-device

    在我执行了 sudo chmod 0666 /dev/hidraw *(也需要在/etc/udev/rules.d 下使用设备规则)后,我可以在不使用"sudo"的情况下运行我的 c++代码。  

    (2)

    由于不再需要 sudo、因此我能够使用 TI 4500 GUI 控制 ubuntu 上的投影仪、并提供如下所示的次要修复:

    在 dlp350_usb.cpp 中,当 GUI 启动时,它会检查 USB 连接,但原始 GUI 代码(dlp350_usb.cpp)在 DLP350_usb_isconnected ()中没有 DLP350_usb_isconnected (DLP350_usb_isconnected)(DLP350_usb_usb_isconnected))),    

     

    静态 int USBConnected = 0//设备连接时布尔值为 true 
    
    
    int DLPC350_USB_isconnected () 
    { 
    DLPC350_USB_Open ();<------------------ 我添加了这一行、端口打开后、USBConnected 变为 true.e。 
    
    
    返回已连接的 USB; 
    
    
    int DLPC350_USB_Init (void) 
    { 
    返回 hid_init()

      

    我仍然需要确定使用 C++代码发送到投影仪的命令格式。 非常感谢您能给我一些可行的例子。

    谢谢!

    德林  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Derlin:

    很高兴听到 TI 4500 GUI 可以与 Ubuntu 配合使用。

    您可以查看包含 dlpc350_api 的源代码、它应该会为您提供所有命令功能。  

    您还可以参阅此处的软件编程人员指南以了解有关命令的更多详细信息。  

    https://www.ti.com/lit/ug/dlpu010g/dlpu010g.pdf

    此致、

    亚历克斯·陈