【发布时间】:2015-04-24 20:36:46
【问题描述】:
我正在开发一个与通过 USB 连接的设备进行通信的程序。当我的程序读入从设备发送的数据(例如,按下按钮)时,它以字节数组的形式发送。我将键值对存储为按钮按下字节数组的字典和按钮名称的字符串,只要按下它就会显示。这个设备也有发送字节数组的滑块,但它有一个完整的范围,每个滑块是数组中不同的数字
{ 3, 0, 0, 0, FF, 0, 0, 0 }
范围从 00 到 FF 十六进制,我将其转换为十进制。
byte[] slider1rangeLower = { 3, 0, 0, 0, 00, 0, 0, 0 }
byte[] slider1rangeUpper = { 3, 0, 0, 0, 255, 0, 0, 0 }
byte[] slider2rangeLower = { 3, 0, 0, 00, 0, 0, 0, 0 }
byte[] slider2rangeUpper = { 3, 0, 0, 255, 0, 0, 0, 0 }
我需要知道正在使用什么滑块,因此 0-255 之间的每个值都以“slider1”或任何名称出现。有没有办法为一个对象存储整个范围的值,而不是为每个滑块创建 256 个条目?
【问题讨论】:
-
如果他们同时按下按钮并移动滑块会发生什么?您的按钮查找会失败吗?我认为字典/每个可能的组合是不正确的方法,但如果不了解更多关于数据格式的信息,很难推荐更好的方法。
-
@RonBeyer 也许是正确的方法是错误的方法,但不确定更好的解决方案。该设备是一个复合 USB 设备,设备的每个部分(按钮、滑块、编码器、LED 等)都有多个端点,每个都有自己的端点。字节数组第一个索引处的“3”表示它是哪个端点。按钮是 1,滑块是 3,等等。当它们同时按下和移动时,它只是从一个到另一个,因为它不能同时在数组的第一个索引中输出不同的值。
标签: c# range bytearray libusb libusbdotnet