既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
- PC与光电转换器 网口连接以及光电转换器与电源光纤连接
经过与客服上的技术支持 咨询,把光纤线连接如下,并ping通。电源的IP地址设置成192.168.0.100,PC上的IP地址设置成192.168.0.2;并成功ping通。
图片如下:
- 指示灯状态说明
其中光电转换器的指示灯状态说明如下:
FX代表光纤连通,而FX右边的代表网口(电口)连通,上面1000代表1000M。
以上说明物理层 以太帧这块基本没问题。
1 UDP设置值
- 修改Demo例程
通过之前的Python代码,把IP地址修改对应。
需要根据技术手册把UDP帧格式搞懂
根据向销售电源设备的技术支持询问,拿到一段Python代码并读懂,然后根据技术手册对UDP帧格式的说明,修改对应参数。
import socket
import struct
# -----------------------------------------------------------------------------
# Parameters:
# -----------------------------------------------------------------------------
# IP地址应该要对应修改一下,变量声明
HOST_IP = '192.168.0.2'
HOST_PORT = 28685 #端口自定义
DEST_IP = '192.168.0.100'
#DEVICE_IP = '192.168.0.10'
#DEVICE_IP = '255.255.255.255'
DEVICE_PORT = 30721 #标准设备端口号
#RESP_TIMEOUT = 0.4
# 是不是构建UDP格式
FAST_PROTOCOL_ID = 0x7631
COMMAND = 0xFFDD # 这值设置的是不是有问题
NONCE = 0x111122223333AAAA
FAST_ADDR = 0xFFFF # 地址值
SET_POINT = 6.0 #分别是MSB值 和LSB值
DUMMY_ADDR = 0xAACB
DUMMY_SET_POINT = -4012300012348754.123456789
BROADCAST = True
# -----------------------------------------------------------------------------
# Costants:
#data = b'\x43\x41\x45\x4E\x65\x6C\x73' #CAENels
#data = b'\x12\x34'
# Packet Header:
# 把上面的帧打包成帧 对应UDP格式来进行打包
data = struct.pack('>H', FAST_PROTOCOL_ID) # Bin endian - unsigned short (16 bits - 2 bytes)
data += struct.pack('>H', COMMAND) # Bin endian - unsigned short (16 bits - 2 bytes)
data += struct.pack('>Q', NONCE) # Bin endian - unsigned long long (64 bits - 8 bytes)
# Packet data:
data += struct.pack('>Hf', DUMMY_ADDR, DUMMY_SET_POINT) # 6 bytes
data += struct.pack('>Hf', FAST_ADDR, SET_POINT) # Bin endian - unsigned short + float (2 bytes + 4 bytes)
data += struct.pack('>Hf', DUMMY_ADDR, DUMMY_SET_POINT) # 6 bytes
data += struct.pack('>Hf', DUMMY_ADDR, DUMMY_SET_POINT) # 6 bytes
data += struct.pack('>Hf', DUMMY_ADDR, DUMMY_SET_POINT) # 6 bytes
data += struct.pack('>Hf', FAST_ADDR, SET_POINT) # Bin endian - unsigned short + float (2 bytes + 4 bytes)
data += struct.pack('>Hf', DUMMY_ADDR, DUMMY_SET_POINT) # 6 bytes
# Broadcast socket configuration:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(1.0)
s.bind((HOST_IP, HOST_PORT))
s_recv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s_recv.settimeout(1.0)
s_recv.bind(('', DEVICE_PORT))
# Send:
if (BROADCAST):
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(data, ('<broadcast>', DEVICE_PORT))
else:
s.sendto(data, (DEST_IP, DEVICE_PORT))
m = s_recv.recv(1024)
print("Recv:", m)
# Close connections:
s.close()
s_recv.close()
1.1 UDP帧格式
UDP帧格式由:UDP header + UDP data 组成。
1.UDP header
UDP 头由 4 个字段组成,每个字段为 16 位。
UDP header = source port + destination port + length +checksum.
1.2 UDP data
The device Fast Address (ID) : 可以设置也可以读取
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新