使用 Keil USB HID 示例,我终于能够获得使用 LPC2148 在 Windows 中成功枚举的设备;USB HID 示例需要一些调整。我正在使用中断传输方法。我正在使用 USBlyzer 来嗅探我的 USB 数据传输。
在 Windows 端,我目前正在使用 C# USB 库(http://www.codeproject.com/Articles/18099/A-USB-HID-Component-for-C)连接到我的设备。
我测试数据传输的目标是向设备发送一个字节,让它执行一些简单的数学运算(例如加 2)并发回新值,以便我可以验证数学是否正确完成并且数据已发送和接收适当地。
现在它已被枚举,但我无法让 LPC2148 发送/接收数据。我发现这篇文章(http://www.keil.com/forum/19713/)解释了如何向主机发送数据。
它有以下代码:
ususer.c
#if USB_CONFIGURE_EVENT
void USB_Configure_Event (void) {
if (USB_Configuration) { /* Check if USB is configured */
GetInReport();
USB_WriteEP(0x81, &InReport, sizeof(InReport));
}
}
#endif
void USB_EndPoint1 (DWORD event) {
switch (event) {
case USB_EVT_IN:
GetInReport();
USB_WriteEP(0x81, &InReport, sizeof(InReport));
break;
}
}
我使用了这种技术,但发现了几个问题: 1.它连续发送并且非常快,而我只希望它在接收到一个字节的数据后发送数据,我只希望它发送一次。2. 看起来 GetInReport 似乎什么也没做,因为在我使用这个名称的方法中,我让它使用一个不断递增 1 的变量更新 InReport。但在我收到的数据中,它始终保持默认值并且从未改变。3.这段代码没有地方让我从电脑接收数据。