通过串口打印数据到TXT,python数据读取,保存日志
zynq串口输出,先读取寄存器数据,然后通过位拼接,将数据转成64位。
__uint64_t buffer[7];//设置为64位,方便后续位拼接
__uint64_t data;
for (int i =0; i<7;i++){
//数据读取
buffer[i] = Xil_In32(AE_BASE_ADDR + (u32)(i*4)) ;
//位拼接
data = (buffer[6]<<60) + (buffer[5]<<48) +(buffer[4]<<36) +(buffer[3]<<24 ) +(buffer[2]<<12 ) +buffer[1];
//转为int型
int data_int = data >> 48;
//转为double 型
double data_double = data_int;
printf("%d ",data_int);
printf("%f \r\n",data_double);
串口助手设置
链接: https:// pan.baidu.com/s/1Y6-qAX G424Uk6DMMRUBPyQ
提取码:4x86
python读取TXT,并保存为数组
def read_pid_data():
f = open(r"E:\test.txt")
# f = open(file_path)
line = f.readline()
data_list = []
while line:
num = list(map(float,line.split()))
data_list.append(num)
line = f.readline()
f.close()
data_array = np.array(data_list)
# x = y = z = np.arange(0.0,5.0,1.0)
# np.savetxt('test.out', x, fmt='%1.4e') # use exponential notation
x = np.shape(data_array)
print(x[0])
value = [[1.0 for col in range(64)] for row in range(1920)]
for i in range(0,x[0]):
if len(data_array[i]) == 0:
print("no data")
elif len(data_array[i]) == 3:
value[int(data_array[i][0])] [int(data_array[i][1])]= data_array[i][2]
#将数组保存到txt中
name ='E:/train/'+'star'+ '_x_'+ str(x)
np.savetxt(name, value,fmt='%f',delimiter=',')
return data_array
if __name__ == "__main__":