public string GetVersions()
        {
            string versions = "";

            Job            j = new Job();
            ZMotifGraphics g = new ZMotifGraphics();

            try
            {
                byte major, minor, build, revision;

                if (!Connect(ref j))
                {
                    _msg = "Unable to open device [" + _deviceName + "]";
                    return("");
                }

                if ((_alarm != 0) && (_alarm != 4016))
                {
                    _msg = "Printer is in alarm condition";
                    Disconnect(ref j);
                    return("");
                }

                g.GetSDKVersion(out major, out minor, out build, out revision);
                versions = "Graphic SDK = " + major.ToString() + "." +
                           minor.ToString() + "." +
                           build.ToString() + "." +
                           revision.ToString() + ";  ";

                j.GetSDKVersion(out major, out minor, out build, out revision);
                versions += "Printer SDK = " + major.ToString() + "." +
                            minor.ToString() + "." +
                            build.ToString() + "." +
                            revision.ToString() + ";  ";


                string fwVersion, junk;
                j.Device.GetDeviceInfo(out junk, out junk, out junk, out junk, out junk, out junk,
                                       out fwVersion, out junk, out junk, out junk);

                versions += "Firmware = " + fwVersion;
            }
            catch (Exception e)
            {
                versions = "Exception: " + e.Message;
            }
            finally
            {
                g = null;
                Disconnect(ref j);
            }

            return(versions);
        }