雷达解析程序
# -*- coding: cp936-*-
import socket
import re
class jiema:
def yushe3(self):
receve_r = []
receve_av = []
receve_v = []
receve_h = []
while True:
client = socket.socket()
client.connect(('192.168.0.100', 6008))
client.send(b'\x55\xAA\x10\x00\x01\x00\x01\x00\x01\x00\x01\x00\x05\x00\xEE\xEE')
receve_data = client.recv(1024)
print(receve_data)
print(receve_data.hex())
a = receve_data.hex()
if len(receve_data.hex()) == 90:
# print('方位', a[76:78] + a[74:76])
# print(int(a[76:78] + a[74:76], 16) / 100)
if int(a[76:78] + a[74:76], 16) / 100 >= 270:
# print(int(int(a[76:78] + a[74:76], 16) / 100 - 360))
receve_av.append(int(int(a[76:78] + a[74:76], 16) / 100 - 360))
else:
# print(int(a[76:78] + a[74:76], 16) / 100)
receve_av.append(int(a[76:78] + a[74:76], 16) / 100)
# print('速度', a[68:70] + a[66:68])
if a[70:74] == 'ffff':
# print(-int(a[68:70] + a[66:68], 16) / 100)
receve_v.append(-int(a[68:70] + a[66:68], 16) / 100)
else:
# print(int(a[68:70] + a[66:68], 16) / 100)
receve_v.append(int(a[68:70] + a[66:68], 16) / 100)
# print('距离', a[60:62] + a[58:60])
# print(int(a[60:62] + a[58:60], 16) / 100)
receve_r.append(int(a[60:62] + a[58:60], 16) / 100)
# 航迹号
# print('航迹号',a[52:54] + a[50:52])
receve_h.append(int(a[52:54] + a[50:52],16))
elif len(receve_data.hex()) > 90:
print('数据', receve_data.hex())
elif len(receve_data.hex()) == 58:
print('状态2:', receve_data.hex())
elif len(receve_data.hex()) == 64:
print('状态3', receve_data.hex())
print(len(receve_data.hex()))
client.close()
if len(receve_r) == 10:
return receve_h,receve_r,receve_av,receve_v
?这一段是主要的tcp通信程序,网上查一查。我的这款雷达需要先发送一个命令,才会返回目标信息,所以先用send发送一个命令。
?计算机先接到为下面第一行。经十六进制处理为第二行。注意,这里用utf-8编码会报错,要用gbk编码了。
?
|