无法定义要发送到我的串行设备(通过 USB 连接)的数据。
我如何获得设备:
function callTransfer(temp1) {
temp1.controlTransferOut({
requestType: 'standard',
recipient: 'device',
request: 0x07,
value: 0x08,
index: 0x04
})
.then(() => {
console.log('sent req'); device.transferIn(1, 32)
}) // Waiting for 32 bytes of data from endpoint #1.
.then(result => {
console.log(result);
})
.catch(error => {
console.log(error);
});
}
navigator.usb.requestDevice({
filters: [{}]
}).then((selectedDevice) => {
device = selectedDevice;
return device.open()
.then(() => device.reset())
.then(() => device.selectConfiguration(1))
.then(() => device.claimInterface(device.configuration.interfaces[0].interfaceNumber))
.then(() => {
callTransfer(device);
})
});
之后我可以进入wireshark并读取值:
recipient = usb.bmRequestType (but not freely definable it is an enum - link see below)
request = usb.setup.bRequest
value = usb.setup.wValue
index = usb.setup.wIndex
但对于我的设备,我还需要设置 usb.LanguageId、usb.DescriptorIndex 等。收件人也不属于这 4 个枚举
有没有办法发送原始数据或设置更多属性?
知道有transferOut功能,但是当我尝试它时,它只是在最后转储它,这对我的问题不起作用。
试图更改接收者或请求参数,但它不起作用,或者更糟糕的是,向 controlTransferOut 对象添加更多参数似乎没有改变任何东西。
资源: