Модификация Python 2 «signal_read.py» Программа чтения Zebra FX9500, представленная на его веб-консоли - PullRequest
0 голосов
/ 05 октября 2019

Как изменить приведенную ниже программу на Python 2 так, чтобы вывод GPIO активировался, когда на антенне считывателя есть мертвая метка, а GPIO неактивен, когда на антенне считывателя имеется хорошая метка.

#!/usr/bin/python -u
#
# sample reader python script.
#
# purpose: turn on a digital output pin upon a successful tag read
#
# inputs: optional, pin - digital output pin number (1-4). Default is digital out 1
#         optional, time, in miliseconds, to keep the digital output high. Default
#         is 1000 milliseconds (1 sec).
#         optional, logic level for digital out "on", 0 or 1. Default is 1 for
#         "on"
#         
##
# This routine will turn on a dio output if a tag is successfully read.  The
# dio output pin number can be specified on the command line.  If not
# specified, a dio output 1 is used.
# The output pin will remain high for n milliseconds, where n is either the default
# of 1000 milliseconds, or the value supplied on the command line.  Minimum
# value for n is 10 milliseconds.  

# examples: 
#    signal_read.py         # turns on digital output 1 for 1000 milliseconds on tag reads
#    signal_read.py 2       # turns on digital output 2 for 1000 milliseconds on tag reads
#    signal_read.py 1 5000  # turns on digital output 1 for 5000 milliseconds on tag reads
#    signal_read.py 1 500   # turns on digital output 1 for 500 milliseconds on tag reads
#    signal_read.py 1 800 0 # turns on digital output 1, logic level 0, for 800 milliseconds on tag reads
# 

import saturn
import re
import commands
import time 
import sys
from sys import argv

#
# callback for dio events
#
def tag_arrive(data):

    try:
      # parse the respone
      print "tag arrive  %s " % (data)
    except: 
      print "setup error" 
    rc = cmd.sendcommand('dio.out.'+dio_pin+'='+dio_hi)     #dio.out 2=
    if rc[0] != "ok":
        print "setup error for dio.out: %s " % rc[0]
    print "sleep for : %f " % on_time 
    time.sleep(on_time)
    print "done sleep for : %f " % on_time 
    rc = cmd.sendcommand('dio.out.'+dio_pin+'='+dio_lo)
    if rc[0] != "ok":
        print "setup error for dio.out: %s " % rc[0]

#
# default for dio out pin number 
#
try:
   dio_pin = argv[1]
except:
   dio_pin = "2"
#
# default for on time for dio out pulse 
#
try:
   on_time_ms = float(argv[2])
   on_time = float(on_time_ms/1000)
except:
   on_time = 1
#
# default for output logic level
#
try:
   if int(argv[3]) not in range(0,2):
       dio_hi = "1"
   else:
       dio_hi = str(argv[3])
except:
   dio_hi = "1"

if dio_hi == "1":
  dio_lo = "0"
else:
  dio_lo = "1"

#
# setup the command and event session
#
cmd = saturn.Command('localhost',50007)
evt = saturn.Event('localhost',50008)

evtid = evt.getid()
print "Event Id = ",evtid
print "on time = %f" % on_time

#
# make sure the dio output pin is off 
#
rc = cmd.sendcommand('dio.out.'+dio_pin+'='+dio_lo)
if rc[0] != "ok":
    print "setup error for dio.out: %s " % rc[0]

#
# register for tag arrive events
#
cmd.sendcommand('reader.events.register(id='+evtid+',name=event.tag.arrive)')
evt.receive(tag_arrive)

cmd.close()
evt.close()

Может кто-нибудь предложить мне возможное изменение кода, чтобы я получил желаемый результат?

...