python读取二进制数据转整形,在python中读取二进制数据(替换C代码)

我正在写一个python程序来代替C程序,它从微控制器接收数据。这是在C语言中使用一个简单的socket和read函数完成的。在我的python程序中,我可以从微控制器读取一系列数据,但我似乎无法将其转换成可读的格式。我捕获了这个字符串并编写了一个小得多的程序,试图将它转换成一个数字列表:import array

import thread

import socket

import time

import math

import numpy as np

import struct

data = open("rawfile.txt", 'r')

conv = open("conv.bin", 'wb')

pack = open("pack.txt", 'w')

# This line reads in the data string from the file

rawdata = data.read()

length = len(rawdata)

unpack = np.zeros(length, dtype=np.int64)

inter = np.int64

size = 4

m=0

for n in range(0,length-size):

inter = struct.unpack_from('h',rawdata,n)

unpack[m] = inter[0]

m=m+1

n=n+4

conv.write(unpack)

for j in range(0,len(unpack)):

#print unpack[j]

stringtowrite = str(unpack[j])

pack.write(stringtowrite)

pack.write(',')

#conv.write(dat2)

print "Done"

这是这个程序产生的数据(在Matlab中绘制),以及数据应该是什么样子的:(更干净的脉冲是它应该看起来的样子)

27864b60839903dc2130c5bad4c62635.png

69e57e41b15a2cb225327bf41578dfef.png

任何帮助都将不胜感激,我已经为此挣扎了好几个星期了。我可以上传原始数据文件,但我不知道如何做到这一点,因为它相当大。在

总而言之,我的问题是为什么程序为第一个图像而不是第二个图像生成数据,我读取和转换数据的方式是否有明显的错误。在

提前谢谢!在

编辑/更新:

感谢下面的答案,我现在使用这个:

^{pr2}$

数据看起来更好!第一个图像使用dtype('int16'),第二个图像使用dtype('int32')。我还发现我正在读取的数据是由交替的实数/虚数组成的,这是否应该更改我用于numpy数据类型的格式字符串?据我所知,C代码中没有任何步骤可以解释这一点。在

最终更新:

为了避免给其他人造成混淆,上面的第二个图像正确地读取了数据,这是实际数据中的一个问题,导致它们看起来不正确。在

29c4637ce47a3fbbdf086d226898be27.png63e19b4abcf18293814f6200e8b0c75e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值