【发布时间】:2018-08-01 11:46:54
【问题描述】:
我尝试为 OS X 编写应用程序,该应用程序将在与 USB 连接的 Xprinter xp-370b 上打印条形码。 我使用 IOKit 库。
我可以在我的代码中以io_service_t device; 获取此打印机的设备对象。然后我创建IOUSBDeviceInterface **dev; 并使用(*dev)->USBDeviceOpen(dev); 打开设备。
如何向此设备发送任何消息?我试试:
IOReturn WriteToDeviceZ(IOUSBDeviceInterface **dev, UInt16 length, UInt8 writeBuffer[])
{
IOUSBDevRequest request;
IOReturn kr;
USBDeviceAddress address;
kr = (*dev)->GetDeviceAddress(dev, &address);
if (kr != kIOReturnSuccess)
{
printf("No address err 0x%x\n", kr);
return kr;
}
request.bmRequestType = USBmakebmRequestType(kUSBOut, kUSBVendor, kUSBDevice);
request.bRequest = 0xa0;
request.wValue = address;
request.wIndex = 0;
request.wLength = length;
request.pData = writeBuffer;
return (*dev)->DeviceRequest(dev, &request);
}
但是 ii 返回错误
kr = WriteToDeviceZ(dev, sizeof(array), array);
if (kr != kIOReturnSuccess)
{
printf("WriteToDevice reset returned err 0x%x\n", kr);
(*dev)->USBDeviceClose(dev);
(*dev)->Release(dev);
return kr;
}
WriteToDevice reset returned err 0xe000404f
也许还有另一种方法可以通过 USB 与打印机交互?
【问题讨论】: