Программа
Код: Выделить всё
import pyvisa
from pyvisa.constants import StopBits, Parity
import struct
# Connect to instrument
# SR620 Universal Time Interval Counter
rm = pyvisa.ResourceManager()
TAC = rm.open_resource('ASRL4::INSTR',
baud_rate = 19200,
data_bits = 8,
stop_bits = StopBits(20),
parity = Parity(0),
read_termination='\r\n')
# list where result is stored
meanlist = []
# retrieve histogram as binary
# 10 slices of 25 points
for j in range(0,10):
data = TAC.query_binary_values("XHST? "+str(j)+";*WAI", datatype='i',
is_big_endian=False,
data_points=25,
header_fmt = 'empty', expect_termination = True)
meanlist.extend(data)
# retrieve histogram as integer
meanlist_int = []
for j in range(1,250):
meanlist_int.append( int(float(TAC.query(f'HSPT? {j}') ) ))
Затем я строю список средних значений (синяя кривая) и средний список_int (оранжевая кривая) для сравнения (используя matplotlib.pyplot.step). Горизонтальная линия равна 128. Для ясности этот график сосредоточен только на нескольких точках данных.
[img]https://i.sstatic. net/rETgojrk.png[/img]
Двоичная проверка по сравнению с целочисленным выводом
При проверке двоичного файла я заметил, что данные были выражены настолько минимально -значительный бит выражается как символ ascii, когда число меньше 128, но затем как четыре байта стиля '\x00' для более высоких значений.
Таким образом, двоичный вывод дает, например, 2 как \x02\x00\x00\x00, 112 как p\x00\x00\x00, 125 как }\x00\x00\x00, 127 как \x7f\x00\ x00\x00, но на удивление 128 как \x00\x00\x00\x00.
Это проблема машины, которая это производит, или это в как я читаю или обрабатываю данные?
Подробнее здесь: https://stackoverflow.com/questions/791 ... -multiples