SpectometerDecodeLib.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import json
  2. import base64
  3. import numpy as np
  4. class DataDecoder:
  5. def __init__(self, filename):
  6. self.data = ''
  7. with open(filename, 'r') as file:
  8. self.data = file.read()
  9. self.structed_data = json.loads(self.data)
  10. def getRawData(self, averaging_num=0, data_num=0, channel_num=0):
  11. for items in self.structed_data:
  12. if(items['averaging_num'] == averaging_num and items['data_num'] == data_num):
  13. for channel_data in items['channel_data']:
  14. if(channel_data['channel_num'] == channel_num):
  15. return channel_data['channel_data']
  16. return None
  17. def getDataDecoded(self, averaging_num=0, data_num=0, channel_num=0, points=10):
  18. rawData = self.getRawData(averaging_num, data_num, channel_num)
  19. edata = base64.b64decode(rawData.encode('utf-8'))
  20. arr = np.frombuffer(edata, dtype=np.int16, count=points, offset=0)
  21. return arr
  22. def getDataScaled(self, averaging_num=0, data_num=0, channel_num=0, points=10, range=5.0):
  23. decodedData = self.getDataDecoded(averaging_num, data_num, channel_num, points)
  24. return range * decodedData / 32768
  25. #dec = DataDecoder('saved229.json')
  26. # print(dec.getRawData(0, 0, 1)) # ::getRawData(averagingIndex, dataTriggerIndex, channelIndex)
  27. # a = dec.getDataDecoded(0, 0, 0, 500)
  28. # print(a[0:100]) # ::getDataDecoded(averagingIndex, dataTriggerIndex, channelIndex, count)
  29. #a = dec.getDataScaled(0, 1, 1, 500, 5.0)
  30. #print(a[0:100])