Example #1
0
def findDevice():
    start = time.time()
    expr = b'TCPIP?*'
    instr_list = c_uint32()
    countDevice = c_uint32()
    list = []
    listDevice = create_unicode_buffer(256)

    ViStatus = visa64.viFindRsrc(rm_session, expr, byref(instr_list),
                                 byref(countDevice), listDevice)

    print(rm_session, ViStatus, instr_list)

    findStr = str(listDevice.value.encode('utf16'), 'cp1251').split('\t')
    if len(findStr) > 1:
        findStr[0] = findStr[0][2:-1]
        findStr[2] = findStr[2].split(' ')
        findStr[3] = findStr[0][2:-1].split('::')[1]
        if findStr[3].split('.')[1] == 'rs':
            findStr[3] = socket.gethostbyname('A-' + findStr[2][0] + '-' +
                                              findStr[2][1][5:] + '.local')
            findStr[0] = "TCPIP::" + findStr[3] + "::inst0::INSTR"

    #host = socket.gethostbyname('A-'+json_object[0][]+'-20895.local');
    #print (host)

    list.append(findStr)

    dontFind = None

    if countDevice.value == 0:
        visa64.viClose(instr_list)
        listDevice = JsonResponse({
            'ViStatus': str(ViStatus),
            'countDevice': str(countDevice.value),
            'listDevice': dontFind
        })
        json_object = json.loads(listDevice.getvalue().decode('utf-8'))
        print("Поиск устройств занял time: %s" % (time.time() - start))
        return json_object
    else:
        for countDevices in range(countDevice.value - 1):
            ViStatus = visa64.viFindNext(instr_list, listDevice)
            print(findStr)
            #list.append(str(listDevice.value)[2:-1])
            findStr = str(listDevice.value.encode('utf16'),
                          'cp1251').split('\t')
            findStr[0] = findStr[0][2:-1]
            findStr[2] = findStr[2].split(' ')
            findStr[3] = findStr[0][2:-1].split('::')[1]
            if findStr[3].split('.')[1] == 'rs':
                findStr[3] = socket.gethostbyname('A-' + findStr[2][0] + '-' +
                                                  findStr[2][1][5:] + '.local')
                findStr[0] = "TCPIP::" + findStr[3] + "::inst0::INSTR"

            list.append(findStr)

    visa64.viClose(instr_list)
    #return JsonResponse({'desc' : str(desc.value)})
    listDevice = JsonResponse({
        'ViStatus': str(ViStatus),
        'countDevice': str(countDevice.value),
        'listDevice': list
    })
    json_object = json.loads(listDevice.getvalue().decode('utf-8'))

    print("Поиск устройств занял time: %s" % (time.time() - start))

    print(json_object['listDevice'])
    return json_object