欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python調(diào)用.net動(dòng)態(tài)庫實(shí)現(xiàn)過程解析

 更新時(shí)間:2020年06月05日 11:26:30   作者:jiftle  
這篇文章主要介紹了Python調(diào)用.net動(dòng)態(tài)庫實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

pythonnet簡介

  • pythonnet是cpython的擴(kuò)展
  • pythonnet提供了cpython和.net程序集之間交互的橋梁
  • pythonnet開源在github上

pythonnet安裝

通過pip install pythonnet安裝

pythonnet的使用幫助

pythonnet的使用幫助,請參見github.

pythonnet中的坑

cpython是分32和64位的,對應(yīng)的pythonnet也是分的,版本要對應(yīng)好
pythonnet最核心的就是python.Runtime.dll動(dòng)態(tài)庫,這個(gè)庫是c#編寫的實(shí)現(xiàn)了兩種語言的交互

ref類型的參數(shù)如何返回

  • 返回值的第一個(gè)元素是c#的返回值
  • 返回值的第二個(gè)元素就是ref的值了,ref String[] 對應(yīng)的返回值第二個(gè)元素就是元組tuple

如何加載動(dòng)態(tài)庫

# clr是公共運(yùn)行時(shí)環(huán)境,該模塊是與c#交互的核心
import clr
import sys
# 導(dǎo)入clr時(shí)這個(gè)模塊最好也一起導(dǎo)入,這樣可用使用AddReference()方法
import System

# input()

from System import Array
from System import String

# 打印當(dāng)前.net運(yùn)行時(shí)的版本
print(System.Environment.Version)

# 打印當(dāng)前的環(huán)境變量
print('---------------------')
for p in sys.path:
  print(p)
print('---------------------')

# 加載動(dòng)態(tài),不要帶動(dòng)態(tài)庫的后綴名,如果d=None,表示動(dòng)態(tài)庫沒有找到
d = clr.FindAssembly('YctxKj.Card.Interpreter')
print(d)
# from后面跟的是動(dòng)態(tài)庫的名字,不是命名空間
from YctxKj.Card.Interpreter import *
d = clr.FindAssembly('YctxKj.Card.CardReader')
print(d)
from YctxKj.Card import CardReader

# 打印程序集,如果動(dòng)態(tài)庫加載成功,程序集里就會含有動(dòng)態(tài)庫的程序集
lt = clr.ListAssemblies(False)

for i in range(lt.Length):
  print('%d = %s' % (i,lt[i]))

ret = 0

# 程序調(diào)用業(yè)務(wù)代碼
_reader = CardReader()
_Interpreter = ScriptInterpreter()
_Interpreter._reader = _reader
_Interpreter.Init();

ret = _Interpreter.SetKeyMode(305)
print('ret=%d' % ret)

arCarder = ''

# input() 可以程序暫停,然后使用vs附加進(jìn)程python.exe調(diào)試
# input()
ret = _reader.ListReader(arCarder);
print('ret = %d' % ret[0])
print('ref param string[] length = %d' % ret[1].Length)
if ret[1].Length > 0:
  items = ret[1]

  for t in items:
    print(t)
else:
  print('don\'t find cardreader dev')
  exit()

# 鏈接讀卡器
strReader = items[1]
strATR = ''
nRet = _reader.Connect(strReader, strATR)
if nRet[0] != 0:
  print('connect card fail, nRet=%d' % nRet[0])
  _reader.Beep()
  _reader.Beep()
  exit()

print('crd connect successed,atr=%s' % nRet[1])
_reader.Beep()
# 斷開讀卡器
_reader.Disconnect()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python驗(yàn)證企業(yè)工商注冊碼

    Python驗(yàn)證企業(yè)工商注冊碼

    這篇文章主要介紹了Python驗(yàn)證企業(yè)工商注冊碼的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • python安裝以及IDE的配置教程

    python安裝以及IDE的配置教程

    Python在Linux、windows、Mac os等操作系統(tǒng)下都有相應(yīng)的版本,不管在什么操作系統(tǒng)下,它都能夠正常工作。除非使用平臺相關(guān)功能,或特定平臺的程序庫,否則可以跨平臺使用。今天我們主要來探討下windows系統(tǒng)下的安裝與配置
    2015-04-04
  • 一起來了解python的if流程控制

    一起來了解python的if流程控制

    這篇文章主要為大家詳細(xì)介紹了python的if流程控制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • pandas中DataFrame的merge操作的實(shí)現(xiàn)

    pandas中DataFrame的merge操作的實(shí)現(xiàn)

    本文主要介紹了pandas中DataFrame的merge操作的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Linux CentOS Python開發(fā)環(huán)境搭建教程

    Linux CentOS Python開發(fā)環(huán)境搭建教程

    這篇文章主要介紹了Linux CentOS Python開發(fā)環(huán)境搭建方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Python3讀取和處理超大文件的操作詳解

    Python3讀取和處理超大文件的操作詳解

    在日常工作中,文件對象是我們常接觸到的可迭代類型之一,一般用?for?循環(huán)遍歷一個(gè)文件對象,可以逐行讀取它的內(nèi)容,但這種方式在碰到大文件時(shí),可能會出現(xiàn)一些奇怪的效率問題,所以本文給大家介紹了Python3讀取和處理超大文件的操作,需要的朋友可以參考下
    2024-04-04
  • 分析詳解python多線程與多進(jìn)程區(qū)別

    分析詳解python多線程與多進(jìn)程區(qū)別

    這篇文章主要為大家分析詳解了python多線程與多進(jìn)程區(qū)別,以及在使用過程中的注意要點(diǎn),有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • 基于python實(shí)現(xiàn)計(jì)算且附帶進(jìn)度條代碼實(shí)例

    基于python實(shí)現(xiàn)計(jì)算且附帶進(jìn)度條代碼實(shí)例

    這篇文章主要介紹了基于python實(shí)現(xiàn)計(jì)算且附帶進(jìn)度條代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python生成指定大小的文件兩種解決方案

    Python生成指定大小的文件兩種解決方案

    這篇文章主要介紹了Python生成指定大小的文件,這里提供兩種解決方案幫助python完成我們生成任意大小的文件,需要的朋友可以參考下
    2023-06-06
  • python調(diào)用支付寶支付接口流程

    python調(diào)用支付寶支付接口流程

    這篇文章主要介紹了python調(diào)用支付寶支付接口流程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評論