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.

[参考译文] DLPNIRNANOEVM:有关 USB/蓝牙数据传输和自动文件保存的咨询

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

https://e2e.ti.com/support/dlp-products-group/dlp/f/dlp-products-forum/1593775/dlpnirnanoevm-inquiry-regarding-usb-bluetooth-data-transfer-and-automatic-file-saving

器件型号: DLPNIRNANOEVM

尊敬的专家:

我们最近购买了两个 DLPRegisteredNIRscanTm Nano 评估模块单元、用于研发原型项目、旨在将您的硬件集成到定制软件工作流程中。

虽然我们已经使用 HID 协议通过 USB 和蓝牙成功建立了与设备的通信、但在尝试在开始扫描后自动将扫描结果(频谱数据)保存到 PC 端文件夹时、我们遇到了一些挑战、类似于 DLP NIRscan Nano GUI 软件中的“Scan"按钮“按钮提供的功能。

我们仔细查看了相关文档(尤其是 USB 接口开发人员指南)、但找不到与以下内容相关的明确信息或命令:

  1. 以编程方式将扫描结果文件(例如.CSV 或.DAT)从内部 SD 卡传输到主机 PC。

  2. 通过 USB 或蓝牙完成扫描后触发自动文件保存到 PC、无需从 SD 卡手动复制。

