# 准备写入数据
data = bytearray(20) # 创建 20 字节的缓冲区 (每个整数占 2 字节,共 10 个整数)
# 按顺序将值 1, 2, 3, ..., 10 写入数据缓冲区
for i in range(10):
set_int(data, i * 2, i + 1) # 每个整数占 2 字节,从 i * 2 的位置开始写入整数
# 将数据写入到 DB1 的起始位置 (从字节 0 开始)
_client.write_area(Areas.DB, 1, 0, data)
# 读取 DB1 的前 20 字节
read_data = _client.read_area(Areas.DB, 1, 0, 20)
# 打印读取的数据
print(f"读取到的数据: {read_data}")
# 解析并显示每个整数值
for i in range(10):
int_value = get_int(read_data, i * 2)
print(f"读取到的第 {i + 1} 个整数值: {int_value}")
(还是得依赖chatgpt,进行快速试错。结合源码理解意思)
写小数:
# 准备写入数据
data = bytearray(20) # 创建 20 字节的缓冲区 (每个整数占 2 字节,共 10 个整数)
# 按顺序将值 1, 2, 3, ..., 10 写入数据缓冲区
for i in range(10):
set_int(data, i * 2, i + 1) # 每个整数占 2 字节,从 i * 2 的位置开始写入整数
# 将数据写入到 DB1 的起始位置 (从字节 0 开始)
_client.write_area(Areas.DB, 1, 0, data)
# 读取 DB1 的前 20 字节
read_data = _client.read_area(Areas.DB, 1, 0, 20)
# 打印读取的数据
print(f"读取到的数据: {read_data}")
# 解析并显示每个整数值
for i in range(10):
int_value = get_int(read_data, i * 2)
print(f"读取到的第 {i + 1} 个整数值: {int_value}")
####
# 准备写入数据(20 个小数)
data = bytearray(80) # 创建 80 字节的缓冲区 (每个 REAL 类型占 4 字节,共 20 个小数)
# 按顺序将 20 个浮动小数值写入数据缓冲区
for i in range(20):
set_real(data, i * 4, (i + 1) * 1.5) # 将浮动小数值 (i + 1) * 1.5 写入到数据缓冲区
# 将数据写入到 DB1 的起始位置 (从字节 20 开始,因为前面已经写了 20 个整数)
_client.write_area(Areas.DB, 1, 20, data)
# 读取 DB1 的第 20 到第 99 字节(包含 20 个小数)
read_data = _client.read_area(Areas.DB, 1, 20, 80)
# 打印读取到的数据
print(f"读取到的数据: {read_data}")
# 解析并显示每个浮动小数值
from snap7.util import get_real
for i in range(20):
real_value = get_real(read_data, i * 4)
print(f"读取到的第 {i + 1} 个浮动小数值: {real_value}")