亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python調(diào)用.NET庫的方法步驟

 更新時間:2019年12月27日 11:21:41   作者:天元浪子  
這篇文章主要介紹了Python調(diào)用.NET庫的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

開發(fā)背景是這樣的:整個項目中使用很多臺摩托羅拉的RFID讀卡器,我要為這些讀卡器寫一個管理程序,判斷是否有RFID標簽進入或離開某個區(qū)域。用戶提供給我的,除了設(shè)備,就是一個.net的動態(tài)庫文件。

經(jīng)朋友指點,安裝了.NET Framework 4.0和IronPython 2.7之后,終于可以調(diào)用.net庫了。我不確定的是,python環(huán)境下那些打包工具是否還是使用,因為腳本要在IronPython的解釋器ipy.exe中運行——這是后話,需要在以后的應(yīng)用中去實踐。先說說實際應(yīng)用中的稀奇古怪的問題吧。

我的核心任務(wù)有兩個:讀RFID標簽、讀寫GPIO端口。前者相對簡單,操作過程也非常順利。后者就屢屢碰壁,到現(xiàn)在也沒有徹底解決。

C#讀GPIO端口的代碼是這樣的:

IOPinStatus[] inputPinsStatus = null;
IOPinStatus[] outputPinsStatus = null;
Reader.GetIOStatus(out inputPinsStatus,out outputPinsStatus);

inputPinsStatus[i].pinStatus就是輸入端口的狀態(tài),這是一個布爾型的變量。

IronPython需要先構(gòu)造兩個變量inputPinsStatus和outputPinsStatus,然后再調(diào)用GetIOStatus方法:

inputPinsStatus = clr.Reference[Array[bool]](())
outputPinsStatus = clr.Reference[Array[bool]](())
Reader.GetIOStatus(inputPinsStatus, outputPinsStatus)

inputPinsStatus是不能遍歷的,必須使用inputPinsStatus.Value才可以。

C#寫GPIO端口的代碼是這樣的(端口0寫True):

IOPinStatus[] selectedOutPins = null;
selectedOutPins = new IOPinStatus[6];
selectedOutPins[0].pin = IOPins.PIN_0;
selectedOutPins[0].pinStatus = True;
Reader.SetOutputStatus(selectedOutPins);

IronPython代碼是這樣的:

outForSet = Array.CreateInstance(IOPinStatus, 6)
IOPinStatus.pin.SetValue(outForSet[0], IOPins.PIN_0)
IOPinStatus.pinStatus.SetValue(outForSet[0], True)
Reader.SetOutputStatus(outForSet)

這時,蹊蹺事兒出現(xiàn)了:代碼可以順利執(zhí)行,沒有提示語法錯誤,設(shè)備也沒有相應(yīng)的動作!檢查SetValue的結(jié)果,的確沒有生效。本來這一句最初是這樣寫的:

outForSet[0].pinStatus = True

但系統(tǒng)提示:RuntimeWarning: Setting field Field on value type IOPinStatus may result in updating a copy. Use IOPinStatus.pinStatus.SetValue(instance, value) if this is safe. For more information help(IOPinStatus.pinStatus.SetValue).

改用SetValue之后,卻好比對牛彈琴,什么反應(yīng)也沒有了。強烈郁悶中。。。

冥思苦想了一天之后,我發(fā)現(xiàn)了IOPinStatus的原型函數(shù):

print IOPinStatus.__doc__
IOPinStatus(pin: IOPins, pinStatus: bool)

既然無法直接給變量的pin和pinStatus賦值,那么重新構(gòu)造一個變量是否可行呢?

outForSet = Array.CreateInstance(IOPinStatus, 6)
outForSet[0] = IOPinStatus(IOPins.PIN_0, True)
... ...
Reader.SetOutputStatus(outForSet)

終于成功了!

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

相關(guān)文章

  • numpy如何按條件給元素賦值np.where、np.clip

    numpy如何按條件給元素賦值np.where、np.clip

    這篇文章主要介紹了numpy如何按條件給元素賦值np.where、np.clip問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python使用scapy模塊實現(xiàn)ARP掃描的過程

    python使用scapy模塊實現(xiàn)ARP掃描的過程

    這篇文章主要介紹了python使用scapy模塊實現(xiàn)ARP掃描的過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Python實現(xiàn)從網(wǎng)絡(luò)攝像頭拉流的方法分享

    Python實現(xiàn)從網(wǎng)絡(luò)攝像頭拉流的方法分享

    這篇文章主要為大家詳細介紹了Python實現(xiàn)從網(wǎng)絡(luò)攝像頭拉流的幾種方法,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下
    2023-01-01
  • python 輪詢執(zhí)行某函數(shù)的2種方式

    python 輪詢執(zhí)行某函數(shù)的2種方式

    這篇文章主要介紹了python 輪詢執(zhí)行某函數(shù)的2種方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python pygame入門教程

    python pygame入門教程

    pygame是python的游戲編程模塊,今天我們就來一起簡單的學習如何使用該模塊
    2021-06-06
  • opencv 圖像加法與圖像融合的實現(xiàn)代碼

    opencv 圖像加法與圖像融合的實現(xiàn)代碼

    這篇文章主要介紹了opencv 圖像加法與圖像融合的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • python add_argument()用法解析

    python add_argument()用法解析

    這篇文章主要介紹了python add_argument()用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • python spilt()分隔字符串的實現(xiàn)示例

    python spilt()分隔字符串的實現(xiàn)示例

    split() 方法可以實現(xiàn)將一個字符串按照指定的分隔符切分成多個子串,本文介紹了spilt的具體使用,感興趣的可以了解一下
    2021-05-05
  • Python連接MySQL數(shù)據(jù)庫的簡單便捷方法

    Python連接MySQL數(shù)據(jù)庫的簡單便捷方法

    在數(shù)據(jù)分析過程中往往要操作較大的數(shù)據(jù)集,這就需要連接數(shù)據(jù)庫進行操作,下面這篇文章主要給大家介紹了關(guān)于Python連接MySQL數(shù)據(jù)庫的簡單便捷方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • 10個Python小技巧你值得擁有

    10個Python小技巧你值得擁有

    這篇文章主要介紹了10個Python小技巧,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09

最新評論