FileSink.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. ###########################################
  2. # Project: CMSIS DSP Library
  3. # Title: FileSink.py
  4. # Description: Node for creating file sinks
  5. #
  6. # $Date: 30 July 2021
  7. # $Revision: V1.10.0
  8. #
  9. # Target Processor: Cortex-M and Cortex-A cores
  10. # -------------------------------------------------------------------- */
  11. #
  12. # Copyright (C) 2010-2021 ARM Limited or its affiliates. All rights reserved.
  13. #
  14. # SPDX-License-Identifier: Apache-2.0
  15. #
  16. # Licensed under the Apache License, Version 2.0 (the License); you may
  17. # not use this file except in compliance with the License.
  18. # You may obtain a copy of the License at
  19. #
  20. # www.apache.org/licenses/LICENSE-2.0
  21. #
  22. # Unless required by applicable law or agreed to in writing, software
  23. # distributed under the License is distributed on an AS IS BASIS, WITHOUT
  24. # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  25. # See the License for the specific language governing permissions and
  26. # limitations under the License.
  27. ############################################
  28. from ..simu import *
  29. import numpy as np
  30. # Write a list of samples to a file in text form
  31. class FileSink(GenericSink):
  32. def __init__(self,inputSize,fifoin,name,matplotlibBuffer):
  33. GenericSink.__init__(self,inputSize,fifoin)
  34. self._file=open(name,"w")
  35. self._bufPos=0
  36. self._buffer=matplotlibBuffer
  37. def run(self):
  38. b=self.getReadBuffer()
  39. nextPos = self._bufPos + self._inputSize
  40. if (nextPos <= self._buffer.size):
  41. # Save output to buffer defined in custom.py
  42. # and used to display result with matplotlib
  43. self._buffer[self._bufPos:self._bufPos+self._inputSize ]=b[:]
  44. self._bufPos = nextPos
  45. for sample in b:
  46. print(sample,file=self._file)
  47. return(0)
  48. def __del__(self):
  49. self._file.close()