GCC Expert 24 Cutter Notes

Serial Connection

The plotter has a USB port, but it doesn’t show up as a USB serial device, and I can’t be bothered to figure it out when a perfectly good serial port is right beside the USB port.

I can’t find any documentation on how to change the serial port parameters, so it seems to be stuck at 9600N81, which is at least reasonable. The plotter needs RTS to be asserted, or it won’t talk to you. The VLDC2 software requires a full hardware handshake, so if you’re trying to use that, make sure to use a fully wired cable, and a USB to serial device that supports the RTS, CTS, DTR, and DSR pins.

HP-GL Commands

While the serial port supports HP-GL, GCC provides absolutely no documentation on it. Of course it does all the usual HPGL things, but any model-specific stuff is completely undocumented. So far, I’ve been able to deduce the existence of two non-standard HP-GL commands from looking at the output of Easy Cut Studio 6:

IN;PA;AS0.7;TO0.500;AB;SP0;TO0.500;VS15;FS70;...

Breaking it down:

IN;        Initialize
PA;        Plot Absolute
AS0.7;     Acceleration Select
TO0.500;   *** Non-Standard: Cutter Offset 0.500mm  
AB;        *** Non-Standard: ???
SP0;       Select Pen 0
TO0.500;   *** Non-Standard: Cutter Offset 0.500mm (again?)
VS15;      Velocity Select
FS70;      Force Select

Settings

The remainder of this document describes how settings are configured. This was determined by watching the conversation between GCC’s VLCD2 software and the plotter. VLCD3 exists, but it always crashed in my test environment when attempting to connect the plotter over serial.

Reading Settings

>> OH;
<< 0,0,1000000,7454\r

>> \x1b.R1:
<< OR1,40,81,0,1,0,0,1;\r

>> \x1b.R3:
<< OR3,16214,16387;\r

>> \x1b.R4:
<< OR4,GCC,Expert 24 ,3.01-01,Dec 31 2013,15:08:50;\r

R1 is the most interesting, containing the various settings we want to modify.

R3 contains the X and Y calibration values, in some weird units, presumably steps.

R4 contains model and version information

R1 Breakdown

OR1,<Media Weight>,<Blade Force>,<Blade Offset>,<Vector Quality>,<Vector Smooth>,<Auto Unroll>,1;\r

Media Weight
    light = 40
    heavy = 3

Blade Force
    blade force in grams

Blade Offset
    blade offset in micrometers

Vector Quality
    fine = 1
    draft = 3

Auto Unroll
    disabled = 0
    enabled = 1

Vector Smooth
    disabled = 0
    enabled = 1

Example

This is a capture of the dialog between VLCD2 and a Expert 24 cutter.

>> = from host
<< = from cutter

>> OH;
<< 0,0,1000000,7454\r

>> \x1b.R1:
<< OR1,40,81,0,1,0,0,1;\r

>> \x1b.R3:
<< OR3,16214,16387;\r

>> \x1b.R4:
<< OR4,GCC,Expert 24 ,3.01-01,Dec 31 2013,15:08:50;\r

Writing Settings

Breakdown

\x1b.C1;<Register>;<Value>:

Register 16 - Blade Offset
    0.000 = 0
    0.175 = 1
    0.250 = 2
    0.275 = 3
    0.300 = 4
    0.500 = 5
    0.750 = 6
    1.000 = 7

Register 22 - Cut Force (integer)
    value = cut force in grams

Register 17 - Media Weight
    light = 1
    heavy = 0

Register 20 - Auto Unroll
    disable = 0
    enable = 1

Register 18 - Vector Quality
    draft = 1
    fine = 0

Register 19 - Vector Smooth
    disable = 0
    enable = 1

Register 21 - Unknown, maybe the sheet feed/roll feed toggle, but that isn't available on my machine
    always = 1

TODO: I’m assuming that writing to register 0 triggers a write to EEPROM, this needs to be tested.

Example

\x1b.C1;16;0:
\x1b.C1;17;1:
\x1b.C1;18;0:
\x1b.C1;19;0:
\x1b.C1;20;0:
\x1b.C1;21;1:
\x1b.C1;22;81:
\x1b.C1;0;:

Calibration

WARNING: The Expert 24 has X and Y transposed. X represents movement of the feed rollers, Y represents movement of the carriage. I’m assuming that when doing the calibration process, knowing this is important.

  1. Command the plotter to draw a square of some size. GCC uses 100mm.
  2. Measure the square
  3. Calculate calibration values thusly:

    calX = 16214 # first value read from R3
    calY = 16387 # second value read from R3
    squareSide = 100
    calX = trunc(calX*(measuredX/squareSide))
    calY = trunc(calY*(measuredY/squareSide))
    
  4. Write the calibration values to the plotter:

    \x1b.C6;1;<calX>:\x1b.C6;0;<calY>:\x1b.C1;0;:\x1b.C6;2;:PD;PU;
    

I’m not sure why there’s a pen down/up at the end, I’m assuming they’re using that as an indicator that the command is complete. I also don’t know what the write to C6.2 is there for, but I have to assume it’s required. Looking at a disassembly of VLCD2, there are no conditionals around the insertion of the C1.0 and C6.2 commands in the string, so they’re always there.

Example

Calibrate for 100x100:

\x1b.C6;1;16214:\x1b.C6;0;16387:\x1b.C1;0;:\x1b.C6;2;:PD;PU;