如何在python中绘制二进制数据?

如何在python中绘制二进制数据?,python,matplotlib,binary-data,data-conversion,Python,Matplotlib,Binary Data,Data Conversion,首先,我知道我的问题经常被问到。但我还没有找到解决办法 我与USBTMC合作控制示波器。你可以找到更多关于它的信息。我能够捕获屏幕并将其写入文件(见图)。但我想每n秒实时绘制一次屏幕。例如,我想使用matplotlib.pyplot 这是我的代码(拼命尝试用pyplot绘制数据): 运行此代码后,我得到。。。看这幅画。 很遗憾,我无法测试它,但您可以尝试类似的方法 import io screenData = scope.read_raw() arrayData = plt.imread(i

首先,我知道我的问题经常被问到。但我还没有找到解决办法

我与USBTMC合作控制示波器。你可以找到更多关于它的信息。我能够捕获屏幕并将其写入文件(见图)。但我想每
n
秒实时绘制一次屏幕。例如,我想使用
matplotlib.pyplot

这是我的代码(拼命尝试用
pyplot
绘制数据):

运行此代码后,我得到。。。看这幅画。
很遗憾,我无法测试它,但您可以尝试类似的方法

import io

screenData = scope.read_raw()
arrayData = plt.imread(io.BytesIO(screenData))
plt.imshow(arrayData)
plt.show()

我想指出的是,对于实时打印,最好不要从示波器屏幕获取图像,而是获取原始数据。这将允许更快的操作。

您是否尝试过
plt.imshow(strData)
,但首先您需要根据屏幕大小对数据进行重塑:
strData.restrape(screen_y,screen_x)
,其中screen_x*screen_y=
len(strData)
。我按照您所说的那样尝试过,我得到了以下错误
回溯(最近一次调用最后一次):文件“/ScreenCapture.py”,第31行,在strData中。重塑(screen_y,screen_x)值错误:无法将大小为77878的数组重塑为形状(77877878)
我应该提到,如果你的数组大小是77878,那么屏幕x,y应该是这个的因子。但是77878的因子是1693 x 46,这是一个奇怪的屏幕大小,所以你得到的数据可能包含的信息不仅仅是屏幕像素,或者不是8位。如何知道这个数据的特征呢?
屏幕数据
是一个纯文本。我认为您不想查看字节并自己解码。一个简单的选择可能是使用
plt.imread
。您是对的。但我不知道如何操作。顺便说一下,我需要查看示波器显示的所有设置。在您的建议后,出现以下错误:
回溯(最近一次调用):文件“/ScreenCapture.py”,第33行,在arrayData=plot.imread(io.BytesIO(screenData))文件“/usr/lib/pymodules/python2.7/matplotlib/pyplot.py”中,第2177行,在imread返回处理程序(fname)中的imread返回文件“/usr/lib/pymodules/python2.7/matplotlib/image.py”中,第1258行运行时错误:_image_module::readpng:文件未被识别为PNG文件
。我认为此示波器不支持以
PNG
格式保存。如果改为
eps
呢?因为这
outFile=open(“screen.PNG”,“wb”);outFile.write(screenData)
根据您的要求工作,也因为您设置了
范围。write(“SAVE:IMAG:FILEF PNG”)
,我觉得您确实有一个PNG图像。当打开保存的文件而不是io流时,您是否会遇到同样的错误?不,我在打开
时没有任何错误。PNG
(使用
feh
)。或者我不明白您的意思。您的意思是我应该尝试使用
io
打开此文件吗?我的意思是,如果您使用
plt.imread(“screen.png”)
import io

screenData = scope.read_raw()
arrayData = plt.imread(io.BytesIO(screenData))
plt.imshow(arrayData)
plt.show()