新闻  |   论坛  |   博客  |   在线研讨会
PLC及PC与RFID识别读写器串行通讯的实现 (2)
rss200904 | 2009-06-22 16:02:58    阅读:1015   发布文章

关键字:RFID 读写器 射频识别系统 通讯口 PLC控制 串口 识别对象 PC 串行通讯 主线程 ask:=0;

 

  Wait := WaitCommEvent(hcom,dwevtmask,lpol); //等待串口事件

  if Wait Then

  begin

  Synchronize(DataProcessing); //同步串口事件

  end;

  end;

  上述程序一旦检测到串口事件,就调用DataProcessing方法读串口数据,并写入数组,供程序其它部分调用,另外还要检测何时退出线程,程序如下:

  procedure Tmainform.DataProcessing

  begin

  clear := CLEARCOMMERROR(hcom,lperrors,@comms); //清除串口错误

  if Clear Then

  Begin //处理接收数据

  ReadFile(hcom,ReadBuffer,Comms.cbInQue,LPReadNumber,0);

  ReceBytes[I+ArrayOffset] := ReadBuffer[I];

  //读串口缓冲区数据并写入数组

  gameover := (ReceBytes[I+ArrayOffset-1]=Byte($FF))

  and (ReceBytes[I+ArrayOffset]=Byte($FF)); //终止条件

  if gameover then terminate; //退出线程

  ……

  End;

  End;

  其中,Terminate将线程的Terminated属性设置为True。线程一旦检测到Terminated属性为True,就会结束线程,去执行Onterminate事件,在Onterminate事件中对采集到的RFID标识数据进行处理。由于RFID读写器的ABxS协议的命令响应的最后两个字节都是FF,所以可以将收到连续的两个FF作为终止线程的条件之一。

  程序应用举例:

  以持续读标识中所有48字节数据命令为例,在程序中用WriteBuffer数组保存该命令,对WriteBuffer数组的各个元素赋值如下:

  WriteBuffer[0] := Byte($AA); WriteBuffer[1] := Byte($0D); //连续读标识命令字头

  WriteBuffer[2] := Byte($00); WriteBuffer[3] := Byte($00); //从第一个字节开始读

  WriteBuffer[4] := Byte($00); WriteBuffer[5] := Byte($30); //读48个字节数据

  WriteBuffer[6] := Byte($00); WriteBuffer[7] := Byte($02); //延时2秒

  WriteBuffer[8] := Byte($ff); WriteBuffer[9] := Byte($ff); //连续读标识命令字

  执行持续读标识命令后,程序以WriteBuffer数组写串口,RFID读写器执行此命令,并返回响应数据(见图5)。

  

  图5 持续读标识命令执行结果

  从图5窗口中可以看到,前4个字节AA OD FF FF就是LRP830读写器对持续读命令的确认信息,然后是数据报文头AA OD和标识中48个字节的数据(每字节数据前加00),最后是数据报文尾FF FF。

  5 结束语

  本文介绍了可编程控制器及微机与RFID射频识别读写器进行串行通讯,从而获取标识中的数据的具体实现方法:PLC通过串行I/O通讯协议与RFID读写器实现串行通讯,PC通过Windows多线程技术与RFID读写器实现串行通讯。本文所述方法具有通用性,对于其它厂家的PLC和RFID系统也有一定的参考价值。RFID射频识别技术在我国工业自动化等领域的应用才刚刚开始,前景非常广阔。本文对于促进该技术的推广应用具有一定的积极意义。

  参考文献

  [1] ESCORT MEMORY SYSTEMS, LRP830-Series Long-Range Passive Reader/Writers Operator’s Manual, July,2000

  [2] Marco Cant, Mastering Delphi 6, SYBEX Inc.(USA), 2001

  [3] Steve Teixeira and Xavier Pacheco,Borland Delphi? 6 Developer’s Guide, Sams Publishing(USA),2002

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客