2

I have recently connected a Bixolon SRP-350 Receipt printer to my Ubuntu box via parallel port. I was able to use the CUPS server to get the printer installed with the associated .ppd file.

Futhermore, I have been playing around with sending raw, unformatted data to the connected port and observing results.

For example, at the terminal, I must first switch to root user sudo su -(not sure why sudo does not work properly). Then, I can send individual lines with echo "TEST LINE" > /dev/lp0, which will print the line on the printer and advance the page upward. I can also go interactive with it by using cat > /dev/lp0 and submitting line by line.

I noticed that each command gets send when I issue a return (Enter), and the printer responds accordingly. I then went ahead and looked up the command sheet for this model printer. I was able to get the majority of the ESC commands working by sending ^[ command in the same manner above.

I am trying to issue some of the other commands to the printer, but I am unsure as to how to trigger them. I have attached the command sheet. Command Sheet

Thanks for any guidance

  • Dan

1 Answer 1

2

Like ESC, the other commands can usually be generated while using cat by pressing Ctrl with the correct character. This is the character with an ASCII value 0100 octal greater than the control code. The ASCII table in man ascii is conveniently laid out for this:

   Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
   ────────────────────────────────────────────────────────────────────────
   000   0     00    NUL '\0' (null character)   100   64    40    @
   001   1     01    SOH (start of heading)      101   65    41    A
   002   2     02    STX (start of text)         102   66    42    B
   003   3     03    ETX (end of text)           103   67    43    C
   004   4     04    EOT (end of transmission)   104   68    44    D
   005   5     05    ENQ (enquiry)               105   69    45    E
   006   6     06    ACK (acknowledge)           106   70    46    F
   007   7     07    BEL '\a' (bell)             107   71    47    G
   010   8     08    BS  '\b' (backspace)        110   72    48    H
   011   9     09    HT  '\t' (horizontal tab)   111   73    49    I
   012   10    0A    LF  '\n' (new line)         112   74    4A    J
   013   11    0B    VT  '\v' (vertical tab)     113   75    4B    K
   014   12    0C    FF  '\f' (form feed)        114   76    4C    L
   015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M
   016   14    0E    SO  (shift out)             116   78    4E    N
   017   15    0F    SI  (shift in)              117   79    4F    O
   020   16    10    DLE (data link escape)      120   80    50    P
   021   17    11    DC1 (device control 1)      121   81    51    Q
   022   18    12    DC2 (device control 2)      122   82    52    R
   023   19    13    DC3 (device control 3)      123   83    53    S
   024   20    14    DC4 (device control 4)      124   84    54    T
   025   21    15    NAK (negative ack.)         125   85    55    U
   026   22    16    SYN (synchronous idle)      126   86    56    V
   027   23    17    ETB (end of trans. blk)     127   87    57    W
   030   24    18    CAN (cancel)                130   88    58    X
   031   25    19    EM  (end of medium)         131   89    59    Y
   032   26    1A    SUB (substitute)            132   90    5A    Z
   033   27    1B    ESC (escape)                133   91    5B    [
   034   28    1C    FS  (file separator)        134   92    5C    \  '\\'
   035   29    1D    GS  (group separator)       135   93    5D    ]
   036   30    1E    RS  (record separator)      136   94    5E    ^
   037   31    1F    US  (unit separator)        137   95    5F    _

So, for example, GS would be Ctrl+], and FS should be Ctrl+\.

However there is a catch. Ctrl+\, and a few others, will be intercepted by the terminal.

There is however a much better way. You can send all of the commands by using the shell builtin echo -e with the string \x?? where ?? is the correct hex code (to the left of the control code name in the table above). This backslash will also need to be escaped from the shell.

You can also avoid sending a newline by using echo -ne.

So again for FS, to send the command "FS p (print NV bit image)" you could type:

#          FS p
echo -ne \\x1cp > /dev/lp0

or escaping with quotes instead of another backslash:

echo -ne '\x1cp' > /dev/lp0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .