示例#1
0
def luck(id: int, luckname: str):
    """
    开始抽奖
    """
    rd = RedisQueue(luckname)
    myredis = MyRedis()
    winner = luckname + "_winner"
    if myredis.hexists(winner, id):
        return {"ret": 0, "msg": "您已经抽过了,不能再抽了"}
    award = rd.get_nowait()
    if award:
        myredis.hset(winner, id, award)
        myredis.hincrby(luckname, award, -1)

        result = {
            "ret": 0,
            'data': {
                "flag": 1,
                "msg": "恭喜你中奖了",
                "award": award
            }
        }
    else:
        result = {
            "ret": 0,
            'data': {
                "flag": 0,
                "msg": "奖抽完了",
            }
        }

    return result
示例#2
0
def RFIDGetTagStart():
    global issysset
    global e
    global pool
    global redisconnpool
    global GetTagProsseFlg
    global epcsendthreadalive
    sl = 1

    if not SysIniJson():  # if not SysIni():
        print('SysIni Erro')
        return

    sleeptimes = 0
    if e.RunAllStart():
        pass
    else:
        print('RFIDGetTagStart ERR Return')
        return

    pool = redis.ConnectionPool(host='127.0.0.1',
                                password='******',
                                port=6379,
                                db=1)
    # q = RedisQueue(name='RfidControl',host='127.0.0.1',psw='123456')
    try:
        redisconnpool = redis.Redis(connection_pool=pool)
        if redisconnpool.ping():
            pass
    except:
        e.CloseSerialCOM()
        return
    q = RedisQueue(name='RfidControl', pool=pool)
    if not q.istrue:
        e.CloseSerialCOM()
        print('CloseSerialCOM 0')
        return
    #    while True:
    #        msg = q.get_nowait()
    #        print(msg)
    #        if msg != None:
    #            if msg==b'Rfidstop':
    #                issysset=199
    #                q.put_extend('RfidControlAnswer','RfidstopOK')
    #               break
    #            elif msg==b'Rfidstart':
    #                issysset=0;
    #                q.put_extend('RfidControlAnswer','RfidstartOK')
    #                break
    #        time.sleep(2)
    #    while True:
    #        SysCommand1(q)
    #        time.sleep(2)
    epcsendthreadalive = 1
    thread_sendepc = threading.Thread(target=EPCSendToServerThread,
                                      name='EPCSendToServerThread')
    thread_sendepc.setDaemon(True)
    thread_sendepc.start()

    while issysset < 200:
        # msg = redis_sub.parse_response()
        msg = q.get_nowait()
        if msg != None:
            print(msg)
            if msg == b'Rfidstop':
                issysset = 199
                q.put_extend('RfidControlAnswer', 'RfidstopOK')
            elif msg == b'Rfidstart':
                issysset = 0
                q.put_extend('RfidControlAnswer', 'RfidstartOK')
        #        SysCommand1(q)
        # SysCommand(q=q,flg=1)

        if issysset != 199:
            # EPCProsseRedis()
            EPCProsseRedis1()

        if issysset == 0:
            sendcmd = RfidCMD.IsAppoBootLoad()
            print('IsAppoBootLoad:{0},{1}'.format(sendcmd[0], sendcmd[1]))
            send = e.WriteSerialCOM(sendcmd[1])
            time.sleep(sl)  # time.sleep(2)
            continue
        elif issysset == 1:
            sendcmd = RfidCMD.BtoApp()
            print('BtoApp:{0},{1}'.format(sendcmd[0], sendcmd[1]))
            send = e.WriteSerialCOM(sendcmd[1])
            time.sleep(sl)  # time.sleep(2)
            continue
        elif issysset == 2:
            sendcmd = RfidCMD.GetDNum()
            # sendcmd=RfidCMD.ApptoB()
            print('GetDNum:{0},{1}'.format(sendcmd[0], sendcmd[1]))
            send = e.WriteSerialCOM(sendcmd[1])
            time.sleep(sl)  # time.sleep(2)
            continue
        elif issysset == 6:
            GetTagProsseFlg += 1
            if GetTagProsseFlg < int(sysdict['ts']):
                time.sleep(sl)
                continue
            sendcmd = RfidCMD.GetTagMultiple()
            GetTagProsseFlg = 0
            print('GetTagMultiple:{0},{1}'.format(sendcmd[0], sendcmd[1]))
            send = e.WriteSerialCOM(sendcmd[1])
            sleeptimes = 0
            issysset = 106
            time.sleep(sl)  # time.sleep(2)
            continue
        elif issysset == 7:
            sendcmd = RfidCMD.GetTagMultipleCommand()
            print('GetTagMultiple:{0},{1}'.format(sendcmd[0], sendcmd[1]))
            send = e.WriteSerialCOM(sendcmd[1])
            sleeptimes = 0
            issysset = 107
            time.sleep(sl)  # time.sleep(2)
            continue
        elif issysset == 106:
            sleeptimes += 1
            if sleeptimes > 10:
                issysset = 6
                loggererro.debug('106Sleep')
            time.sleep(sl)  # time.sleep(2)
            continue
        elif issysset == 107:
            sleeptimes += 1
            if sleeptimes > 10:
                issysset = 7
                loggererro.debug('107Sleep')
            time.sleep(sl)  # time.sleep(2)
            continue
        elif issysset == 8:
            sendcmd = RfidCMD.SubSetGetTagData()
            print('GetTagMultiple:{0},{1}'.format(sendcmd[0], sendcmd[1]))
            send = e.WriteSerialCOM(sendcmd[1])
            time.sleep(sl)  # time.sleep(2)
            continue
        elif issysset == 9:
            # if usedAnt==1:
            #    sendcmd=RfidCMD.SetAntEnable(ant1=usedAnt,ant2=0,ant3=0,ant4=0)
            # elif usedAnt==2:
            #    sendcmd=RfidCMD.SetAntEnable(ant1=0,ant2=usedAnt,ant3=0,ant4=0)
            # elif usedAnt==3:
            #    sendcmd=RfidCMD.SetAntEnable(ant1=0,ant2=0,ant3=usedAnt,ant4=0)
            # elif usedAnt==4:
            #    sendcmd=RfidCMD.SetAntEnable(ant1=0,ant2=0,ant3=0,ant4=usedAnt)
            # else:
            #    sendcmd=RfidCMD.SetAntEnable(ant1=1,ant2=0,ant3=0,ant4=0)
            sendcmd = RfidCMD.SetAntEnable(ant1=int(sysdict['a1']),
                                           ant2=int(sysdict['a2']),
                                           ant3=int(sysdict['a3']),
                                           ant4=int(sysdict['a4']))
            print('SetAntEnable:{0},{1}'.format(sendcmd[0], sendcmd[1]))
            send = e.WriteSerialCOM(sendcmd[1])
            time.sleep(sl)  # time.sleep(2)
            continue
        elif issysset == 10:
            # if usedAnt==1:
            #    sendcmd=RfidCMD.SetAntPower(ant1=usedAnt,ant2=0,ant3=0,ant4=0,rpower=usedPower)
            # elif usedAnt==2:
            #    sendcmd=RfidCMD.SetAntPower(ant1=0,ant2=usedAnt,ant3=0,ant4=0,rpower=usedPower)
            # elif usedAnt==3:
            #    sendcmd=RfidCMD.SetAntPower(ant1=0,ant2=0,ant3=usedAnt,ant4=0,rpower=usedPower)
            # elif usedAnt==4:
            #    sendcmd=RfidCMD.SetAntPower(ant1=0,ant2=0,ant3=0,ant4=usedAnt,rpower=usedPower)
            # else:
            #    sendcmd=RfidCMD.SetAntPower()
            sendcmd = RfidCMD.SetAntPower(ant1=int(sysdict['a1']),
                                          ant2=int(sysdict['a2']),
                                          ant3=int(sysdict['a3']),
                                          ant4=int(sysdict['a4']),
                                          rpower=int(sysdict['aw']))
            print('SetAntPower:{0},{1}'.format(sendcmd[0], sendcmd[1]))
            send = e.WriteSerialCOM(sendcmd[1])
            time.sleep(sl)  # time.sleep(2)
            continue
        else:
            time.sleep(sl)  # time.sleep(2)
示例#3
0
class SendDataToDestinationBLC(object):
    def __init__(self):
 
        self.usedtosendEPCQueue = RedisQueue(name='UsedEPCSendQueue',host='127.0.0.1',psw='123456',db=1)
        self.influxdbclass=PInfluxdbClass(host='127.0.0.1', port=8086, username='******', password='******', database = 'RFIDreportdb')

        self.tagstoRedis=DataObjectJSRedisClass(host='127.0.0.1',psw='123456',port=6379,indexkey='EPC')

        self.devID = b''

        self.thread_read_flg=False
        self.thread_read=None

        self.runallflg=False

        self.allthread=None

        self.clientID=""
        self.sendEmqClient=EMQSendClass(host='192.168.1.178',port=1883,username='******',pwd='shuiJing1',client_id='')



    def GetRfidDevID(self):
        if self.devID == b'':
            try:
                conn = redis.Redis(host='127.0.0.1', password='******', port=6379, db=1)
                if conn.ping():
                    print('conn ok')
                else:
                    print('shawanyi')
            except:  #
                return self.devID
            #conn.set('RFIDDevID', devID)
            if conn.exists('RFIDDevID'):
                pass
            else:
                print(self.devID)
                return self.devID
            ret=conn.get('RFIDDevID')
            if ret!=self.devID:
                self.devID=ret
                print('devID',self.devID)
        return self.devID

    def GetSysBluetoothCMD(self):
        cmd=0
        try:
            conn = redis.Redis(host='127.0.0.1', password='******', port=6379, db=1)
        except:
            print('GetSysBluetoothCMD ERR')
            return 0
   
        ret=conn.get('RFIDSysBluetoothCMD')
        if ret==None:
            return 0
    
        if ret==b'START':
            cmd=1
        elif ret==b'STOP':
            cmd=2
        elif ret==b'POWERUP':
            cmd=3
        elif ret==b'POWERDOWN':
            cmd=4
        elif b'POWER:' in ret:
            p,var = ret.split(b':')
            cmd=int(var)
        else:
            cmd=0
        return cmd

    def SetSysBluetoothCMD(self,cmd=0):
        try:
            conn = redis.Redis(host='127.0.0.1', password='******', port=6379, db=1)
        except:
            print('GetSysBluetoothCMD ERR')
            return False
        strcmd=''
        #ret=conn.get('RFIDSysBluetoothCMD')
        if cmd==1:#b'START':
            strcmd='START'
        elif cmd==2:#b'STOP':
            strcmd='STOP'
        elif cmd==3:#b'POWERUP':
            strcmd='POWERUP'
        elif cmd==4:#b'POWERDOWN':
            strcmd='POWERDOWN'
        elif cmd==5:
            strcmd='RUN'
        elif cmd>=10 and cmd<=30:
            strcmd='POWER:'+str(cmd)
        else:
            strcmd='START'

        conn.set('RFIDSysBluetoothCMD',strcmd)
        return True

    def RecvThreading(self,s):
        pass

    def StopRecvThread(self):
        self.thread_read_flg=False
        self.thread_read.join()
        self.thread_read=None
    
        self.SetSysBluetoothCMD(cmd=2)

    def StopAll(self):
        self.runallflg=False
        self.StopRecvThread()
        self.allthread=None

    def listtodict(self,data):
        d={}
        for v in data:
            key,value=v.split(':')
            d[key]=value
            #key,value=v.split(b':')
            #d[key.decode(encoding='utf-8')]=value.decode(encoding='utf-8')

        d['devID']=self.devID
        return d

        
    def UseReportdata(self,data):
        udict=self.MakeDataToDictMode(data)
        print(udict)
        if len(udict) <= 0:
            return False
#        self.influxdbclass.SaveDataToInfluxdb(measurement='RFIDreporttabl',tags={"NUMS":udict['NUMS']},fields=udict)
#        print('Get:',self.influxdbclass.GetDataFrominfluxdb(measurement='RFIDreporttabl'))

        for v in udict['tags']:
            ret = self.tagstoRedis.AddObject(data=v)
            print(ret)
            if ret[1]==1:
                print('GetObjectObjectlist:',self.tagstoRedis.GetObjectObjectlist())#获得对象hash name 列表
                print('GetObjectindexKeylist:',self.tagstoRedis.GetObjectindexKeylist())#获得索引键列表
                print('GetObjectKVlist:',self.tagstoRedis.GetObjectKVlist())#获得索引hash里 索引key+对象id列表
                #发送数据
                if self.clientID == "":
                    self.clientID=self.tagstoRedis.GetSelfUUID
                    print ('Get client uuid:',self.clientID)
                self.sendEmqClient.PublishOnceS(topic='RFIDEPCTAG',payload=str(v),qos=1,retain=False, will=None, auth={'username':'******', 'password':'******'}, tls=None)

            else:
                print('GetObjectContentByName:',self.tagstoRedis.GetObjectContentByName(name=ret[0]))

        nums=self.tagstoRedis.GetObjectSize()
        if nums>50:
            self.tagstoRedis.DeleteObjectAll()
            print('It s new day')

        return True
        
        
            
    def MakeDataToDictMode(self,data):
        retdict={}
        print(data)
        print(type(data))
        strdata=data.decode(encoding='utf-8')

        
        ldata=strdata.split(',')
        nums, value = ldata[2].split(':')

        
        #nums, value = data[2].split(b':')
        if 'NUMS' == nums:
            getnums = int(value, base=16)
            if getnums <= 0:
                print('UseReportdata is zero')
                return retdict
            retdict['NUMS']=getnums
            tags=[]
            epcdata=ldata[3:]
            el=len(epcdata)
            gl=int(el/getnums)
            for i in range(getnums):
                l=epcdata[i*gl:i*gl+gl]
                d=self.listtodict(l)
                tags.append(d)
                
            retdict['tags']=tags
        else:
            print('nothing to do')


        self.influxdbclass.SaveDataToInfluxdb(measurement='RFIDreporttabl',tags={"NUMS":retdict['NUMS']},fields={"reportRfid":strdata})
        #print('Get:',self.influxdbclass.GetDataFrominfluxdb(measurement='RFIDreporttabl'))
            
        return retdict

        
    def EPCSendRoServerForBluetooth(self):
   
        try:
            s_conn = redis.Redis(host='127.0.0.1', password='******', port=6379, db=1)
            if s_conn.ping():
                print('EPCSendRoServerForBluetooth ok')
            else:
                print('shawanyi')
        except:  #
            print('EPCSendRoServerForBluetooth err')
            s_conn = None
            return False

        s_conn.set('RFIDSysIsStart','isok')
        self.SetSysBluetoothCMD(cmd=1)
        while self.devID==b'':
            retdevid=self.GetRfidDevID()
            time.sleep(2)

        while True:
            msg = self.usedtosendEPCQueue.get_nowait()
            #print('msg:',msg)
            if msg==None:
                continue

            self.UseReportdata(msg)

#        try:    
#            while True:
#                msg = self.usedtosendEPCQueue.get_nowait()
#                #print('msg:',msg)
#                if msg==None:
#                    continue

#                self.UseReportdata(msg)
#                #varepc = msg.split(b':')
#                #sdevs = b'DEVID:' + self.devID + b';' + varepc[1] + b'+'
#                #print('queueSend:',sdevs)
#                #sock.send(sdevs)

#        except:
#            print('Bluetooth sock err')

        self.StopRecvThread()
        #self.thread_read_flg=False
        #self.thread_read.join()
        #self.thread_read=None
    
        #self.SetSysBluetoothCMD(cmd=2)
        sock.close()

    def EPCSendRoServerForBluetoothRUN(self):
        if self.runallflg==True:
            self.StopAll()
        self.runallflg=True
        while self.runallflg:
            self.EPCSendRoServerForBluetooth()

    def RunAll_Bluetooth(self):
        if self.allthread!=None:
            return False
        self.allthread=threading.Thread(target=self.EPCSendRoServerForBluetoothRUN)
        self.allthread.setDaemon(True)
        self.allthread.start()
        return True
class SendDataToDestinationBLServer(object):
    def __init__(self,
                 bluetuuid="94f39d29-7d6d-437d-973b-fba39e49d4ee",
                 name="FireFly-3288C",
                 port=6):

        self.usedtosendEPCQueue = RedisQueue(name='UsedEPCSendQueue',
                                             host='127.0.0.1',
                                             psw='123456',
                                             db=1)

        self.devID = b''
        self.uuid = bluetuuid
        self.bluetoothname = name
        self.bluetoothport = port

        self.thread_read_flg = False
        self.thread_read = None

        self.runallflg = False

        self.allthread = None

        self.allerr = False

    def GetRfidDevID(self):
        if self.devID == b'':
            try:
                conn = redis.Redis(host='127.0.0.1',
                                   password='******',
                                   port=6379,
                                   db=1)
                if conn.ping():
                    print('conn ok')
                else:
                    print('shawanyi')
            except:  #
                return self.devID
            #conn.set('RFIDDevID', devID)
            if conn.exists('RFIDDevID'):
                pass
            else:
                print(self.devID)
                return self.devID
            ret = conn.get('RFIDDevID')
            if ret != self.devID:
                self.devID = ret
                print('devID', self.devID)
        return self.devID

    def GetSysBluetoothCMD(self):
        cmd = 0
        try:
            conn = redis.Redis(host='127.0.0.1',
                               password='******',
                               port=6379,
                               db=1)
        except:
            print('GetSysBluetoothCMD ERR')
            return 0

        ret = conn.get('RFIDSysBluetoothCMD')
        if ret == None:
            return 0

        if ret == b'START':
            cmd = 1
        elif ret == b'STOP':
            cmd = 2
        elif ret == b'POWERUP':
            cmd = 3
        elif ret == b'POWERDOWN':
            cmd = 4
        elif b'POWER:' in ret:
            p, var = ret.split(b':')
            cmd = int(var)
        else:
            cmd = 0
        return cmd

    def SetSysBluetoothCMD(self, cmd=0):
        try:
            conn = redis.Redis(host='127.0.0.1',
                               password='******',
                               port=6379,
                               db=1)
        except:
            print('GetSysBluetoothCMD ERR')
            return False
        strcmd = ''
        #ret=conn.get('RFIDSysBluetoothCMD')
        if cmd == 1:  #b'START':
            strcmd = 'START'
        elif cmd == 2:  #b'STOP':
            strcmd = 'STOP'
        elif cmd == 3:  #b'POWERUP':
            strcmd = 'POWERUP'
        elif cmd == 4:  #b'POWERDOWN':
            strcmd = 'POWERDOWN'
        elif cmd == 5:
            strcmd = 'RUN'
        elif cmd >= 10 and cmd <= 30:
            strcmd = 'POWER:' + str(cmd)
        else:
            strcmd = 'START'

        conn.set('RFIDSysBluetoothCMD', strcmd)
        return True

    def RecvThreading(self, s):
        #global thread_read_flg
        while self.thread_read_flg:
            try:
                data = s.recv(1024)
            except:
                print('Bluetooth sock recv err')
                self.allerr = True
                break

            if len(data) == 0:
                continue  #break
            print("received [%s]" % data)
            if b'START' in data:
                self.SetSysBluetoothCMD(cmd=1)
            elif b'STOP' in data:
                self.SetSysBluetoothCMD(cmd=2)
            elif b'POWERUP' in data:
                self.SetSysBluetoothCMD(cmd=3)
            elif b'POWERDOWN' in data:
                self.SetSysBluetoothCMD(cmd=4)
            elif b'POWER:' in data:
                p, var = data.split(b':')
                self.SetSysBluetoothCMD(cmd=int(var))
            else:
                pass

    def StopRecvThread(self):
        self.thread_read_flg = False
        self.thread_read.join()
        self.thread_read = None

        self.SetSysBluetoothCMD(cmd=2)

    def StopAll(self):
        self.runallflg = False
        self.StopRecvThread()
        self.allthread = None

    def EPCSendRoServerForBluetooth(self):
        print('EPCSendRoServerForBluetooth  ---   server bluetooth')

        #uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee"
        uuid = self.uuid

        server_sock = BluetoothSocket(RFCOMM)
        #server_sock.bind(("",self.bluetoothport))
        server_sock.bind(("", PORT_ANY))
        server_sock.listen(1)

        port = server_sock.getsockname()[1]

        advertise_service(
            server_sock,
            self.bluetoothname,
            service_id=uuid,
            service_classes=[uuid, SERIAL_PORT_CLASS],
            profiles=[SERIAL_PORT_PROFILE],
        )

        print("Waiting for connection on RFCOMM channel %d" % port)

        client_sock, client_info = server_sock.accept()
        print("Accepted connection from ", client_info)

        self.thread_read_flg = True
        self.thread_read = threading.Thread(target=self.RecvThreading,
                                            args=(client_sock, ))
        self.thread_read.setDaemon(True)
        self.thread_read.start()

        print("connected.  type stuff")

        try:
            s_conn = redis.Redis(host='127.0.0.1',
                                 password='******',
                                 port=6379,
                                 db=1)
            if s_conn.ping():
                print('EPCSendRoServerForBluetooth ok')
            else:
                print('shawanyi')
        except:  #
            print('EPCSendRoServerForBluetooth err')
            s_conn = None
            return False

        s_conn.set('RFIDSysIsStart', 'isok')
        #self.SetSysBluetoothCMD(cmd=1)
        while self.devID == b'':
            retdevid = self.GetRfidDevID()
            time.sleep(2)

        self.allerr = False
        self.SetSysBluetoothCMD(cmd=2)

        try:
            while True:
                if self.allerr == True:
                    break
                msg = self.usedtosendEPCQueue.get_nowait()
                #print('msg:',msg)
                if msg == None:
                    continue

                varepc = msg.split(b':')
                sdevs = b'DEVID:' + self.devID + b';' + varepc[1] + b'+'
                print('queueSend:', sdevs)
                client_sock.send(sdevs)

        except:
            print('Bluetooth sock err')

        self.StopRecvThread()
        #self.thread_read_flg=False
        #self.thread_read.join()
        #self.thread_read=None
        print('bluetooth exit thread-------------------------')

        #self.SetSysBluetoothCMD(cmd=2)
        client_sock.close()
        server_sock.close()
        self.SetSysBluetoothCMD(cmd=2)
        print('bluetooth stop -------------------------')

    def EPCSendRoClientForBluetoothRUN(self):
        if self.runallflg == True:
            self.StopAll()
        self.runallflg = True
        while self.runallflg:
            self.EPCSendRoServerForBluetooth()

    def RunAll_Bluetooth(self):
        if self.allthread != None:
            return False
        self.allthread = threading.Thread(
            target=self.EPCSendRoClientForBluetoothRUN)
        self.allthread.setDaemon(True)
        self.allthread.start()
        return True
示例#5
0
    def handle(self):
        print(self.client_address)
        sqstr = '{0}:{1}'.format(self.client_address[0],
                                 self.client_address[1])
        print(sqstr)
        q = RedisQueue(name=sqstr)
        #q.redisidrun=q.isrun()
        #print ('running')
        while True:
            try:
                data = self.request.recv(1024)
                if (data == b''):
                    try:
                        conn = psycopg2.connect(database="materiel",
                                                user="******",
                                                password="******",
                                                host="58.214.232.165",
                                                port="5432")
                        cur = conn.cursor()
                        print('lin postgresql OK')

                    except:
                        print('InsertToPostgresql Connect Fail')
                        break
                    #ProssData(q)
                    while True:
                        if q.isrun() == 0:
                            break
                        qdata = q.get_nowait()

                        if qdata == None:
                            try:
                                conn.commit()
                                conn.close()
                                print('InsertToPostgresql close')
                                break
                            except:
                                print('InsertToPostgresql commit Fail')
                                break

                            #break
                        print(qdata)
                        if b'DEVID' in qdata:
                            devid, value = qdata.split(b':')
                            print('did:{0}'.format(devid))
                            lisoo = value.split(b';')
                            print('did:{0}-epc:{1}'.format(lisoo[0], lisoo[1]))
                            sqlselectstr = (
                                "INSERT INTO tb_epc_record (device_id,epc,report_time) VALUES ('{0}','{1}',NOW()::timestamp)"
                            ).format(lisoo[0].decode(encoding='utf-8'),
                                     lisoo[1].decode(encoding='utf-8'))
                            print(sqlselectstr)
                            cur.execute(sqlselectstr)
                    break  #continue
                #print (data)
                q.put(data)
                #if data == b'exit':
                #    print ('exit')
                #    self.server.shutdown()
                #    self.request.close()
                #    break

            except Exception as e:
                self.server.shutdown()
                self.request.close()
                break
示例#6
0
class SendDataToDestinationBLC(object):
    def __init__(self, bluetuuid="94f39d29-7d6d-437d-973b-fba39e49d4ee"):

        self.usedtosendEPCQueue = RedisQueue(name='UsedEPCSendQueue',
                                             host='127.0.0.1',
                                             psw='123456',
                                             db=1)

        self.devID = b''
        self.uuid = bluetuuid

        self.thread_read_flg = False
        self.thread_read = None

        self.runallflg = False

        self.allthread = None

        self.allerr = False

    def GetRfidDevID(self):
        if self.devID == b'':
            try:
                conn = redis.Redis(host='127.0.0.1',
                                   password='******',
                                   port=6379,
                                   db=1)
                if conn.ping():
                    print('conn ok')
                else:
                    print('shawanyi')
            except:  #
                return self.devID
            #conn.set('RFIDDevID', devID)
            if conn.exists('RFIDDevID'):
                pass
            else:
                print(self.devID)
                return self.devID
            ret = conn.get('RFIDDevID')
            if ret != self.devID:
                self.devID = ret
                print('devID', self.devID)
        return self.devID

    def GetSysBluetoothCMD(self):
        cmd = 0
        try:
            conn = redis.Redis(host='127.0.0.1',
                               password='******',
                               port=6379,
                               db=1)
        except:
            print('GetSysBluetoothCMD ERR')
            return 0

        ret = conn.get('RFIDSysBluetoothCMD')
        if ret == None:
            return 0

        if ret == b'START':
            cmd = 1
        elif ret == b'STOP':
            cmd = 2
        elif ret == b'POWERUP':
            cmd = 3
        elif ret == b'POWERDOWN':
            cmd = 4
        elif b'POWER:' in ret:
            p, var = ret.split(b':')
            cmd = int(var)
        else:
            cmd = 0
        return cmd

    def SetSysBluetoothCMD(self, cmd=0):
        try:
            conn = redis.Redis(host='127.0.0.1',
                               password='******',
                               port=6379,
                               db=1)
        except:
            print('GetSysBluetoothCMD ERR')
            return False
        strcmd = ''
        #ret=conn.get('RFIDSysBluetoothCMD')
        if cmd == 1:  #b'START':
            strcmd = 'START'
        elif cmd == 2:  #b'STOP':
            strcmd = 'STOP'
        elif cmd == 3:  #b'POWERUP':
            strcmd = 'POWERUP'
        elif cmd == 4:  #b'POWERDOWN':
            strcmd = 'POWERDOWN'
        elif cmd == 5:
            strcmd = 'RUN'
        elif cmd >= 10 and cmd <= 30:
            strcmd = 'POWER:' + str(cmd)
        else:
            strcmd = 'START'

        conn.set('RFIDSysBluetoothCMD', strcmd)
        return True

    def RecvThreading(self, s):
        #global thread_read_flg
        while self.thread_read_flg:
            try:
                data = s.recv(1024)
            except:
                print('Bluetooth sock recv err')
                self.allerr = True
                break

            if len(data) == 0:
                continue  #break
            print("received [%s]" % data)
            if b'START' in data:
                self.SetSysBluetoothCMD(cmd=1)
            elif b'STOP' in data:
                self.SetSysBluetoothCMD(cmd=2)
            elif b'POWERUP' in data:
                self.SetSysBluetoothCMD(cmd=3)
            elif b'POWERDOWN' in data:
                self.SetSysBluetoothCMD(cmd=4)
            elif b'POWER:' in data:
                p, var = data.split(b':')
                self.SetSysBluetoothCMD(cmd=int(var))
            else:
                pass

    def StopRecvThread(self):
        self.thread_read_flg = False
        self.thread_read.join()
        self.thread_read = None

        self.SetSysBluetoothCMD(cmd=2)

    def StopAll(self):
        self.runallflg = False
        self.StopRecvThread()
        self.allthread = None

    def EPCSendRoServerForBluetooth(self):
        #global devID
        #global usedtosendEPCQueue
        #global thread_read_flg
        #global thread_read
        print('EPCSendRoServerForBluetooth')

        #uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee"
        uuid = self.uuid

        try:
            service_matches = find_service(uuid=uuid, address=None)

            if len(service_matches) == 0:
                print("couldn't find the SampleServer service =(")
                return

            first_match = service_matches[0]
            port = first_match["port"]
            name = first_match["name"]
            host = first_match["host"]

            print("connecting to \"%s\" on %s" % (name, host))

            # Create the client socket
            sock = BluetoothSocket(RFCOMM)
            sock.connect((host, port))

            self.thread_read_flg = True
            self.thread_read = threading.Thread(target=self.RecvThreading,
                                                args=(sock, ))
            self.thread_read.setDaemon(True)
            self.thread_read.start()

            print("connected.  type stuff")
        except:
            print("Bluetooth connect err")
            return

        try:
            s_conn = redis.Redis(host='127.0.0.1',
                                 password='******',
                                 port=6379,
                                 db=1)
            if s_conn.ping():
                print('EPCSendRoServerForBluetooth ok')
            else:
                print('shawanyi')
        except:  #
            print('EPCSendRoServerForBluetooth err')
            s_conn = None
            return False

        s_conn.set('RFIDSysIsStart', 'isok')
        #self.SetSysBluetoothCMD(cmd=1)
        while self.devID == b'':
            retdevid = self.GetRfidDevID()
            time.sleep(2)

        self.allerr = False
        self.SetSysBluetoothCMD(cmd=2)

        try:
            while True:
                if self.allerr == True:
                    break
                msg = self.usedtosendEPCQueue.get_nowait()
                #print('msg:',msg)
                if msg == None:
                    continue

                varepc = msg.split(b':')
                sdevs = b'DEVID:' + self.devID + b';' + varepc[1] + b'+'
                print('queueSend:', sdevs)
                sock.send(sdevs)

        except:
            print('Bluetooth sock err')

        self.StopRecvThread()
        #self.thread_read_flg=False
        #self.thread_read.join()
        #self.thread_read=None

        #self.SetSysBluetoothCMD(cmd=2)
        sock.close()
        self.SetSysBluetoothCMD(cmd=2)
        print('bluetooth stop -------------------------')

    def EPCSendRoServerForBluetoothRUN(self):
        if self.runallflg == True:
            self.StopAll()
        self.runallflg = True
        while self.runallflg:
            self.EPCSendRoServerForBluetooth()

    def RunAll_Bluetooth(self):
        if self.allthread != None:
            return False
        self.allthread = threading.Thread(
            target=self.EPCSendRoServerForBluetoothRUN)
        self.allthread.setDaemon(True)
        self.allthread.start()
        return True