请提供以下方面的指导:

  • 是否有记录的协议或 HID 命令序列来实现从 SD 卡到主机的扫描后文件传输;

  • 是否可以使用自定义软件(例如,通过记录的 HID 命令或 API 调用)复制 GUI 中相同的自动文件保存行为(“Scan"按钮“按钮)按钮);

  • 是否有任何可帮助自动扫描启动和结果检索的替代建议或可用的 SDK 资源?

我们目前正在开发 R/PYTHON 自定义软件、如有任何文档、示例代码或参考文献可以帮助我们可靠地实现这些功能、我们将不胜感激。

提前感谢您的支持。

Marvin

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

    你好、Marvin

    感谢您联系我们并使用 E2E 论坛! 我们团队的专家将审核该主题、并尽快回复您。

    此致、  

    Tristan Bottone

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

    你好、Marvin、

    是的、我们有 NIRNano Scan EVM 用户指南中显示的协议 — H 部分是 USB 参考、J 部分是关于如何处理蓝牙。 此外、可在第 5.4 节中看到更高的视图。 这些都与您要求的指导有关。

    DLPNIRNANOEVM 产品页面上的“订单和开始开发“下、TICC49 和 TICC50 是解释数据的说明。 请参阅  dlpspec_scan_interpret 函数。

    请告知您是否还有其他问题。

    此致、

    Aaron

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

    您好 Aaron、

    感谢您的支持。 我们可以 通过 hidapi.dll 连接到设备并执行扫描。 但是、我们无法通过使用 dlpspec scan_interpret 函数来获取频谱(格式或原始)。 如果可能、请告诉我们如何执行。 我正在共享用于执行扫描和使用 DLL 文件获取原始光谱的 python 代码。  

    py_run_string(“
    导入隐藏、时间

    DEV = HIDD.Device (vid=0x0451、pid=0x4200)

    # 1) 扫描 başlat
    SCAN_cmd =字节 ([0x00,0x40,0x00、0x03,0x00、0x18,0x02、0x01])+字节 ([0]*56)
    DEV.WRITE (scan_cmd)
    ACK = DEV.READ (64,1000)
    打印(“扫描确认:“、ACK)

    #2) 1.5 SN 闪烁
    时间睡眠 (1.5)

    3) ADC 读取 komutu (0x1A)
    ADC_cmd =字节 ([0x00,0xC0,0x00、0x02,0x00、0x1A、0x02])+字节 ([0]*57)

    打印 ('\\nADC 数据 Okuma...')
    DEV.WRITE (ADC_cmd)

    #4) Cihazdan gelen speknounu Oku
    DATA = DEV.READ (512,2000)
    打印('ADC 原始数据:',数据)

    dev.close()
    “)

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

    您好、Marvn、

    我很抱歉耽误你的时间! 您的#3 命令似乎正在运行“Reset Tiva“命令。

    我认为您正在尝试通过 USB 读回数据、您需要利用“读取文件列表“、“缩小“、然后需要多次重复“读取文件数据“。

    如果是这种情况、请告知!

    此致、

    Aaron

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

    您好 Aaron、

    感谢您的支持、但是客户在建议方面遇到了另一个问题。 详情如下:

    我测试了您的建议、但我认为我的脚本中遗漏了一个问题。 无法正确读取文件列表和文件大小。 文件 ID 为空、如下面的所示 (raw resp:b'')

    文件 IDS:[]) 尽管 SD 卡中有 37 个文件。 请告诉我问题的根源。

     ###文件列表
    > py_run_string(“
    +导入隐藏,结构
    +
    + dev = hid.Device (vid=0x0451、pid=0x4200)
    +
    +#读取文件列表
    + cmd =字节 ([
    +  0x00、0xC0、0x00、
    +  0x01、0x00、
    +  0x2C    # READ_FILE_LIST
    +])+字节 ([0x00]*58)
    +
    + PRINT ('>>>读取文件列表')
    + dev.write (cmd)
    +
    + RESP = DEV.READ (64,3000)
    +打印 ('raw resp:'、resp)
    +
    +#Örnek yorum:byte[4:]=文件 ID
    + file_ids = list (RESP[4:64])
    + file_ids =[f 表示 file_ids 中的 f、如果 f!= 0]
    + PRINT ('FILE IDS:'、FILE_IDs)
    +
    + dev.close()
    +“")“)
    >>读取文件列表
    原始呼吸:B''
    文件 IDS:[]
    >####DOSYA BOYUTU
    > py_run_string(“
    +导入隐藏,结构
    +
    + file_id = 1
    + dev = hid.Device (vid=0x0451、pid=0x4200)
    +
    +#读取文件大小
    + cmd =字节 ([
    +  0x00、0xC0、0x00、
    +  0x02、0x00、
    +  0x2D、    # READ_FILE_SIZE
    +  file_id
    +])+字节 ([0x00]*57)
    +
    + PRINT ('>>>读取文件大小')
    + dev.write (cmd)
    +
    + RESP = DEV.READ (64,3000)
    +打印 ('raw resp:'、resp)
    +
    +如果 len (resp)>= 8:
    +  size = struct.unpacked ('<i'、bytes (RESP[4:8])[0]
    +  PRINT(“文件大小(字节):“,大小)
    +其他:
    +  大小= 0
    +  印刷品(“Size okunamadi“)
    +
    + dev.close()
    +“")“)
    >>读取文件大小
    原始地址:b'\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
    文件大小(字节):0
    >
    > py_run_string(“
    +导入隐藏,结构,数学
    +
    + file_id = 1
    +偏移= 0
    +块= 56 # HID 有效载荷
    + file_size = 4096 #<- yukarıda okuduğun gerçek size ile değiştir
    +
    + dev = hid.Device (vid=0x0451、pid=0x4200)
    +
    + RAW_DATA = bytearray()
    +
    + PRINT ('>>>读取文件数据')
    +
    +、而 offset < file_size:
    +  cmd =字节 ([
    +     0x00、0xC0、0x00、
    +     0x05、0x00、
    +     0x2E、       # read_file_data
    +     file_id
    +]  )+ struct.pack('<i',偏移量)+字节 ([0x00]*(64-11)
    +
    +  dev.write (cmd)
    +  RESP = DEV.READ (64,3000)
    +
    +  有效载荷= RESP[4:64]
    +  RAW_DATA.EXTEND(有效载荷)
    +
    +  print (f'Offset{offset}->{len (payload)}bytes')
    +  offset += len(有效载荷)
    +
    + dev.close()
    +
    + print(“读取的总字节数:'、len (raw_data))
    +
    +# Dosyaya Yaz
    +且 open (scan_raw.bin、'wb') 表示为 f:
    +  f.write (raw_data)
    +
    +打印 ('can_raw.bin yazildi')
    +“")“)
    >>读取文件数据
    偏移 0 -> 60 字节
    偏移量 60 -> 60 字节
    偏移 120 -> 60 字节
    偏移 180 -> 60 字节
    偏移 240 -> 60 字节
    偏移 300 -> 60 字节
    偏移 360 -> 60 字节
    偏移 420 -> 60 字节
    偏移 480 -> 60 字节
    偏移 540 -> 60 字节
    偏移 600 -> 60 字节
    偏移 660 -> 60 字节
    偏移 720 -> 60 字节
    偏移 780 -> 60 字节
    偏移 840 -> 60 字节
    偏移 900 -> 60 字节
    偏移 960 -> 60 字节
    偏移 1020 -> 60 字节
    偏移 1080 -> 60 字节
    偏移 1140 -> 60 字节
    偏移 1200 -> 60 字节
    偏移 1260 -> 60 字节
    偏移 1320 -> 60 字节
    偏移 1380 -> 60 字节
    偏移 1440 -> 60 字节
    偏移 1500 -> 60 字节
    偏移 1560 -> 60 字节
    偏移 1620 -> 60 字节
    偏移 1680 -> 60 字节
    偏移 1740 -> 60 字节
    偏移 1800 -> 60 字节
    偏移 1860 -> 60 字节
    偏移 1920 -> 60 字节
    偏移 1980 -> 60 字节
    偏移 2040 -> 60 字节
    偏移 2100 -> 60 字节
    偏移 2160 -> 60 字节
    偏移 2220 -> 60 字节
    偏移 2280 -> 60 字节
    偏移 2340 -> 60 字节
    偏移 2400 -> 60 字节
    偏移 2460 -> 60 字节
    偏移 2520 -> 60 字节
    偏移 2580 -> 60 字节
    偏移 2640 -> 60 字节
    偏移 2700 -> 60 字节
    偏移 2760 -> 60 字节
    偏移 2820 -> 60 字节
    偏移 2880 -> 60 字节
    偏移 2940 -> 60 字节
    偏移 3000 -> 60 字节
    偏移 3060 -> 60 字节
    偏移 3120 -> 60 字节
    偏移 3180 -> 60 字节
    偏移 3240 -> 60 字节
    偏移 3300 -> 60 字节
    偏移 3360 -> 60 字节
    偏移 3420 -> 60 字节
    偏移 3480 -> 60 字节
    偏移 3540 -> 60 字节
    偏移 3600 -> 60 字节
    偏移 3660 -> 60 字节
    偏移 3720 -> 60 字节
    偏移 3780 -> 60 字节
    偏移 3840 -> 60 字节
    偏移 3900 -> 60 字节
    偏移量 3960 -> 60 字节
    偏移 4020 -> 60 字节
    偏移量 4080 -> 60 字节
    读取的总字节数:4140
    scan_raw.bin yazildi
    此致、
    Marvin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Marvin、

    请 给我一些时间来分析此代码。

    此致、

    Aaron

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

    明白。 我将等待您的更新

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

    谢谢!

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

    您好 Aaron、

    我想请求更新。

    谢谢!

    Marvin

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

    你好、Marvin、

    在 READ_FILE_SIZE 和 READ_FILE_LIST 中、USB 读取结构的“Length"字“字段似乎未正确设置。

    我建议客户查看 DLP NIRscan Nano EVM 指南的表 H-1 、请记住、长度是命令和数据字节中发送的总字节数或者“数据有效载荷“。

    希望这可以解决客户的问题。

    此致、

    Aaron

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

    你好、Marvin、  

    请告知我们这是否有助于解决客户问题。  

    如果不需要其他帮助、我们将关闭此 TT。 如果有任何其他问题、请随时创建新的 E2E 工单!   

    此致、  

    Tristan Bottone