import matplotlib
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style
from matplotlib.colors import BoundaryNorm
from matplotlib.ticker import MaxNLocator
import numpy as np
import serial #Import Serial Library
import time
from time import sleep
arduinoSerialData = serial.Serial('COM6',115200) #Create Serial port object called arduinoSerialData
size_of_the_matrix = 5
x, y = np.meshgrid(np.linspace(0,5,6), np.linspace(0,5,6)) #each axis is from 0 to 3 devided in 4 sections
distances_matrix = np.zeros((size_of_the_matrix,size_of_the_matrix))
fig = plt.figure(figsize=None,facecolor='white')
ax2 = plt.subplot()
quad1 = ax2.pcolormesh(x,y,distances_matrix,vmin=0,vmax=3000,shading='flat')
bar = fig.colorbar(quad1, ax=ax2)
bar.set_label("Ranges in each ROI (mm)")
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
def init():
quad1.set_array([])
return quad1
def animate(iter):
global distances_matrix
if (arduinoSerialData.inWaiting()>0): #Check if data is on the serial port
data_receving_from_arduino_as_string= arduinoSerialData.readline()
distances_in_string = data_receving_from_arduino_as_string.split(',') #Convering the data received from the arduino from string to a float
distances_in_string.pop()
distances = [float(i) for i in distances_in_string]
if(len(distances)==size_of_the_matrix*size_of_the_matrix):
distances_matrix = np.reshape(distances, (size_of_the_matrix, size_of_the_matrix))
b = distances_matrix[:,0:1]
#print b
a = distances_matrix [:,1:5]
#print a
c = np.concatenate((a,b), axis =1)
distances_matrix = np.flipud(c)
#distances_matrix = c
#print distances_matrix
quad1.set_array(distances_matrix.ravel())
anim = animation.FuncAnimation(fig,animate ,interval=100,blit=False,repeat=False)
plt.show()
이코드에서 제목과같은 오류가 발생해 distances = [float(i) for i in distances_in_string] 부분을 distances = [float(i.decode()) for i in distances_in_string] 와같은 방식으로 바꿔봐도 해결이 되지않습니다. 어디가 잘못된걸까요?
에러메세지 전문은 아래와 같습니다!
PS C:\Users\hjj96> & python "c:/Users/hjj96/Desktop/Lidar-using-VL53L1X- master/Files_for_demo/Files for demo/Read_and_plot_2d_map.py"
Traceback (most recent call last):
File "C:\Users\hjj96\anaconda3\lib\site-packages\matplotlib\backend_bases.py", line 1216, in _on_timer
ret = func(*args, **kwargs)
File "C:\Users\hjj96\anaconda3\lib\site-packages\matplotlib\animation.py", line 1477, in _step
still_going = super()._step(*args)
File "C:\Users\hjj96\anaconda3\lib\site-packages\matplotlib\animation.py", line 1189, in _step
self._dra w_next_frame(framedata, self._blit)
File "C:\Users\hjj96\anaconda3\lib\site-packages\matplotlib\animation.py", line 1208, in _draw_next_frame
self._draw_frame(framedata)
File "C:\Users\hjj96\anaconda3\lib\site-packages\matplotlib\animation.py", line 1776, in _draw_frame
self._drawn_artists = self._func(framedata, *self._args)
File "c:/Users/hjj96/Desktop/Lidar-using-VL53L1X-master/Files_for_demo/Files for demo/Read_and_plot_2d_map.py", line 44, in animate
distances_in_string = data_receving_from_arduino_as_string.split(',') #Convering the data received from the arduino from string to a float
TypeError: a bytes-like object is required, not 'str'