下面这几句代码就可以导出dll里的函数,可以在后面打断点查看导入的类
import clr # add c# suppor
clr.FindAssembly('fd_radar.dll')
clr.AddReference("fd_radar")
from c#库的名字 import *
主程序:
# -*- coding: cp936 -*-
import socket
import time
import clr # add c# suppor
import re
import csv
import numpy as np
clr.FindAssembly('fd_radar.dll')
clr.AddReference("fd_radar")
from fd_radar import *
# print(clr.FindAssembly('fd_radar.dll'))
# print(clr.AddReference("fd_radar"))
server_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
address = ('192.168.1.2',60000)
server_socket.bind(address)
params ='''<?xml version="1.0"?>
<Param>
<type>FD5</type>
<antenna_tilt>0</antenna_tilt>
<working_radius>6000</working_radius>
</Param>'''
# 构造目标信息列表
trackdata = []
# 构造接口 # c#里面的类
instance = Trace("FD5", params)
with open("录数_6.csv","w",encoding="UTF-8",newline="") as csvfile:
writer = csv.writer(csvfile)
# 构建csv表头
writer.writerow(["方位","有效标志","航迹编号","丢失次数","更新时间","预测距离","预测方位","预测俯仰","预测高度","滤波速度","滤波距离","滤波方位","滤波俯仰","滤波高度","目标强度"])
while True:
data,address = server_socket.recvfrom(1400)
# # 构造接口
# instance =Trace("FD5", params)
# 输入字节
instance.Input(data)
# 伺服方位
trackdata.append(instance.ServoAngle)
# 目标有效标志
trackdata.append(instance.TrackData().Valid)
# 数据编号/航迹编号
trackdata.append(instance.TrackData().No)
# 目标丢失次数
trackdata.append(instance.TrackData().LostCount)
# 目标更新时间
trackdata.append(instance.TrackData().UpdateTime)
# 目标预测距离
trackdata.append(instance.TrackData().PRange)
# 目标预测方位
trackdata.append(instance.TrackData().PAzimuth)
# 目标预测俯仰
trackdata.append(instance.TrackData().PPitch)
# 目标预测高度
trackdata.append(instance.TrackData().PHeight)
# 目标的滤波速度
trackdata.append(instance.TrackData().FVelocity)
# 目标的滤波距离
trackdata.append(instance.TrackData().FRange)
# 目标的滤波方位
trackdata.append(instance.TrackData().FAzimuth)
# 目标的滤波俯仰
trackdata.append(instance.TrackData().FPitch)
# 目标的滤波高度
trackdata.append(instance.TrackData().FHeight)
# 目标强度
trackdata.append(instance.TrackData().Amp)
print(trackdata)
# 写入csv
writer.writerow(trackdata)
# 列表清空
trackdata.clear()
报故
System.OutOfMemoryException: 引发类型为“System.OutOfMemoryException
经查找发现是在循环里,一直定义一个对象,导致内存不足,将定义的这段程序放到循环外面,故障消失