📄 zlg500s.lst
字号:
274 1 SerBfr[DATA+6] = Block;
275 1
276 1 Status = Zlg500S_Cmd();
277 1
278 1 if(Status == OK)
279 1 {
280 2 Status = SerBfr[STATUS];
281 2 }
282 1 return Status;
283 1 }
284 #endif
285
286 #if PiccAuthKey_en
INT8U PiccAuthKey(INT8U KeyAB,INT8U *PiccSnr,INT8U *Key,INT8U Block)
{
INT8U Status;
SerBfr[CMDTYPE] = 2;
SerBfr[COMMAND] = 'F';
SerBfr[LENGTH] = 12;
SerBfr[DATA] = KeyAB;
memcopy(&SerBfr[DATA+1],PiccSnr,4);
memcopy(&SerBfr[DATA+5],Key,4);
SerBfr[DATA+11] = Block;
Status = Zlg500S_Cmd();
if(Status == OK)
{
Status = SerBfr[STATUS];
C51 COMPILER V7.50 ZLG500S 05/17/2008 12:45:00 PAGE 6
}
return Status;
}
#endif
308
309 #if PiccRead_en
310 INT8U PiccRead(INT8U Block,INT8U *Bfr)
311 {
312 1 INT8U Status;
313 1
314 1 SerBfr[CMDTYPE] = 2;
315 1 SerBfr[COMMAND] = 'G';
316 1 SerBfr[LENGTH] = 1;
317 1 SerBfr[DATA] = Block;
318 1
319 1 Status = Zlg500S_Cmd();
320 1
321 1 if(Status == OK)
322 1 {
323 2 Status = SerBfr[STATUS];
324 2 if(Status == OK)
325 2 {
326 3 memcopy(Bfr,&SerBfr[DATA],16);
327 3 }
328 2 }
329 1 return Status;
330 1 }
331 #endif
332
333 #if PiccWrite_en
334 INT8U PiccWrite(INT8U Block,INT8U *Bfr)
335 {
336 1 INT8U Status;
337 1
338 1 SerBfr[CMDTYPE] = 2;
339 1 SerBfr[COMMAND] = 'H';
340 1 SerBfr[LENGTH] = 17;
341 1 SerBfr[DATA] = Block;
342 1 memcopy(&SerBfr[DATA+1],Bfr,16);
343 1
344 1 Status = Zlg500S_Cmd();
345 1
346 1 if(Status == OK)
347 1 {
348 2 Status = SerBfr[STATUS];
349 2 }
350 1 return Status;
351 1 }
352 #endif
353
354 #if PiccULWrite_en
INT8U PiccULWrite(INT8U Block,INT8U *Bfr)
{
INT8U Status;
SerBfr[CMDTYPE] = 2;
SerBfr[COMMAND] = 'I';
SerBfr[LENGTH] = 5;
SerBfr[DATA] = Block;
memcopy(&SerBfr[DATA+1],Bfr,16);
Status = Zlg500S_Cmd();
C51 COMPILER V7.50 ZLG500S 05/17/2008 12:45:00 PAGE 7
if(Status == OK)
{
Status = SerBfr[STATUS];
}
return Status;
}
#endif
374
375 #if PiccValue_en
376 INT8U PiccValue(INT8U Mode,INT8U Block,INT8U *Value,INT8U TransBlock)
377 {
378 1 INT8U Status;
379 1
380 1 SerBfr[CMDTYPE] = 2;
381 1 SerBfr[COMMAND] = 'J';
382 1 SerBfr[LENGTH] = 7;
383 1 SerBfr[DATA] = Mode;
384 1 SerBfr[DATA+1] = Block;
385 1 memcopy(&SerBfr[DATA+2],Value,4);
386 1 SerBfr[DATA+6] = TransBlock;
387 1
388 1 Status = Zlg500S_Cmd();
389 1
390 1 if(Status == OK)
391 1 {
392 2 Status = SerBfr[STATUS];
393 2 }
394 1 return Status;
395 1 }
396 #endif
397
398 #if PiccReset_en
INT8U PiccReset(INT8U _1ms)
{
INT8U Status;
SerBfr[CMDTYPE] = 2;
SerBfr[COMMAND] = 'L';
SerBfr[LENGTH] = 1;
SerBfr[DATA] = _1ms;
Status = Zlg500S_Cmd();
if(Status == OK)
{
Status = SerBfr[STATUS];
}
return Status;
}
#endif
417
418 #if PiccActiveTypeA_en
INT8U PiccActiveTypeA( INT8U BaudRate,
INT8U Req_Code,
INT8U *Atq,
INT8U *Ats,
INT8U *PiccSnrLen,
INT8U *PiccSnr )
{
INT8U Status;
C51 COMPILER V7.50 ZLG500S 05/17/2008 12:45:00 PAGE 8
SerBfr[CMDTYPE] = 2;
SerBfr[COMMAND] = 'M';
SerBfr[LENGTH] = 2;
SerBfr[DATA] = BaudRate;
SerBfr[DATA+1] = Req_Code;
Status = Zlg500S_Cmd();
if(Status == OK)
{
Status = SerBfr[STATUS];
if(Status == OK)
{
*Atq = SerBfr[DATA];
*(Atq+1) = SerBfr[DATA+1];
*Ats = SerBfr[DATA+2];
*PiccSnrLen = SerBfr[DATA+3];
memcopy(PiccSnr,&SerBfr[DATA+4],*PiccSnrLen);
}
}
return Status;
}
#endif
451
452 #if PiccAutoDetect_en
453 INT8U PiccAutoDetect(INT8U OutMode, INT8U TxMode, INT8U Req_Code,
454 INT8U AuthMode, INT8U KEYAB, INT8U *Key, INT8U Block)
455 {
456 1 INT8U Status;
457 1
458 1 SerBfr[CMDTYPE] = 2;
459 1 SerBfr[COMMAND] = 'N';
460 1
461 1 if(AuthMode == 0)
462 1 SerBfr[LENGTH] = 4;
463 1 else
464 1 { SerBfr[DATA+4] = KEYAB;
465 2 if(AuthMode == 'E')
466 2 {
467 3 SerBfr[DATA+5] = *Key;
468 3 SerBfr[DATA+6] = Block;
469 3 SerBfr[LENGTH] = 7;
470 3 }
471 2 else if(AuthMode == 'F')
472 2 {
473 3 memcopy(&SerBfr[DATA+5],Key,6);
474 3 SerBfr[DATA+11] = Block;
475 3 SerBfr[LENGTH] = 12;
476 3 }
477 2 else
478 2 return COMMERR;
479 2 }
480 1
481 1 SerBfr[DATA] = OutMode;
482 1 SerBfr[DATA+1] = TxMode;
483 1 SerBfr[DATA+2] = Req_Code;
484 1 SerBfr[DATA+3] = AuthMode;
485 1
486 1 Status = Zlg500S_Cmd();
487 1
488 1 if(Status == OK)
489 1 {
C51 COMPILER V7.50 ZLG500S 05/17/2008 12:45:00 PAGE 9
490 2 Status = SerBfr[STATUS];
491 2 }
492 1 return Status;
493 1 }
494 #endif
495
496 #if PiccADRcv_en
497 /***********************************************************************************
498 模块产生中断后,直接读取数据
499 输入: 无
500 输出: TxDrv——TX驱动,0x01——仅TX1,0x02——仅TX2,0x03——TX1、TX2全驱动
501 TagType——目标类型,同PiccRequest函数
502 Sak——选择应答,同PiccSelect函数
503 Snr——序列号,,同PiccSelect函数
504 DTBfr——块数据首址
505 返回: 0——成功,其它值——失败
506 ***********************************************************************************/
507 INT8U PiccADRcv(INT8U *TxDrv,INT8U *TagType,INT8U *Sak,INT8U *Snr,INT8U *DTBfr)
508 {
509 1 INT8U Status = 0xff;
510 1
511 1 if(Ser_Rcv())
512 1 {
513 2 if(SEQ == (SerBfr[CMDTYPE]&0xf0))
514 2 { //包号匹配
515 3 Status = OK;
516 3 }
517 2 else
518 2 Status = SEQERR; //包号不匹配
519 2
520 2 if(Status == OK)
521 2 {
522 3 Status = SerBfr[STATUS];
523 3 if(Status == OK)
524 3 {
525 4 *TxDrv = SerBfr[DATA];
526 4 TagType[0] = SerBfr[DATA+1];
527 4 TagType[1] = SerBfr[DATA+2];
528 4 *Sak = SerBfr[DATA+3];
529 4 memcopy(Snr,&SerBfr[DATA+5],SerBfr[DATA+4]);
530 4 if(DTBfr != 0)
531 4 memcopy(DTBfr,&SerBfr[DATA+5+SerBfr[DATA+4]],16);
532 4 }
533 3 }
534 2 }
535 1 return Status;
536 1 }
537 #endif
538
539 #if PiccReadADDT_en
540 /***********************************************************************************
541 发送读自动检测命令
542 输入: Mode:0x00——停止检测,0x01——继续检测
543 输出: TxDrv——TX驱动,0x01——仅TX1,0x02——仅TX2,0x03——TX1、TX2全驱动
544 TagType——目标类型,同PiccRequest函数
545 Sak——选择应答,同PiccSelect函数
546 Snr——序列号,,同PiccSelect函数
547 DTBfr——块数据首址
548 返回: 0——成功,
549 -1——未检测到卡
550 -100——未进入自动检测
551 其它值——失败
C51 COMPILER V7.50 ZLG500S 05/17/2008 12:45:00 PAGE 10
552 ***********************************************************************************/
553 INT8U PiccReadADDT(INT8U Mode,INT8U *TxDrv,INT8U *TagType,INT8U *Sak,INT8U *Snr,INT8U *DTBfr) //若DTBfr为
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -