Hello Sir,
I am making a receipt printer for point of sale application using LPC2368 controller. I want to use USB interface for receiving data from computer to printer.I am using bulk transfer for data receiving and sending data. I started using Keil USB HID source code example and converted this source code for bulk transfer using following changes in configuration descriptor and few other changes
const UWORD8 USB_ConfigDescriptor[] = { /* Configuration 1 */ USB_CONFIGUARTION_DESC_SIZE, /* bLength */ USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */ WBVAL( /* wTotalLength */ 1*USB_CONFIGUARTION_DESC_SIZE + 1*USB_INTERFACE_DESC_SIZE + 2*USB_ENDPOINT_DESC_SIZE ), 0x01, /* bNumInterfaces */ 0x01, /* bConfigurationValue */ 0x00, /* iConfiguration */ USB_CONFIG_BUS_POWERED /*|*/ /* bmAttributes */ /*USB_CONFIG_REMOTE_WAKEUP*/, USB_CONFIG_POWER_MA(100), /* bMaxPower */ /* Interface 0, Alternate Setting 0, MSC Class */ USB_INTERFACE_DESC_SIZE, /* bLength */ USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ 0x00, /* bInterfaceNumber */ 0x00, /* bAlternateSetting */ 0x02, /* bNumEndpoints */ USB_DEVICE_CLASS_PRINTER, /* bInterfaceClass */ 0x01, /* bInterfaceSubClass */ 0x02, /* bInterfaceProtocol */ 0x62, /* iInterface */ /* Bulk In Endpoint */ USB_ENDPOINT_DESC_SIZE, /* bLength */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ USB_ENDPOINT_IN(2), /* bEndpointAddress */ USB_ENDPOINT_TYPE_BULK, /* bmAttributes */ WBVAL(0x0040), /* wMaxPacketSize */ 0, /* bInterval */ /* Bulk Out Endpoint */ USB_ENDPOINT_DESC_SIZE, /* bLength */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ USB_ENDPOINT_OUT(2), /* bEndpointAddress */ USB_ENDPOINT_TYPE_BULK, /* bmAttributes */ WBVAL(0x0040), /* wMaxPacketSize */ 0, /* bInterval */ /* Terminator */ 0 /* bLength */ };
Computer recognize my board usb device as a USB printing support successfully. I just want to know that is there is any class descriptor like HID class descriptor for printer or not?
And also I want to know that Is there is any host application to check bulk out transfer .
Thanks & Regards Rohit
> I am getting device ID request from PC but not other two request.
Windows put just GET_DEVICE_ID on enumeration. Try GetPrinter(PRINTER_INFO_2) and ResetPrinter() on Windows app.
> I sent Device ID to PC but when i monitors it on device monitor studio software it is not visible on this software.
Did you start on this example? C:\Keil\ARM\Boards\Keil\MCB2300\USBHID
case PRNT_GET_DEVICE_ID: EP0Data.pData = (UWORD8 *)&prn_Device_ID; EP0Data.Count = prn_Device_ID.size_l + 2; USB_DataInStage(); goto setup_class_ok; // <----- break; case PRNT_GET_PORT_STATUS: port_status.b = 0; // initialize status port_status.PRNT_FLAG.prn_not_error = 1; // 1 = No Error, 0 port_status.PRNT_FLAG.prn_select = 1; port_status.PRNT_FLAG.prn_paper_empty = 0; // 1 = Paper Empty, 0 EP0Data.pData = (UWORD8 *)&port_status; EP0Data.Count = 1; USB_DataInStage(); goto setup_class_ok; // <----- break; case PRNT_SOFT_RESET: USB_ClrStallEP(0x02); USB_ClrStallEP(0x82); USB_StatusInStage(); // <----- goto setup_class_ok; // <----- break;
Tsuneo
Thanks Sir for your reply,
Yes I am using C:\Keil\ARM\Boards\Keil\MCB2300\USBHID .
Rohit
> And also I want to know that Is there is any host application to check bulk out transfer .
USB Trace is a great tool for investigating your USB IN/OUT packets. http://www.sysnucleus.com/
Thanks Sir for your kind support
Actually Sir currently I am using USB Device monitor studio For checking IN/OUT packets. Now i will try USB trace.
hi, sir i am using LPC2929 (ARM9), i need LIN protocol sample code on this