通过串口打印数据到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);


串口助手设置

链接: pan.baidu.com/s/1Y6-qAX

提取码: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__":