使用隐藏协议写入数据的USB设备。为什么我有错误吗?
30视图(30天)
显示旧的评论
嗨!
我试着飞行员的usb设备(ksn合成器mini-circuits测试板)通过usb HID协议(hid.dll)。基本功能的工作,除了当我试着写数据。实际上,当我写数据使用这条线:
(res, h) = calllib (“hidapi32”,“hid_write”,pbuf hid.handle uint64(长度(wmsg)));
答案总是“
1
”。你能指出我的错误在哪里?
谢谢。
完整的代码:
如果~ libisloaded (“hidapi32”)
[notfound,警告]= loadlibrary (“hidapi32_thunk_pcwin64.dll”,“hidapi.h”,“mfilename”,“mHeaderc”);
结束
calllib (“hidapi32”,“hid_init”);
libfunctions (“hidapi32”);
vendorID = 0;
productID = 0;
pointeur = calllib (“hidapi32”,“hid_enumerate”uint16 (vendorID) uint16 (productID));
结果= calllib (“hidapi32”,“hid_free_enumeration”pointeur)
pNull = libpointer (“uint16Ptr”);
藏不住的。vendorID = 8398;
藏不住的。productID = 32;
pointeur = calllib (“hidapi32”,“hid_enumerate”uint16 (hid.vendorID) uint16 (hid.productID));
str = calllib (“hidapi32”,“hid_free_enumeration”,pointeur);
(藏。处理,价值]= calllib (“hidapi32”,“hid_open”uint16 (hid.vendorID) uint16 (hid.productID) pNull);
hid.device = calllib (“hidapi32”,“hid_open_path”,str.path);
藏不住的。nReadBuffer = 256;
藏不住的。nWriteBuffer = 256;
缓冲= 0 (1、hid.nReadBuffer);
pbuf = libpointer (“uint16Ptr”uint16(缓冲));
(res, h) = calllib (“hidapi32”,“hid_get_product_string”,pbuf hid.handle uint64(长度(缓冲)));
藏不住的。product_string = sprintf (' % s 'char (pbuffer.Value));
缓冲= 0 (1、hid.nReadBuffer);
pbuf = libpointer (“uint16Ptr”uint16(缓冲));
(res, h) = calllib (“hidapi32”,“hid_get_serial_number_string”,pbuf hid.handle uint64(长度(缓冲)));
藏不住的。serial_number = pbuffer.Value (1);
缓冲= 0 (1、hid.nReadBuffer);
pbuf = libpointer (“uint16Ptr”uint16(缓冲));
(res, h) = calllib (“hidapi32”,“hid_get_manufacturer_string”,pbuf hid.handle uint64(长度(缓冲)));
藏不住的。manufacturer_string = sprintf (' % s 'char (pbuffer.Value));
暂停(1)
缓冲= 0 (1、hid.nWriteBuffer);
wmsg = [0 0 0 0 0 0 0 0 1 48 00 09 00 00 00 00 00 00);
wmsg(结束+ (hid.nWriteBuffer-length (wmsg))) = 0;
%创建一个unit8指针
pbuf = libpointer (“uint8Ptr”uint8 (wmsg));
%写消息
(res, h) = calllib (“hidapi32”,“hid_write”,pbuf hid.handle uint64(长度(wmsg)));
%检查响应
如果res ~ =长度(wmsg)
流(hidapi写错误:% d写道,% d \ n '(长度(wmsg) 1) res);
结束
calllib (“hidapi32”,“hid_close”,hid.handle);
0评论
答案(4)
RABEHI
2020年5月13日
编辑:RABEHI
2020年5月20日
你好,
我有一个模拟的项目,我的问题是,当我给
vendorID productID,什么也没有发生!
其结果是:
路径:”
vendor_id: 0
product_id: 0
serial_number: []
release_number: 0
manufacturer_string: []
product_string: []
usage_page: 0
用法:0
interface_number: 0
下一个:[]
我必须提到我读librery如下:
目录“C: \ Windows \ SysWOW64”)
loadlibrary (“hidapi”)
我可以得到一些帮助吗?