Python程序调用c#的dll动态链接库

下面这几句代码就可以导出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

         经查找发现是在循环里,一直定义一个对象,导致内存不足,将定义的这段程序放到循环外面,故障消失 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值