Ptrobot Api: Dll-Based Application Programming Interface
Ptrobot Api: Dll-Based Application Programming Interface
Ptrobot Api: Dll-Based Application Programming Interface
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 3 of 51
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 4 of 51
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 5 of 51
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 6 of 51
1 PTRobot Description
1.1 Description
PTRobot is an API that allows developers to add robotic support for Primera duplicators to their own Windows
applications. PTRobot consists of several Dynamic Link Libraries (DLLs) that application developers can
utilize to move discs automatically (e.g. move a disc from an input bin into the recorder, etc.) and also provides
the capability to print on the CD/DVD through the Surething CD Labeler application. PTRobot provides an
easy method to create automated CD/DVD printing and/or recording applications (recording capability is not
provided in PTRobot – for recording capability developers should use the PTBurn SDK from Primera).
Currently, PTRobot provides support for the Disc Publisher II, Disc Publisher PRO, Disc Publisher XR, Disc
Publisher XRP, and Disc Publisher SE, Disc Publisher SE-3, Disc Publisher Pro Xi-Series, Disc Publisher 4100
Series and Disc Publisher 4200 Series.
IMPORTANT NOTE: The PTRobot API functions use the WINAPI (which is _stdcall) calling convention.
1.2 Usage
Below is PSUEDO-CODE example for how a calling application should use PTRobot to
implement robotics into its application.
At program startup:
PTRobot_Initialize(..)
PTRobot_EnumRobots(..)
- if the number of robots is greater than 1 then the calling application will need to
provide some logic/ui to determine which robot to use. The app can use
PTRobot_GetRobotInfo(..) to get details about each robot.
PTRobot_EnumDrives(..) or PTRobot_EnumDrivesWithList(..)
- This will cause PTRobot to determine which drives are robotically controlled by
enumerating the drives themselves (PTRobot_EnumDrives(..)) or based off a list of drives
passed in (PTRobot_EnumDrivesWithList(..))
PTRobot_GetRobotStatus(..)
- This would be called in a loop until a system error occurred or the system is idle.
(NOTE: do not call in too tight of a loop – e.g. every 500ms or 1 second).
…Client application will now perform operations on the disc in the drive (e.g. record on
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 7 of 51
the disc).
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 8 of 51
2 API Functions
2.1 PTRobot Setup Functions
2.1.1 PTRobot_Initialize
///////////////////////////
//
// PTRobot_Initialize
//
// Description:
// Function to initialize internal data structures of
// the PTRobot module.
// Params:
// None
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_INTERNAL if an internal error occurred.
//
///////////////////////////
DWORD WINAPI PTRobot_Initialize();
2.1.2 PTRobot_Destroy
///////////////////////////
//
// PTRobot_Destroy
//
// Description:
// Function to destroy internal data structures of
// the PTRobot module.
// Params:
// None
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
//
///////////////////////////
DWORD WINAPI PTRobot_Destroy();
2.1.3 PTRobot_SetupDebugging
///////////////////////////
//
// PTRobot_SetupDebugging
//
// Description:
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 9 of 51
2.1.4 PTRobot_EnumRobots
///////////////////////////
//
// PTRobot_EnumRobots
//
// Description:
// Function to enumerate the Robots on the system.
// Params:
// phRobots points to an array of HANDLEs to store
// the Robots found.
// pdwNumRobots points to a DWORD containing the number of HANDLEs
// in the phRobots array. This value is an input
// and an output. The user should specify the size
// (number of HANDLEs) of the phRobots array on input.
// The value of the pdwNumRobots on output will be the
// number of robots found.
//
// Notes:
// Both params will be updated upon successful completion of this
// command. phRobots will contain handles to robots connected to
// this system. pdwNumRobots will will be updated with the number of
// robots found.
// Also, note that the hDrives[] array in the PTRobotInfo will not be
// valid until PTRobot_EnumDrives is called.
//
// Return:
// PTROBOT_OK if Successful
// PTROBOT_INVALID_ROBOT if no robots found
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_OVERFLOW if the number of robots found is > the value in
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 10 of 51
// pdwNumRobots
//
///////////////////////////
DWORD WINAPI PTRobot_EnumRobots(HANDLE * phRobots, DWORD * pdwNumRobots);
2.1.5 PTRobot_EnumDrives
///////////////////////////
//
// PTRobot_EnumDrives
//
// Description:
// Function to enumerate the drives on the system and
// determine which drives are under the control of this
// robot.
// Params:
// hRobot Handle to the robot to enumerate the drives of.
// phDrives points to an array of DWORDS to store
// the Drives found.
// pdwNumDrives points to a DWORD containing the number of HANDLEs
// in the phDrives array. This value is an input
// and an output. The user should specify the size
// (number of HANDLEs) of the phDrives array on input.
// The value of the pdwNumDrives on output will be the
// number of drives found.
//
// Notes:
// Both params will be updated upon successful completion of this
// command. phDrives will contain handles to drives connected to
// this system. pdwNumDrives will will be updated with the number of
// drives found.
//
// The format of the drive handles is the following:
//
// The least significant byte should contain the drive letter, the
// other three bytes should contain the SCSI triple.
// The drive can be identified by either of these methods.
//
// For Example: 0x01030044 would identify a drive with:
// Host=1, ID = 3, LUN = 0, and a drive letter of "D"
//
// To identify the same drive the client could pass
// down 0x01030000, 0x00000044, or 0x01030044.
//
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence or after
// PTRobot_EnumDrivesWithList
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_OVERFLOW if the number of drives found is > the value in
// pdwNumDrives
// PTROBOT_MULTDRIVES if the module cannot determine which drives are
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 11 of 51
2.1.6 PTRobot_EnumDrivesWithList
///////////////////////////
//
// PTRobot_EnumDrivesWithList
//
// Description:
// Function to pass down drives enumerated by the calling app for
// PTRobot to use in determining which drives are robotically controlled.
// This is an alternative function to PTRobot_EnumDrives.
// Params:
// hRobot Handle to the robot.
// phDrives points to an array of HANDLEs that contains the
// drive handles of the drives in the system
// pdwNumDrives points to a DWORD containing the number of HANDLEs
// in the phDrives array.
// phRobotDrives points to an array of HANDLEs that contains the
// drive handles of the drives contained in this robot.
// pdwNumRobotDrives points to a DWORD containing the number of drives
// in the phRobotDrives array.
//
// Notes:
// phRobotDrives and pdwNumRobotDrives will be updated upon successful
// completion of this command. phRobotDrives will contain
// handles to drives contained in the robot. pdwNumRobotDrives will be
// updated with the number of drives found.
//
// The format of the drive handle is the following:
//
// The least significant byte should contain the drive letter, the
// other three bytes should contain the SCSI triple. The drive can
// be identified by either of these methods.
//
// For Example: 0x01030044 would identify a drive with:
// Host=1, ID = 3, LUN = 0, and a drive letter of "D"
//
// To identify the same drive the client could pass down
// 0x01030000, 0x00000044, or 0x01030044.
//
// This function should be called instead of PTRobot_EnumDrives if the
// calling application wants to enumerate the drives and have PTRobot
// select the Robotically controlled drives from the list the calling
// application provides.
//
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence or after
// PTRobot_EnumDrives
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 12 of 51
2.1.7 PTRobot_SetRoboticDrive
///////////////////////////
//
// PTRobot_SetRoboticDrive
//
// Description:
// Function to set a drive's position within the duplicator when
// the PTROBOT_MULTDRIVES error is returned from either of the
// EnumDrives functions.
// Params:
// hRobots Handle to the Robot.
// hDrive Handle to the Drive
// dwColIndex Index identifying the column that the drive is in.
// (0 based where 0 is the left-most column)
// dwRowIndex Index identifying the row that the drive is in.
// (0 based where 0 is the top row)
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_INVALID_DRIVE if the drive handle is invalid
// PTROBOT_INVALID_DRIVE_POSITION if column/row ids are invalid.
//
///////////////////////////
DWORD WINAPI PTRobot_SetRoboticDrive(HANDLE hRobot, HANDLE hDrive, DWORD dwColIndex,
DWORD dwRowIndex);
2.1.8 PTRobot_SetOpenCloseFunction
///////////////////////////
//
// PTRobot_SetOpenCloseFunction
//
// Description:
// Function to set a calling application provided drive open/close
// function.
// Params:
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 13 of 51
2.1.9 PTRobot_SetRobotOptions
///////////////////////////
//
// PTRobot_SetRobotOptions
//
// Description:
// Function to set the current robot options.
// Params:
// hRobot Handle to the robot
// dwRobotOptions DWORD containing the options to set.
// See "Robot Options" defines above
// Notes:
// You should call PTRobot_GetRobotOptions to get the current Options
// and then set the options you want to change prior to calling
// this function.
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_UNSUPPORTED_OPTION if the option is unsupported on that robot
//
///////////////////////////
DWORD WINAPI PTRobot_SetRobotOptions(HANDLE hRobot, DWORD dwRobotOptions);
2.1.10 PTRobot_GetRobotOptions
///////////////////////////
//
// PTRobot_GetRobotOptions
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 14 of 51
//
// Description:
// Function to get the current robot options.
// Params:
// hRobot Handle to the robot
// pdwRobotOptions points to a DWORD.
// See "Robot Options" defines above
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
//
///////////////////////////
DWORD WINAPI PTRobot_GetRobotOptions(HANDLE hRobot, DWORD *pdwRobotOptions);
2.1.11 PTRobot_GetErrorString
///////////////////////////
//
// PTRobot_GetErrorString
//
// Description:
// Function to get the error string for a specific system
// error or PTRobot API Return error.
//
// Params:
// hRobot Handle to the robot (from EnumRobots)
// (Use NULL only if no handle has been obtained yet)
// dwErrorNum System Error Number
// pwszErrorString Error string returned
// (Note wide characters. Calling application must
// allocate this memory).
// dwMaxLength Length of buffer pointed to by pwszErrorString
// (number of wide characters)
// dwLanguage Language of string to return (See "Languages"
// definitions above)
//
// Notes:
// dwErrorNum can be either dwSystemError from PTRobotStatus structure (which is
// returned by PTRobot_GetRobotStatus()) or dwErrorNum can be an error returned
// from a PTRobot_xxxxx call (e.g. PTROBOT_INVALID_ROBOT).
//
//
// Return:
// PTROBOT_OK if Successful
// PTROBOT_INVALID_LANG if language is invalid
// PTROBOT_INVALID_ERROR if error is invalid
// PTROBOT_INTERNAL if buffer is undersized, etc.
//
///////////////////////////
DWORD WINAPI PTRobot_GetErrorString(HANDLE hRobot, DWORD dwErrorNum,
WCHAR * pwszErrorString, DWORD dwMaxLength,
DWORD dwLanguage);
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 15 of 51
2.1.12 PTRobot_SetApplicationID
///////////////////////////
//
// PTRobot_SetApplicationID
//
// Description:
// Function to set the Application ID.
// The ID value is assigned for each application by Primera as needed.
// Only applications that require special functionality will require this.
// (note most applications will not need this).
//
// Params:
// dwAppID Application ID specified by Primera
//
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_INTERNAL if an internal error occurred
//
///////////////////////////
DWORD WINAPI PTRobot_SetApplicationID( DWORD dwAppID );
2.2.2 PTRobot_GetRobotInfo
///////////////////////////
//
// PTRobot_GetRobotInfo
//
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 16 of 51
// Description:
// Function to get the robot info for a particular
// robot handle.
// Params:
// hRobot Handle to the robot (from EnumRobots)
// pRobotInfo points to a PTRobotInfo structure.
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
//
///////////////////////////
DWORD WINAPI PTRobot_GetRobotInfo(HANDLE hRobot, PTRobotInfo *pRobotInfo);
2.2.3 PTRobot_GetRobotStatus
///////////////////////////
//
// PTRobot_GetRobotStatus
//
// Description:
// Function to get the current status for a particular
// robot.
// Notes: Do NOT call in too tight of a loop (e.g. do not call more often
// than every 500ms or so).
// Params:
// hRobot Handle to the robot (from EnumRobots)
// pRobotStatus points to a PTRobotStatus structure.
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
//
///////////////////////////
DWORD WINAPI PTRobot_GetRobotStatus(HANDLE hRobot, PTRobotStatus *pRobotStatus);
2.2.4 PTRobot_GetMediaInfo
///////////////////////////
//
// PTRobot_GetMediaInfo
//
// Description:
// This function will get information on the media that
// is loaded in the drive.
// Params:
// hDrive Handle to the drive (from EnumDrives)
// PTMediaInfo * points to Media info structure (see section 3.5)
// (the structure will be filled in if successful)
// Notes:
// Return:
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 17 of 51
//
// PTROBOT_OK if successful and media is found and the media is valid.
// PTROBOT_INVALID_MEDIA if the media is not valid
// PTROBOT_NO_MEDIA if no media is found
// PTROBOT_INVALID_DRIVE if the drive is not valid
// PTROBOT_INTERNAL some other error
//
///////////////////////////
DWORD WINAPI PTRobot_GetMediaInfo(HANDLE hDrive, PTMediaInfo * pDiscInfo );
2.2.5 PTRobot_GetRobotInfo2
///////////////////////////
//
// PTRobot_GetRobotInfo2
//
// Description:
// Function to get ADDITIONAL robot info for a particular
// robot handle.
// Params:
// hRobot Handle to the robot (from EnumRobots)
// pRobotInfo2 points to a PTRobotInfo structure.
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
//
///////////////////////////
DWORD WINAPI PTRobot_GetRobotInfo2(HANDLE hRobot, PTRobotInfo2 *pRobotInfo2);
2.2.6 PTRobot_GetRobotStatus2
///////////////////////////
//
// PTRobot_GetRobotStatus2
//
// Description:
// Function to get the Additional current status for a particular
// robot.
// Notes: Do NOT call in too tight of a loop (e.g. do not call more often
// than every 500ms or so).
// Params:
// hRobot Handle to the robot (from EnumRobots)
// pRobotStatus2 points to a PTRobotStatus2 structure.
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_BUSY if no response from robot
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 18 of 51
//
///////////////////////////
DWORD WINAPI PTRobot_GetRobotStatus2(HANDLE hRobot, PTRobotStatus2 *pRobotStatus2);
2.2.7 PTRobot_GetManufactureInfo
///////////////////////////
//
// PTRobot_GetManufactureInfo
//
// Description:
// Function to get manufacture info
// Params:
// hRobot Handle to the robot (from EnumRobots)
// pPTManufactureInfo points to a PTManufactureInfo structure.
// Notes:
//
// Return:
// PTROBOT_OK if Successful (and fills in pPTManufactureInfo)
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if invalid robot specified
//
///////////////////////////
DWORD WINAPI PTRobot_GetManufactureInfo( HANDLE hRobot, PTManufactureInfo *
pManufactureInfo);
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 19 of 51
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_INVALID_DRIVE if the drive handle is invalid
// PTROBOT_INVALID_LOCATION if the location is invalid
//
///////////////////////////
DWORD WINAPI PTRobot_LoadDrive(HANDLE hRobot, HANDLE hDrive, DWORD dwFromLocation, DWORD
dwClearDrive);
2.3.2 PTRobot_LoadPrinter
///////////////////////////
//
// PTRobot_LoadPrinter
//
// Description:
// Function to load the printer from an input bin location
// Params:
// hRobot Handle to the robot (from EnumRobots)
// dwFromLocation DWORD containing the "from" location
// LOCATION_AUTO = Automatically choose the bin
// 1 = Bin1 (right-most bin)
// 2 = Bin2
// ...
//
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_NO_PRINTER if the robot doesn't have a printer
// PTROBOT_INVALID_LOCATION if the location is invalid
//
///////////////////////////
DWORD WINAPI PTRobot_LoadPrinter(HANDLE hRobot, DWORD dwFromLocation);
2.3.3 PTRobot_LoadPrinterFromDrive
///////////////////////////
//
// PTRobot_LoadPrinterFromDrive
//
// Description:
// Function to load the printer from a drive
// Params:
// hRobot Handle to the robot (from EnumRobots)
// hDrive Handle to the drive (from EnumDrives)
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 20 of 51
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_INVALID_DRIVE if the drive handle is invalid
// PTROBOT_NO_PRINTER if the robot doesn't have a printer
//
///////////////////////////
DWORD WINAPI PTRobot_LoadPrinterFromDrive(HANDLE hRobot, HANDLE hDrive);
2.3.4 PTRobot_UnLoadDrive
///////////////////////////
//
// PTRobot_UnLoadDrive
//
// Description:
// Function to unload the drive to an output position.
// Params:
// hRobot Handle to the robot (from EnumRobots)
// hDrive Handle to the drive (from EnumDrives)
// dwToLocation DWORD containing the "to" location
// LOCATION_AUTO = Automatically choose the bin
// 1 = Bin1 (right-most bin)
// 2 = Bin2
// ...
// LOCATION_REJECT = Reject
//
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_INVALID_DRIVE if the drive handle is invalid
// PTROBOT_INVALID_LOCATION if the location is invalid
//
///////////////////////////
DWORD WINAPI PTRobot_UnLoadDrive(HANDLE hRobot, HANDLE hDrive, DWORD dwToLocation);
2.3.5 PTRobot_UnLoadPrinter
///////////////////////////
//
// PTRobot_UnLoadPrinter
//
// Description:
// Function to unload the printer to an output position.
// Params:
// hRobot Handle to the robot (from EnumRobots)
// dwToLocation DWORD containing the "to" location
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 21 of 51
2.3.6 PTRobot_MoveDiscBetweenLocations
///////////////////////////
//
// PTRobot_MoveDiscBetweenLocations
//
// Description:
// Function to move disc from one bin to another bin
// Params:
// hRobot Handle to the robot (from EnumRobots)
// dwFromLocation DWORD containing the from location
// 1 = Bin1 (right-most bin)
// 2 = Bin2
// ...
// dwToLocation DWORD containing the "to" location
// 1 = Bin1 (right-most bin)
// 2 = Bin2
// ...
// LOCATION_REJECT = Reject
//
// Notes:
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_INVALID_LOCATION if the location is invalid
//
///////////////////////////
DWORD WINAPI PTRobot_MoveDiscBetweenLocations(HANDLE hRobot, DWORD dwFromLocation, DWORD
dwToLocation)
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 22 of 51
2.3.7 PTRobot_PrintFile
///////////////////////////
//
// PTRobot_PrintFile
//
// Description:
// Function to print a Surething image (.STD), raster image (.JPG, .BMP, .TIF,
// etc.), or .PRN file to the printer.
// Params:
// hRobot Handle to the robot (from EnumRobots)
// tszFile File to print (.STD, .PRN, .JPG, .BMP)
// dwPrintIndex Print index for multiple print jobs.
// Notes:
// The dwPrintIndex is used when printing an .STD file with merge fields. This
// value represents which merge record to use for this print.
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_NO_PRINTER if the robot doesn't have a printer
// PTROBOT_PRN_INVALID if the prn file is not valid for the printer
// PTROBOT_PRINTFILE_NOT_FOUND if the file doesn't exist
// PTROBOT_PRINTAPP_NOT_INSTALLED if the required print application is not
// installed.
//
///////////////////////////
DWORD WINAPI PTRobot_PrintFile(HANDLE hRobot, TCHAR * tszFile, DWORD dwPrintIndex);
2.3.8 PTRobot_PrintFileWithMerge
///////////////////////////
//
// PTRobot_PrintFileWithMerge
//
// Description:
// Function to print a Surething .STD file that has Merge Text/Photos.
// The Merge Text and/or Photos can be specified in a variable number of
// arguments passed into this function. The Surething file should be designed
// with the same number of merge strings passed in here.
//
// Params:
// hRobot Handle to the robot (from EnumRobots)
// tszFile Surething (.STD) File to print.
// dwNumMergeStrings Number of merge strings to follow
// ... Variable number of pointers to TCHAR strings
// These are the merge strings or photo names (including
// path) to be printed.
// NOTE: For the strings that follow dwMergeStrings to
// be used, the user must have “Set Merge File” within
// the .STD file
// ** Limit each string to 256 characters or less **
//
// Return:
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 23 of 51
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_NO_PRINTER if the robot doesn't have a printer
// PTROBOT_PRINTFILE_NOT_FOUND if the file doesn't exist
// PTROBOT_PRINTAPP_NOT_INSTALLED if the required print application is not
// installed.
// PTROBOT_PRINTFILE_INVALID if the filename is not .STD
//
///////////////////////////
DWORD WINAPI PTRobot_PrintFileWithMerge(HANDLE hRobot,
TCHAR * tszFile,
DWORD dwNumMergeStrings,
...);
2.3.9 PTRobot_SetPrinterSettings
///////////////////////////
//
// PTRobot_SetPrinterSettings
//
// Description:
// Function to set some printer driver settings
// Params:
// hRobot Handle to the robot (from EnumRobots)
// pPrinterSettings points to a PTPrinterSettings structure.
//
// Notes:
// If this function is not called the default print settings will be used. This
// function will change the system default print settings.
// Starting with Version 1.2.0 the system default print settings will be
// restored after calling PTRobot_PrintFile() or PTRobot_PrintFileWithMerge().
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_NO_PRINTER if the robot doesn't have a printer
// PTROBOT_INVALID_PRINTER_SETTINGS if the printer settings are invalid
//
///////////////////////////
DWORD WINAPI PTRobot_SetPrinterSettings(HANDLE hRobot, PTPrinterSettings
*pPrinterSettings);
2.3.10 PTRobot_GetPrinterSettings
///////////////////////////
//
// PTRobot_GetPrinterSettings
//
// Description:
// Function to get some printer driver settings
// Params:
// hRobot Handle to the robot (from EnumRobots)
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 24 of 51
2.3.11 PTRobot_KillSystemError
///////////////////////////
//
// PTRobot_KillSystemError
//
// Description:
// Function to kill a system error.
// Params:
// hRobot Handle to the robot (from EnumRobots)
// dwResetPrinter DWORD to notify if the printer should be reset.
// 1 = Reset the printer
// 0 = do not reset the printer
//
// Notes:
// If there is no system error and dwResetPrinter is set to 1 the
// printer will be reset. Otherwise if there is a system error, that error
// will be cleared (if possible) and the printer will be reset if the
// dwResetPrinter is set to 1.
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
//
///////////////////////////
DWORD WINAPI PTRobot_KillSystemError(HANDLE hRobot, DWORD dwResetPrinter);
2.3.12 PTRobot_SystemAction
///////////////////////////
//
// PTRobot_SystemAction
//
// Description:
// Function to instruct the system to perform a specifc action.
// Params:
// hRobot Handle to the robot (from EnumRobots)
// dwAction Action to perform
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 25 of 51
//
// Notes:
// This function is used to perform a specific function on a
// robot. The defined actions and their descriptions are detailed
// below.
//
// Action:
// PTACT_ALIGNPRINTER -> Align the Printer (Disc Publisher PRO only)
// Description:
// This will cause an alignment print to occur on the printer and
// this function will return when the alignment is complete.
//
// Action:
// PTACT_IGNOREINKLOW -> Ignore Ink Low (Disc Publisher PRO only)
// Description:
// This will cause an ink low system error to be ignored.
//
// Action:
// PTACT_DISABLEPWRBUTTON -> Disable Power Button
// Description:
// This will disable the power button on Disc Publisher II and PRO.
//
// Action:
// PTACT_REINIT_DRIVES -> Re-initialize drives
// Description:
// PTRobot maintains Registry values for persistent settings including
// drive serial numbers. This action will clear the drive serial numbers
// stored which will force the user to re-identify the robotically
// controlled drives.
//
// Action:
// PTACT_IDENTIFY -> Identify a robot
// Description:
// This will cause the robot to do something to visually identify itself
// For example the Bravo units will move their printer tray.
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_INVALID_ACTION if the robot action is invalid
//
///////////////////////////
DWORD WINAPI PTRobot_SystemAction(HANDLE hRobot, DWORD dwAction);
2.3.13 PTRobot_OpenCloseDrive
///////////////////////////
//
// PTRobot_OpenCloseDrive
//
// Description:
// Function to open or close a drive
// Params:
// hDrive Handle to the drive (from EnumDrives)
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 26 of 51
2.3.14 PTRobot_PrintFileWithMerge2
///////////////////////////////////////
//
// PTRobot_PrintFileWithMerge2
//
// Description:
// Function to print a Surething .STD file that has Merge Text/Photos.
// The Merge Text and/or Photos MUST be specified BEFORE THIS CALL, by
// calling PTRobot_AddMergeFields(). PTRobot_AddMergeFields() must be called
// once for every Merge field that is designed into the SureThing file.
// Then, this function is called to print the file with the specified
// Merge data.
//
// Params:
// hRobot Handle to the robot (from EnumRobots)
// tszFile Surething (.STD) File to print.
// fClearMergeList Whether or not to clear the list of merge strings
// (or photo names) that were stored from previous calls
// to PTRobot_AddMergeFields(). If doing mutiple discs with
// the same merge data then set to FALSE.
// If merge data will be changing for each disc then
// set to TRUE.
//
// NOTE: For this to work, the user must have “Set Merge File” within the .STD file
//
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_NO_PRINTER if the robot doesn't have a printer
// PTROBOT_PRINTFILE_NOT_FOUND if the file doesn't exist
// PTROBOT_PRINTAPP_NOT_INSTALLED if the required print application is not
// installed.
// PTROBOT_PRINTFILE_INVALID if the filename is not .STD
//
///////////////////////////
DWORD WINAPI PTRobot_PrintFileWithMerge2(HANDLE hRobot,
TCHAR * tszFile,
BOOL fClearMergeList);
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 27 of 51
2.3.15 PTRobot_SetPrinterSettings2
///////////////////////////
//
// PTRobot_SetPrinterSettings2
//
// Description:
// Function to set additional printer driver settings
// Params:
// hRobot Handle to the robot (from EnumRobots)
// pPrinterSettings2 points to a PTPrinterSettings2 structure.
//
// Notes:
// If this function is not called the default print settings will be used. This
// function will change the system default print settings.
// As of Version 1.2.0 the system default print settings will restored after a
print
// is sent via PTRobot_PrintFile() or PTRobot_PrintFileWithMerge().
//
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_NO_PRINTER if the robot doesn't have a printer
// PTROBOT_INVALID_PRINTER_SETTINGS if the printer settings are invalid
//
///////////////////////////
DWORD WINAPI PTRobot_SetPrinterSettings2(HANDLE hRobot, PTPrinterSettings2
*pPrinterSettings2);
2.3.16 PTRobot_GetPrinterSettings2
///////////////////////////
//
// PTRobot_GetPrinterSettings2
//
// Description:
// Function to get some additional printer driver settings
// Params:
// hRobot Handle to the robot (from EnumRobots)
// pPrinterSettings2 points to a PTPrinterSettings2 structure.
//
// Notes:
// If this function is not called the default print settings will be used.
// Return:
// PTROBOT_OK if Successful
// PTROBOT_SEQUENCE if this command is called out of sequence
// PTROBOT_INTERNAL if an internal error occurred
// PTROBOT_INVALID_ROBOT if the robot handle is invalid
// PTROBOT_NO_PRINTER if the robot doesn't have a printer
//
///////////////////////////
DWORD WINAPI PTRobot_GetPrinterSettings2(HANDLE hRobot, PTPrinterSettings2
*pPrinterSettings2);
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 28 of 51
2.4.2 PTRobot_AddMergeFields
///////////////////////////
//
// PTRobot_AddMergeFields
//
// Description:
// This function is used in conjuction with PTRobot_PrintMergeFile2()
// to print a SureThing file with merge/replaceable text fields (or photos).
// DESIGN TIME:
// User first designs a SureThing (.STD) file with replaceable Text and/or
// photos and then sets the Merge file (using Tools/Set Merge File).
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 29 of 51
// RUN TIME:
// This function is called repeatedly, passing in the text you want printed
// (and/or the name & path of the photo you want printed).
// The number of times this function is called should be equal to the number of
// Merge Fields inserted at design time.
// Then, call PTRobot_PrintFileWithMerge2() to print the SureThing file, using
// the merge fields set with this call.
//
// Params:
//
// Notes:
// Return:
// PTROBOT_OK if Successful
//
//
///////////////////////////
DWORD WINAPI PTRobot_AddMergeFields(HANDLE hRobot, const TCHAR * tszField );
2.4.3 PTRobot_ClearMergeList
///////////////////////////
//
// PTRobot_ClearMergeList
//
// Description:
// Function to clear the List of Merge strings (or photo names)
// that were stored from previous calls to PTRobot_AddMergeFields().
// This function would be used if doing a print preview of a STD file
// that has merge fields (ie. using PTRobot_GetSureThingPreview() ).
// This function is NOT needed if only printing a SureThing file with merge
// fields because PTRobot_PrintFileWithMerge2() has a flag to clear the merge
// list after printing.
// So, the use of this function would be like this:
// PTRobot_AddMergeFields()
// PTRobot_AddMergeFields()...
// PTRobot_GetSureThingPreview()
// PTRobot_ClearMergeList()
//
// NOTE: For this to work, the user must have “Set Merge File”
// within the .STD file
//
// Params:
// hRobot Handle to the robot (from EnumRobots)
// Return:
// PTROBOT_OK
//
///////////////////////////
DWORD WINAPI PTRobot_ClearMergeList( HANDLE hRobot );
2.4.4 PTRobot_SetPrintCopies
///////////////////////////
//
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 30 of 51
// PTRobot_SetPrintCopies
//
// Description:
// This function is used for a multiple auto-print job.
// This function is called each time prior to calling one of the print functions
// (e.g. PTRobot_PrintFile() ). The number of copies is set back to 1 after printing
// Not all robots support this feature (PTACT_AUTOPRINTER_MODE specifies support)
// e.g. Bravo 4100 prints mulitple copies faster with this method.
//
//
// Params:
//
// Notes:
// Return:
// PTROBOT_OK if Successful
//
//
///////////////////////////
DWORD WINAPI PTRobot_SetPrintCopies(HANDLE hRobot, DWORD dwCopies );
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 31 of 51
3 Type Definitions
NOTE: As of version 1.3.0 there are two different versions of PTRobot:
Multibyte character set (MCBS/ANSI) and Unicode.
In the Unicode version, a TCHAR is a 2-byte wide character. This is needed for 2-byte languages such as
Chinese, Japanese, Korean, etc.
In the MCBS version, a TCHAR is a 1-byte character.
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 32 of 51
}PTRobotInfo2, *pPTRobotInfo2;
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 33 of 51
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 34 of 51
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 35 of 51
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 36 of 51
4 Definitions
4.1 API Return Values
#define PTROBOT_OK 0
#define PTROBOT_INTERNAL 500
#define PTROBOT_SEQUENCE 501
#define PTROBOT_INVALID_ROBOT 502
#define PTROBOT_INVALID_DRIVE 503
#define PTROBOT_INVALID_BIN 504
#define PTROBOT_NODRIVES 505
#define PTROBOT_OPENCLOSE_FAILED 506
#define PTROBOT_OVERFLOW 507
#define PTROBOT_NO_PRINTER 508
#define PTROBOT_PRINTFILE_INVALID 509
#define PTROBOT_PRINTAPP_NOT_INSTALLED 510
#define PTROBOT_PRINTFILE_NOT_FOUND 511
#define PTROBOT_PRN_INVALID 512
#define PTROBOT_UNSUPPORTED_OPTION 513
#define PTROBOT_DIRNOTFOUND 514
#define PTROBOT_INVALID_LOCATION 515
#define PTROBOT_MULTDRIVES 516
#define PTROBOT_INVALID_PRINTER_SETTINGS 517
#define PTROBOT_INVALID_DRIVE_POSITION 518
#define PTROBOT_INVALID_ACTION 519
#define PTROBOT_FEATURE_NOT_IMPLEMENTED 520
#define PTROBOT_PRINTAPP_OPEN 521
#define PTROBOT_MISSING_DLL 522
#define PTROBOT_DRIVE_NOT_READY 523
#define PTROBOT_INVALID_MEDIA 524
#define PTROBOT_NO_MEDIA 525
#define PTROBOT_INVALID_LANG 526
#define PTROBOT_INVALID_ERROR 527
#define PTROBOT_BUSY 528
#define PTROBOT_INVALID_EXTENSION 529
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 37 of 51
#define SYSERR_CART_MOVE 10
#define SYSERR_INTERNAL_SW 12
#define SYSERR_NO_ROBODRIVES 13
#define SYSERR_OFFLINE 14
#define SYSERR_COVER_OPEN 15
#define SYSERR_PRINTER_PICK 16
#define SYSERR_MULTIPLE_PICK 17
#define SYSERR_MULTIPLEDISCS_IN_PRINTER 18
#define SYSERR_MULTIPLEDISCS_IN_RECORDER 19
#define SYSERR_DROPPED_DISC_RECORDER 20
#define SYSERR_DROPPED_DISC_BIN1 28
#define SYSERR_DROPPED_DISC_BIN2 29
#define SYSERR_DROPPED_DISC_PRINTER 33
#define SYSERR_DROPPED_DISC_REJECT 34
#define SYSERR_DROPPED_DISC_UNKNOWN 35
#define SYSERR_ALIGNNEEDED 36
#define SYSERR_COLOR_INVALID 37
#define SYSERR_BLACK_INVALID 38
#define SYSERR_BOTH_INVALID 39
#define SYSERR_NOCARTS 40
#define SYSERR_K_IN_CMY 41
#define SYSERR_CMY_IN_K 42
#define SYSERR_SWAPPED 43
#define SYSERR_PIGONPRO 44
#define SYSERR_ALIGNFAILED 45
#define SYSERR_DROPPED_DISC_PRINTER_FATAL 46
#define SYSERR_MULTIPLEDISCS_IN_RIGHTBIN 47
#define SYSERR_MULTIPLEDISCS_IN_LEFTBIN 48
#define SYSERR_CLR_EMPTY_FINAL 49
#define SYSERR_BLK_EMPTY_FINAL 50
#define SYSERR_BOTH_EMPTY_FINAL 51
#define SYSERR_WAITING_FOR_PRINTER 52
#define SYSERR_NO_DISC_IN_PRINTER 53
#define SYSERR_BUSY 54
#define SYSERR_PURGE 55
#define SYSERR_DOCK_SENSOR 56
#define SYSERR_ALREADY_PRINTED 57
#define SYSERR_UNKNOWN_HARDWARE 58
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 38 of 51
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 39 of 51
PTRobot_PrintFile()).
#define PTACT_FAN_ON 0x00400000 // DP4100: turn on system fan
#define PTACT_FAN_OFF 0x00800000 // DP4100: turn off system fan
4.10 Locations
#define LOCATION_AUTO 0
#define LOCATION_PRINTER 100
#define LOCATION_REJECT 200
4.13 Languages
#define ENGLISH 0
#define JAPANESE 1
#define GERMAN 2
#define FRENCH 3
#define SPANISH 4
#define ITALIAN 5
#define CHINESE 6 // Simplified
#define KOREAN 7
#define POLISH 8
#define CHINESE_TRAD 9 // Traditional
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 40 of 51
#define CZECH 10
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 41 of 51
5.1 SYSERR_PTR_TRAY
DiscPublisherI/II:
“Tray movement error. Press the left button on the unit to try again.”
DiscPublisher XR/XRP:
“Tray movement error. Open and close the cover to try again.”
5.2 SYSERR_CART_CODE
DiscPublisherI/II/ DiscPublisher XR/XRP:
“There was a problem finding the ink cartridges. Open the cover and press the left button. Make sure
the color cartridge is installed on the left and the black is on the right. Then close the cover.”
5.3 SYSERR_INPUT_EMPTY
DiscPublisherI/II/PRO:
“The input bin is empty. Open the cover and add more discs. Then close the cover and push the left
button on the unit.”
DiscPublisher XR/XRP:
“The input bin is empty. Open the cover, add more discs, and close the cover to continue.”
5.4 SYSERR_PTR_COMM
DiscPublisherI/II/PRO:
“There was an internal printer communications error. Press the left button on the unit to try again.”
DiscPublisher XR/XRP:
“There was an internal printer communications error. Open and close the cover to try again.”
5.5 SYSERR_CLR_EMPTY
DiscPublisherI/II/PRO:
“WARNING: The color cartridge is LOW on ink. To replace the cartridge, open the cover on the unit
and press the left button. Then install the new cartridge and close the cover. To ignore the warning,
press the left button.”
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 42 of 51
DiscPublisher XR/XRP:
“WARNING: The color cartridge is LOW on ink. To replace the cartridge, open the cover on the unit
and press the left button. Then install the new cartridge and close the cover. To ignore the warning,
open and close the cover.”
5.6 SYSERR_BLK_EMPTY
DiscPublisherI/II/PRO:
“WARNING: The black cartridge is LOW on ink. To replace the cartridge, open the cover on the unit
and press the left button. Then install the new cartridge and close the cover. To ignore the warning,
press the left button.”
DiscPublisher XR/XRP:
“WARNING: The black cartridge is LOW on ink. To replace the cartridge, open the cover on the unit
and press the left button. Then install the new cartridge and close the cover. To ignore the warning,
open and close the cover.”
5.7 SYSERR_BOTH_EMPTY
DiscPublisherI/II/PRO:
“WARNING: Both ink cartridges are LOW on ink. To replace the cartridges, open the cover on the
unit and press the left button. Then install the new cartridges and close the cover. To ignore the
warning, press the left button.”
DiscPublisher XR/XRP:
“WARNING: Both ink cartridges are LOW on ink. To replace the cartridge, open the cover on the unit
and press the left button. Then install the new cartridges and close the cover. To ignore the warning,
open and close the cover.”
5.8 SYSERR_PICK
DiscPublisherI/II/PRO:
“The disc was not picked. Press the left button on the unit to try again.”
DiscPublisher XR/XRP:
“The disc was not picked. Open and close the cover to try again.”
5.9 SYSERR_ARM_MOVE
DiscPublisher I:
“There was an arm movement error. Press the left button on the unit to try again.”
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 43 of 51
5.10 SYSERR_CART_MOVE
DiscPublisherI/II/PRO:
“Arm picker error. Press the left button on the unit to try again.”
DiscPublisher XR/XRP:
“Arm picker error. Open and close the cover to try again.”
5.11 SYSERR_INTERNAL_SW
“There was an internal software error. Please re-start the software.”
5.12 SYSERR_NO_ROBODRIVES
“No external recorder drives were found. Re-power the computer and unit, and then re-start the
software.”
5.13 SYSERR_OFFLINE
“The unit is offline. Please ensure the unit is connected and powered on. You may need to shut down
and restart the software.”
5.14 SYSERR_COVER_OPEN
“The unit’s cover is open. Please close the cover.”
5.15 SYSERR_PRINTER_PICK
DiscPublisherI/II/PRO:
“The disc was not picked from the printer. Press the left button to retry.”
DiscPublisher XR/XRP:
“The disc was not picked from the printer. Open and close the cover to try again.”
5.16 SYSERR_MULTIPLE_PICK
DiscPublisherII/PRO:
“Multiple discs were picked up and moved. Please manually remove any extra discs that were moved,
keeping a single disc in place. Then close the cover and press the left button.”
DiscPublisher XR/XRP:
“Multiple discs were picked up and moved. Please open the cover and manually remove any extra
discs that were moved, keeping a single disc in place. Then close the cover to continue.”
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 44 of 51
5.17 SYSERR_MULTIPLEDISCS_IN_PRINTER
DiscPublisherII/PRO:
“Multiple discs were placed in the printer. Please manually remove any extra discs from the printer,
keeping a single disc in place. Then close the cover and press the left button.”
DiscPublisher XR/XRP:
“Multiple discs were placed in the printer. Please open the cover and manually remove any extra
discs from the printer, keeping a single disc in place. Then close the cover to continue.”
5.18 SYSERR_MULTIPLEDISCS_IN_RECORDER
DiscPublisherII/PRO:
“Multiple discs were placed in the recorder. Please manually remove any extra discs from the recorder,
keeping a single disc in place. Then close the cover and press the left button.”
DiscPublisher XR/XRP:
“Multiple discs were placed in the recorder. Please open the cover and manually remove any extra
discs from the printer, keeping a single disc in place. Then close the cover to continue.”
5.19 SYSERR_DROPPED_DISC_RECORDER
DiscPublisherII/PRO:
“The disc was dropped while moving into the recorder. Please manually place
the disc into the recorder tray. Then close the cover and press the left button.”
DiscPublisher XR/XRP:
“The disc was dropped while moving into the recorder. Please open the cover and manually place
the disc into the recorder tray. Then close the cover to continue.”
5.20 SYSERR_DROPPED_DISC_BIN1
DiscPublisherII/PRO:
“The disc was dropped while moving into the right bin. Please manually place
the disc into the right bin. Then close the cover and press the left button.”
DiscPublisher XR/XRP:
“The disc was dropped while moving into the right bin. Please open the cover and manually place
the disc into the right bin. Then close the cover to continue.”
5.21 SYSERR_DROPPED_DISC_BIN2
DiscPublisherII/PRO:
“The disc was dropped while moving into the left bin. Please manually place
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 45 of 51
the disc into the left bin. Then close the cover and press the left button.”
DiscPublisher XR/XRP:
“The disc was dropped while moving into the left bin. Please open the cover and manually place
the disc into the left bin. Then close the cover to continue.”
5.22 SYSERR_DROPPED_DISC_PRINTER
DiscPublisherII/PRO:
“The disc was dropped while moving into the printer. Please manually place
the disc into the printer tray. Then close the cover and press the left button.”
DiscPublisher XR/XRP:
“The disc was dropped while moving into the printer. Please open the cover and manually place
the disc into the printer tray. Then close the cover to continue.”
5.23 SYSERR_DROPPED_DISC_REJECT
DiscPublisherII/PRO:
“The disc was dropped while moving to the reject area. Please remove the dropped disc. Then close
the cover and press the left button.”
DiscPublisher XR/XRP:
“The disc was dropped while moving to the reject area. Please open the cover and
remove the dropped disc. Then close the cover to continue.”
5.24 SYSERR_DROPPED_DISC_UNKNOWN
DiscPublisherII/PRO:
“The disc was dropped. Please remove the dropped disc. Then close the cover and press the left
button.”
DiscPublisher XR/XRP:
“The disc was dropped. Please open the cover and remove the dropped disc. Then close the cover to
continue.”
5.25 SYSERR_ALIGNNEEDED
DiscPublisherPRO:
“The printer cartridges need to be aligned.”
NOTE: Your application can require the user to go to the Printing Preferences in the Printers and Faxes
folder to perform this function. Or, you can use the PTRobot_SystemAction call to help the user
perform an alignment.
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 46 of 51
5.26 SYSERR_COLOR_INVALID
DiscPublisherPRO:
“The color cartridge is invalid. Open the cover and press the left button. Change the cartridge and close
the cover.”
5.27 SYSERR_BLACK_INVALID
DiscPublisherPRO:
“The black cartridge is invalid. Open the cover and press the left button. Change the cartridge and close
the cover.”
5.28 SYSERR_BOTH_INVALID
DiscPublisherPRO:
“Both cartridges are invalid. Open the cover and press the left button. Change the cartridges and close
the cover.”
5.29 SYSERR_NOCARTS
DiscPublisherPRO:
“No cartridges are installed. Open the cover and press the left button. Install the cartridges and close
the cover.”
5.30 SYSERR_K_IN_CMY
DiscPublisherPRO:
“The black cartridge is installed in the color position. Open the cover and press the left button. Change
the cartridge and close the cover.”
5.31 SYSERR_CMY_IN_K
DiscPublisherPRO:
“The color cartridge is installed in the black position. Open the cover and press the left button. Change
the cartridge and close the cover.”
5.32 SYSERR_SWAPPED
DiscPublisherPRO:
“The black and color cartridges are swapped. Open the cover and press the left button. Swap the
cartridges and close the cover.”
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 47 of 51
5.33 SYSERR_PIGONPRO
DiscPublisherPRO:
“This printer is not compatible with a pigment-based black cartridge. Open the cover and press the left
button. Install a dye-based black cartridge and close the cover.”
5.34 SYSERR_ALIGNFAILED
DiscPublisherPRO:
“The alignment print failed.”
NOTE: Your application can either require the user to go to the Printing Preferences in the Printers and
Faxes folder to re-do this function. Or, you can use the PTRobot_SystemAction call to help the user
perform another alignment.
5.35 SYSERR_DROPPED_DISC_PRINTER_FATAL
DiscPublisherII/PRO:
“The disc was dropped while moving to/from the printer. Please open the cover and manually remove
and discard the disc. Then place a new disc in the recorder, close the cover and press the left button.”
DiscPublisher XR/XRP:
“The disc was dropped while moving to/from the printer. Please open the cover and manually remove
and discard the disc. Then place a new disc in the recorder and close the cover to continue.”
5.36 SYSERR_MULTIPLEDISCS_IN_RIGHTBIN
DiscPublisherII/PRO:
“Multiple discs were placed in the right bin. Please manually move any extra discs to the left bin,
keeping a single disc in place. Then close the cover and press the left button.”
DiscPublisher XR/XRP:
“Multiple discs were placed in the right bin. Please open the cover and manually move any extra discs
to the left bin, keeping a single disc in place. Then close the cover to continue.”
5.37 SYSERR_MULTIPLEDISCS_IN_LEFTBIN
DiscPublisherII/PRO:
“Multiple discs were placed in the left bin. Please manually move any extra discs to the right bin,
keeping a single disc in place. Then close the cover and press the left button.”
DiscPublisher XR/XRP:
“Multiple discs were placed in the left bin. Please open the cover and manually move any extra discs to
the right bin, keeping a single disc in place. Then close the cover to continue.”
5.38 SYSERR_CLR_EMPTY_FINAL
DiscPublisherPRO:
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 48 of 51
“WARNING: The color cartridge is Empty. To replace the cartridge, open the cover on the unit and
press the left button. Then install the new cartridge and close the cover. To ignore the warning, press
the left button.”
5.39 SYSERR_BLK_EMPTY_FINAL
DiscPublisherPRO:
“WARNING: The black cartridge is Empty. To replace the cartridge, open the cover on the unit and
press the left button. Then install the new cartridge and close the cover. To ignore the warning, press
the left button.”
5.40 SYSERR_BOTH_EMPTY_FINAL
DiscPublisherPRO:
“WARNING: Both cartridges are Empty. To replace the cartridge, open the cover on the unit and press
the left button. Then install the new cartridge and close the cover. To ignore the warning, press the left
button.”
5.41 SYSERR_WAITING_FOR_PRINTER
“The system timed out waiting for the printer to finish. The disc may not have been printed on.”
5.42 SYSERR_NO_DISC_IN_PRINTER
DiscPublisher II, Pro XRP, 4100 XRP:
“Please place the disc back into the printer tray and close the tray. NOTE: First press the button
on the right; then pressing the left button will open/close the printer tray.”
5.43 SYSERR_BUSY
“The system is busy.”
5.44 SYSERR_PURGE
DiscPublisher 4100, XRP 4100:
“The system had a problem purging. Restart the system to try again.”
5.45 SYSERR_DOCK_SENSOR
DiscPublisher 4100, XRP 4100:
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 49 of 51
“The system had a problem with the picker connection. Open and close the cover to try again.”
5.46 SYSERR_ALREADY_PRINTER
DiscPublisher 4100, XRP 4100:
“A disc was left in the printer. Remove the disc, close the cover, and press the left button to try
again.”
5.47 SYSERR_UNKNOWN_HARDWARE
“The system encountered a hardware error. Restart the system to try again.”
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 50 of 51
6 Revision History
3/31/11 – document version 2.5
• Added recommended system error strings in sections 5.42 to 5.47.
• Added new 4100 XRP Robot Type. Section 4.4
• Added special case for PTRobot_GetSureThingPreview(). Section 2.4.1
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.
PTRobot API Page 51 of 51
© 2005-2017, Primera Technology, Inc. Primera is a registered trademark and Bravo is a trademark of Primera Technology, Inc. All other trademarks are the property
of their respective companies.