2500_Users_Manual.pdf - 第403页
Computer Remote Control ProM aster 25 00 User Manua l E-15 Q1 Label record type — Q1 indicates a da ta record containing labeling info rmation. The AS CII character CR (0D he x) forces a new line (may c onta in up to 8 l…

Computer Remote Control
E-14 ProMaster 2500 User Manual
The following diagram illustrates an example of pin 1 orientations for the
three locations:
The rotation byte in binary is 00010011. Convert 00010011 binary to 13
hex. The record becomes
Q70213EA.
Q8
Reserved for future use.
Q9
A termination record for a block of label records. There is no data field.
Only one termination record is used in a Label Hex Format file. Usually,
only one header record is used, although multiple header records are
allowed.
Creating Hex Label
Records
You can create a Hex Label Format file using a standard text editor,
although it is easier to use a program that can create a Hex Label Format
file, such as the LABEL program included with the ProMaster 2500. You
can use this program, which is written in the C programming language,
on any computer able to run a C compiler. The LABEL program creates a
file named
label.hex
after you enter the labeling information. You can
compile the source for this program, included in this chapter, using any C
compiler.
Example of the Hex Label
File Format
A typical Hex Label Format file used for downloading labeling and
device information to the 2500 is shown below:
Q001FE
Q10C4C4142454C0D544558540D34
Q20201FC
Q60202FB
Q70213EA
Q901FE
The elements of this file are one Q0 record, one Q1 record defining the
labeling information “LABEL,” CR, “TEXT,” CR a Q2 record defining the
device type, a Q6 record defining print density information, a Q7 record
defining pin 1 orientation, and one Q9 record.
One Q0 record comprised of the following character pairs:
Q0
Label record type — Q0 indicates a header record.
01
Record length — Indicates that 1 hex byte follows in the record.
FE
Checksum.
The Q1 record consists of the following components:
INTO RECEIVING
TUBE = 01 (1)
PIN 1
LABEL
ORIENTATION = 0
DIRECTION OF TRAVEL
TXT
PIN 1
PIN 1
OUT OF
INPUT TUBE = 11 (3)
1393-1

Computer Remote Control
ProMaster 2500 User Manual E-15
Q1
Label record type — Q1 indicates a data record containing
labeling information. The ASCII character CR (0D hex) forces a
new line (may contain up to 8 lines).
0C
Record length — Indicates that 12 hex bytes follow in the record:
4C
L
41
A
42
S
45
E
4C
R
0D
cr
54
T
45
E
58
X
54
T
0D
cr
34
Checksum
The Q2 record consists of the following:
Q2
Label record type — Q2 indicates a data record containing
device type information.
02
Record length — Indicates that 2 hex bytes follow in the record.
01
Indicates 28 pin PLCC device type
FC
Checksum
The Q6 record consists of the following:
Q6
Label record type — Q6 indicates a data record containing
labeling information.
02
Record length — Indicates that 2 hex bytes follow in the record.
02
Indicates 26 S CPI text.
FB
Checksum.
The Q7 record consists of the following:
Q7
Label record type — Q7 indicates a data record containing pin 1
orientation data.
02
Record length — Indicates that 2 hex bytes follow in the record.
13
Indicates the following:
Parts exiting the input tube are pin 1 = 3.
Label orientation with respect to pin 1 = 0.
Parts entering receiving tube are pin 1 = 1.
EA
Checksum.
The Q9 record consists of the following:
Q9
Label record type — Q9 indicates a termination record.
01
Record length — Indicates that 1 hex byte follows in the record.
representing 1 byte of binary data, follows.

Computer Remote Control
E-16 ProMaster 2500 User Manual
Source Code of
LABEL.C Program
************************************************************************
* LABEL.C - Create Hex Label Format containing label info *
* *
* This program is written using only standard C file functions *
* and can be compiled with any C compiler. *
*************************************************************************
#include <stdio.h> /* include standard IO file */
FILE *fp; /* declare file pointer */
char lb[] = /* initialize input buffer */
" ";
.()
{
int i = 0; /* index variable */
char l, c, d, chksum; /* work and checksum variables */
fp = fopen("LABEL.HEX","w"); /* open output file */
fputs("Q001FE\n",fp); /* write header record to file */
fputs("Q20201FC\n",fp); /* write part type record to file*/
/* select 28 pin PLCC */
fputs("Q7020EEF",fp); /* write rotation record to file */
/* get label information */
l = 1; /* init length */
fputc('\n',stdout);
for (d = 0; d 4; d++){
fputs("Enter label line ",stdout);
fputc(d+49,stdout);
fputs(": ",stdout);
while ((c = getchar()) != '\n'){
lb[i++] = c; /* store character in buffer */
++l; /* inc length counter */
}
lb[i++] = 13; /* write a cr to delimit each line */
++l;
}
fputs("\nQ1",fp); /* write data record */
cput(l); /* write length */
for (i=0,chksum=l; i1; ++i){ /* write re.der data record */
cput(lb[i]); /* write character */
chksum += lb[i]; /* update checksum */
}
cput(~chksum); /* write checksum */
fputs("\nQ901FE\n",fp); /* write termination record */
fclose(fp); /* close output file */
} /* exit */
cput(a) /* write byte in ASCII format */
char a; /* input parameter */
{
char c; /* temporary character variable */
c = ((a > 4) & 15)+48; /* convert left nibble */
if (c 57) c += 7;
fputc(c,fp); /* write character */
c = (a & 15)+48; /* convert right nibble */
if (c 57) c += 7;
fputc(c,fp); /* write character */
} /* return to caller */