pic18f driving usb printers


+ Reply to Thread
Results 1 to 19 of 19
  1. #1
    ephesus's Avatar
    ephesus Guest

    Default pic18f driving usb printers

    hi,
    I am a beginner to USB,
    I need some info about interfacing USB printers.
    I feel better now after reading all "USB 2.0 specifications","USB device class definition for printing devices" and USB threads in forum. A few questions,

    -is a pic18f able to drive USB printers as a host using pbp2.46 USB statements?
    -how about page description language -PDL-?
    -how to send a standard A4 text page from pic18f to printers -hp,canon,xerox etc.-?
    -do all USB printers accept a standart text format or variations needed for different manufacturers?

    My application is a kind of Guard Tour System including a portable recorder and ibuttons or rfid tags
    for security checkpoints. it works well with the interface software on pc or directly reports to rs232 printers.
    Thanks to picbasic pro.
    Now planning to upgrade to USB printers.

    Thank you very much...

  2. #2
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898

    Default

    As i know, a PIC can't drive a Printer. You'll need something like those ALFAT chips.

    See this link
    http://www.picbasic.co.uk/forum/showthread.php?t=2102
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  3. #3
    ephesus's Avatar
    ephesus Guest

    Default

    Steve,
    Yes, there are many interface chips like FTDI's and usb onchip microcontrollers and many adapter solutions. I really wonder if an ascii
    text page based printer driver for any of brands -HP,Canon..- could be written by pbp for 18F family usb pics.
    Thanks

    Serkan

  4. #4
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898

    Default

    PIC are not design to handle external USB device. They are design to work as an external USB device... well, that's the simplest explanation i found.
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  5. #5
    Join Date
    Dec 2003
    Location
    Wichita KS
    Posts
    511

    Default

    Hello ephesis,

    E>> I really wonder if an ascii text page based printer driver for any of brands -HP,Canon..- could be written by pbp for 18F family usb pics. <<

    Yes, very easily done...IF ( I say IF) your printer accepts standard ASCII codes...with BUILT IN FONTS. Most printers do not anymore... your Dot Matrix printers will. I know that the HP1200 will work, and it can be driven by the USB. But when you start messing with printers that do not have built in fonts... you complicate things tremendously for the PIC. Quite a few of the Centronix Printers will have built in fonts.. and sometimes the Centronix printers can be driven by the USB ports.

    Dwayne (either that, I misunderstood your question).
    Ability to Fly:
    Hurling yourself towards the ground, and missing.

    Engineers that Contribute to flying:
    Both optimists and pessimists contribute to the society. The optimist invents the aeroplane, the pessimist the parachute

    Pilots that are Flying:
    Those who know their limitations, and respect the green side of the grass...

  6. #6
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762

    Default

    Dwayne,

    I think the question was:
    is it possible to drive a printer by a PIC via USB?

    not:
    which printer models do have built in fonts?
    regards

    Ralph

    _______________________________________________
    There are only 10 types of people:
    Those who understand binary, and those who don't ...
    _______________________________________________



  7. #7
    Join Date
    Dec 2003
    Location
    Wichita KS
    Posts
    511

    Default

    Hello Ralph,

    I think the question was:
    is it possible to drive a printer by a PIC via USB?

    not:
    which printer models do have built in fonts?

    My answer would be yes...*only* if the printer has built in Fonts, and you use standard ASCII to print with to your USB port.
    If it doesn't have built in fonts, you are shooting yourself in the foot.

    Most printers that I know of (That have built in fonts) will accept ASCII data, just like your LCD. (Especially the Dot Matrix). But if they do not have the built in fonts, you will have a tremendous amount of overhead to create and use the fonts. Which IMO is out of the question for the PICs.

    I was probably unclear...sorry.

    Dwayne
    Last edited by Dwayne; - 26th July 2005 at 19:19.
    Ability to Fly:
    Hurling yourself towards the ground, and missing.

    Engineers that Contribute to flying:
    Both optimists and pessimists contribute to the society. The optimist invents the aeroplane, the pessimist the parachute

    Pilots that are Flying:
    Those who know their limitations, and respect the green side of the grass...

  8. #8
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762

    Default

    Quote Originally Posted by Dwayne
    Yes, very easily done...IF ( I say IF) your printer accepts standard ASCII codes...with BUILT IN FONTS.
    Ok, let's assume the target printer has built in fonts.

    Do you have a working code example?

    Quote Originally Posted by Dwayne
    Yes, very easily done...
    come on, it's easy, share the code...

    ;-)
    regards

    Ralph

    _______________________________________________
    There are only 10 types of people:
    Those who understand binary, and those who don't ...
    _______________________________________________



  9. #9
    Join Date
    Dec 2003
    Location
    Wichita KS
    Posts
    511

    Default

    Sending standard ASCII code to the PORTB, just like your LCD.

    ASCII in ASCII out...like a ASCII delimited file.

    PSUEDO CODE

    InputData var byte
    Output Var byte

    Loop:

    Read Inputdata (whether you use SERIN or any other input data method)
    Portb=Inputdata
    toggle your datapin to send your ASCII byte.

    goto Loop

    Made one of these programs many years ago to test printers in DOS format...

    If you take a look at a OLD printer control manual, you will see that Line feeds are Decimal 10... I think top of page was Decimal 12 contolling similar to the LCD...

    Either I am misunderstanding something, or we are not on the same frequency at this very minute Maybe I should go back to bed?

    DWayne
    Ability to Fly:
    Hurling yourself towards the ground, and missing.

    Engineers that Contribute to flying:
    Both optimists and pessimists contribute to the society. The optimist invents the aeroplane, the pessimist the parachute

    Pilots that are Flying:
    Those who know their limitations, and respect the green side of the grass...

  10. #10
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762

    Default

    Dwayne,

    Either I am misunderstanding something, or we are not on the same frequency at this very minute...
    let's try to get you back on track...

    of course, driving a standard parallel (or serial) printer requires only a few lines of PBP code.

    But here we are talking about USB
    regards

    Ralph

    _______________________________________________
    There are only 10 types of people:
    Those who understand binary, and those who don't ...
    _______________________________________________



  11. #11
    ephesus's Avatar
    ephesus Guest

    Default

    ralph,
    Right, we're talking how to drive USB printers especially inkjet or
    laser ones for contiued models. Simply to print a complete ascii A4 page.
    First we need some specifications of thoose printers, if available standart
    page languages or easiest way to do. Then creating a driver software using pbp USB in/out statements.
    Regards

    Serkan

  12. #12
    Join Date
    Oct 2004
    Location
    Italy
    Posts
    695

    Default

    Hi Serkan,

    I understand you are currently using a printer with a serial port.

    A simple solution could be a DOS compatible printer with a centronics parallel port.

    Some low cost printer are GDI printer only. (Windows host-based printers).
    These printes will not work if connected to a DOS based PC or microcontroller.

    For a quick test, boot the PC from DOS and type the DOS internal command:

    DIR *.* > PRN

    (Make sure the parallel port is set as "Normal" in PC BIOS).

    If you see the output on paper the printer understands "text only".

    If the first test is OK, then try to see if the printer supports the
    Epson Escape Codes or the Hewlett-Packard PCL commands.


    Interface to your portable recorder:

    Using a PIC, build a serial to parallel converter. The centronics pin 18 of
    the printer will supply the necessary current for the PIC inside the converter.

    See this link about PIN 18, search text "VCC (aka SLCT)".
    http://nemesis.lonestar.org/referenc...entronics.html

    This solution is compatible with the current version of your portable recorder.


    Best regards,

    Luciano
    Last edited by Luciano; - 27th July 2005 at 11:35.

  13. #13
    ephesus's Avatar
    ephesus Guest

    Default

    Hi Luciano,
    I think this topic will be closed by the way that you submitted.
    Yes, I'd better to built a serial/parallel converter to drive commonly used, low cost parallel printers.
    So we'll never use a pic18f as a host.
    Thanks yo very much.

    Serkan

  14. #14
    Join Date
    Dec 2003
    Location
    Wichita KS
    Posts
    511

    Default

    Hello Serkan,

    Serkan>>Right, we're talking how to drive USB printers especially inkjet or
    laser ones for contiued models. Simply to print a complete ascii A4 page.
    First we need some specifications of thoose printers, if available standart
    page languages or easiest way to do. Then creating a driver software using pbp USB in/out statements.<<

    This will probably not happen... overhead and stuff is too great...As you have already said and I have said...you will have to create fonts and the works...Each printer is different... same brand printers are sometimes somewhat compatible.

    Your only hope relys upon the printer having its own built in fonts. usually by rule of thumb, if it has its own built in fonts, it can do pure ASCII input/output....Like the matrix printers.

    Dwayne
    Ability to Fly:
    Hurling yourself towards the ground, and missing.

    Engineers that Contribute to flying:
    Both optimists and pessimists contribute to the society. The optimist invents the aeroplane, the pessimist the parachute

    Pilots that are Flying:
    Those who know their limitations, and respect the green side of the grass...

  15. #15
    bot402's Avatar
    bot402 Guest

    Default

    Microcontroller USB implementation is peripheral only. In order to control a Printer or any other USB device requires a HOST.

    The only thing that a host and a peripheral has in common is the name USB. They are totally different things and are not interchangeable.

    So the bottom line is you cannot control a USB printer from a PICmicro unless you interface using a host peripheral such as ones supplied by Cypress or Philips etc. These are not simple devices to control and a knowledge of programming and USB is required. There is also the USBWIZ with its simple interface, but this may be overkill.
    Last edited by bot402; - 27th July 2005 at 16:24.

  16. #16
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898

    Default

    This is what i thought. Thanks Bot402 for confirmation of my First. and Second post

    But your explanation is much better than mine
    Last edited by mister_e; - 27th July 2005 at 16:47.
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  17. #17
    ephesus's Avatar
    ephesus Guest

    Default

    "Microcontroller USB implementation is peripheral only.",bot402,
    it's clear to understand..
    Thanks friends..
    Serkan

  18. #18
    maheshmurty's Avatar
    maheshmurty Guest

    Default Re: pic18f driving usb printers

    I wanted to ask then what is USB OTG. I read some articles over the web & came to know that USB OTG helps an embedded device to configure both as a device / host. So can't we do anything with it?

  19. #19
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    2,253

    Default Re: pic18f driving usb printers

    Until Microchip (and probably PBP) announce they support USB on the go specification for 16F and 18F, our PICs will remain USB slaves and won't be able to act as USB masters.

    Only the host can schedule the configuration and data transfers over the link. The devices cannot initiate data transfers, they only respond to requests given by a host. OTG introduces the concept that a device can perform both the master and slave roles
    http://en.wikipedia.org/wiki/USB_On-The-Go

    Look at the PIC 24F family of products, they have OTG specs.

    PIC24FJ256DA210
    Universal Serial Bus Features:
    • USB v2.0 On-The-Go (OTG) Compliant
    • Dual Role Capable – Can act as either Host or Peripheral
    • Low-Speed (1.5 Mbps) and Full-Speed (12 Mbps) USB Operation in Host mode
    • Full-Speed USB Operation in Device mode
    Robert
    Last edited by Demon; - 22nd March 2012 at 02:10.

Similar Threads

  1. USB CDC Communications for Dummies!
    By Squibcakes in forum USB
    Replies: 104
    Last Post: - 15th January 2014, 13:43
  2. USB Bootloader.
    By HenrikOlsson in forum USB
    Replies: 22
    Last Post: - 2nd May 2013, 02:46
  3. Simple USB Comms Problem
    By awmt102 in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 6th January 2010, 20:17
  4. One USB keyboard to Two USB Ports
    By picnaut in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 11th June 2009, 00:04
  5. USB PIC without USB Connection
    By Tissy in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 26th December 2005, 17:39

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts