FeiTian.py
# coding=utf-8 # 添加消息 from ctypes import * import ctypes import json import time hinst = ctypes.cdll.LoadLibrary('/opt/Rockey3_SDK_LINUX_V1.10/api/api64/libRockey3.so.0.3') RY3_Find = hinst.RY3_Find RY3_Open = hinst.RY3_Open RY3_GetHardID = hinst.RY3_GetHardID RY3_GenRandom = hinst.RY3_GenRandom RY3_Read = hinst.RY3_Read RY3_Write = hinst.RY3_Write RY3_Close = hinst.RY3_Close handle = c_longlong(0) print('ROCKEY3 Sample INIT') def init(): VendorID = c_char_p(b"92799461") count = c_int(0) handle = c_longlong(0) hardwareid = c_char_p(b'00000000') arr = c_byte * 16 rand = arr() arr2 = c_byte * 10240 rand2 = arr2() harduuid = b"" ret = RY3_Find(VendorID, byref(count)) if ret == 0: print('Find ROCKEY3 Success.') else: print('Find ROCKEY3 Failed.') def writeData(): VendorID = c_char_p(b"92799461") count = c_int(0) handle = c_longlong(0) hardwareid = c_char_p(b'00000000') arr = c_byte * 16 rand = arr() arr2 = c_byte * 10240 rand2 = arr2() harduuid = b"" ret = RY3_Find(VendorID, byref(count)) if ret == 0: print('Find ROCKEY3 Success.') else: print('Find ROCKEY3 Failed.') ret = RY3_Open(byref(handle), 1) if ret == 0: print('Open ROCKEY3 Success.') else: print('Open Open Failed') start_time = time.strftime('%Y-%m-%d %H:%I:%S', time.localtime(time.time())) data={"a": "11", "b": "22", "c": "33", "uuid": "1C697B5AD7071026k", "expireDate": "2019-10-01", "expire": "yes","start_time":start_time} rand_content =json.dumps(data) #rand_content = b'{"a":"11", "b":"22", "c":"33","uuid":"1C697B5AD7071026","expireDate":"null","expire":"no"}' rand_content=rand_content.encode(encoding="utf-8") sizeLength = len(rand_content) ret = RY3_Write(handle, 0, pointer(c_int(sizeLength)), 4) ret = RY3_Write(handle, 4, rand_content, sizeLength) if ret == 0: print('Generate Write success') else: print('Generate Write failed') ret = RY3_Close(handle, 0) if ret == 0: print('Generate Close success') else: print('Generate Close failed') def readData(): VendorID = c_char_p(b"92799461") count = c_int(0) handle = c_longlong(0) hardwareid = c_char_p(b'00000000') arr = c_byte * 16 rand = arr() arr2 = c_byte * 10240 rand2 = arr2() harduuid = b"" ret = RY3_Find(VendorID, byref(count)) if ret == 0: print('Find ROCKEY3 Success.') else: print('Find ROCKEY3 Failed.') ret = RY3_Open(byref(handle), 1) if ret == 0: print('Open ROCKEY3 Success.') else: print('Open Open Failed') pkgLen = c_int(0) ret = RY3_Read(handle, 0, pointer(pkgLen), 4) ret = RY3_Read(handle, 4, rand2, pkgLen) if ret == 0: print(string_at(rand2, pkgLen)) hh = string_at(rand2, pkgLen) hhstring = str(hh, 'utf-8') print(hhstring) print(rand2[0], rand2[1], rand2[2], rand2[3], rand2[4], rand2[5], rand2[6], rand2[7]) print(c_char(rand2[0]), c_char(rand2[1]), c_char(rand2[2]), c_char(rand2[3]), c_char(rand2[4]), c_char(rand2[5]), rand2[6], rand2[7]) print(json.loads(hhstring)) object = json.loads(hhstring) print(object.get("a")) print('Generate Read success') else: print('Generate Read failed') return object def getHardID(): VendorID = c_char_p(b"92799461") count = c_int(0) handle = c_longlong(0) hardwareid = c_char_p(b'00000000') arr = c_byte * 16 rand = arr() arr2 = c_byte * 10240 rand2 = arr2() harduuid = b"" ret = RY3_Find(VendorID, byref(count)) if ret == 0: print('Find ROCKEY3 Success.') else: print('Find ROCKEY3 Failed.') ret = RY3_Open(byref(handle), 1) if ret == 0: print('Open ROCKEY3 Success.') else: print('Open Open Failed') ret = RY3_GetHardID(handle, hardwareid) if ret == 0: print('Get ROCKEY3 Hardware ID success.') harduuid = string_at(hardwareid) uuidstring = str(harduuid, 'utf-8', 'ignore') print(uuidstring) uid = readData() print('Get ROCKEY3 Read 000.') print(uid.get("uuid")) print('Get ROCKEY3 Read success.') else: print('Get ROCKEY3 Hardware ID failed') return uuidstring