HP 2500 HP PCL/PJL reference - Printer Job Language Technical Reference Manual - Page 221

Application Design Ideas, Programming Tips for Using PJL 11-27

Page 221 highlights

Application Design Ideas The previous pages have described various printing system topologies and how components in those topologies can operate so each printer system component can receive printer status readback responses. This section discusses application design ideas that handle the complexities involved with using printer status readback information. The obvious design approach of querying the printer and waiting for an answer to that query is sure to lead to failure. A busy printer, old printer responses, overflowed printer response buffer, and a uni-directional printing environment all cause the obvious design approach to be inadequate. A better design approach is to treat printer responses as events that cause the application to take some action. Solicited and unsolicited printer status readback queries/responses are discussed separately. Whenever the application sends a solicited query to the printer, the application should add the query to the "outstanding solicited query" list. Also, if the application can not proceed until the response is received, then a watchdog timer should be set so that some event will be guaranteed to occur in case the application does not receive a timely response. Whenever a solicited response is received, the response should be compared to the list of outstanding solicited queries. If there is no match, then the solicited response should be discarded. If there is a match, then the query should be removed from the outstanding solicited query list, any associated watchdog timer should be disabled, and the application should process the response. If the application was blocked waiting for the response, then the application should become unblocked. If the application does not need an unsolicited status response, then the application can discard the response. If the application ever receives the unsolicited PJL "printer to host data buffer overflow" message, then the application should resend all queries in the "outstanding solicited query" list. When the application resends the outstanding solicited queries, it is possible that the application will receive two responses (one generated because of the initial query and one generated because of the resent query). If the application is using an outstanding solicited query list, then when the first response is received, the query will be removed from the list. When the second response is received, the second response will be ignored because there is no matching query in the outstanding solicited query list. EN Programming Tips for Using PJL 11-27

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342

EN
Programming Tips for Using PJL 11-27
Application Design Ideas
The previous pages have described various printing system
topologies and how components in those topologies can operate so
each printer system component can receive printer status readback
responses. This section discusses application design ideas that
handle the complexities involved with using printer status readback
information.
The obvious design approach of querying the printer and waiting for
an answer to that query is sure to lead to failure. A busy printer, old
printer responses, overflowed printer response buffer, and a
uni-directional printing environment all cause the obvious design
approach to be inadequate. A better design approach is to treat
printer responses as events that cause the application to take some
action. Solicited and unsolicited printer status readback
queries/responses are discussed separately.
Whenever the application sends a solicited query to the printer, the
application should add the query to the “outstanding solicited query”
list. Also, if the application can not proceed until the response is
received, then a watchdog timer should be set so that some event will
be guaranteed to occur in case the application does not receive a
timely response. Whenever a solicited response is received, the
response should be compared to the list of outstanding solicited
queries. If there is no match, then the solicited response should be
discarded. If there is a match, then the query should be removed from
the outstanding solicited query list, any associated watchdog timer
should be disabled, and the application should process the response.
If the application was blocked waiting for the response, then the
application should become unblocked.
If the application does not need an unsolicited status response, then
the application can discard the response.
If the application ever receives the unsolicited PJL “printer to host
data buffer overflow” message, then the application should resend all
queries in the “outstanding solicited query” list. When the application
resends the outstanding solicited queries, it is possible that the
application will receive two responses (one generated because of the
initial query and one generated because of the resent query). If the
application is using an outstanding solicited query list, then when the
first response is received, the query will be removed from the list.
When the second response is received, the second response will be
ignored because there is no matching query in the outstanding
solicited query list.