背景
使用pyqtgraph根據數據進行繪製曲線,在線顯示。
說明
-
class ScrollingPloter
將生成曲線窗口封裝成類。 -
def __init__(self, title_name, plot_num, x_data_num = 300, refresh_rate = 1)
初始化對象,titile_name爲窗口標題,plot_num爲曲線數量,x_data_num爲x軸的數據數量,默認爲300,refresh_rate爲在線更新頻率,默認爲1ms -
x = ScrollingPloter("test", 2)
聲明一個標題爲test的窗口,曲線數量爲兩個。 -
timer1 = pg.QtCore.QTimer() timer1.timeout.connect(update1) timer1.start(0.02)
聲明一個定時器,connect一個函數,用來更新數據。
-
import socket server_addr = ('192.168.100.148',52333) server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind(server_addr) server.listen(5) ss, addr = server.accept() flag = False data_str = "" def update1(): global flag if (not flag): data = ss.recv(2) data_str = data.decode('utf-8') if (data_str == "A5"): flag = True if flag: data = ss.recv(6) data_str = data.decode('utf-8') print(data_str) flag = False x.data_array[1][:-1] = x.data_array[1][1:] x.data_array[1][-1] = float(data_str) x.curve_array[1].setData(x.data_array[1])
這個函數通過tcp server的方式來更新曲線中的數據,數據更新方式爲滑動窗口。其中
x.data_array[1]
爲曲線2 -
import serial ser=serial.Serial("COM7",115200) def update(): data_str = ser.read(20).hex() print(int(data_str[12:16],16) / 10.0) x.data_array[0][:-1] = x.data_array[0][1:] x.data_array[0][-1] = (int(data_str[12:16],16) / 10.0) x.curve_array[0].setData(x.data_array[0])
該函數使用串口方式更新數據,更新方式爲滑動窗口。其中
x.data_array[0]
爲曲線1