工作上需要用到PICkitSerialAnalyzer
GUI則是用Python3開發的…
而PICkitSerialAnalyzer官方提供的DLL是用C#開發的
相關訊息在這裡:https://www.microchip.com/Developmenttools/ProductDetails/DV164122
Python版本為3.7
在Python中使用C#的DLL需要的是Pythonnet這個模組
如果在其它版本的Python不能使用時
請記得測試不同的Pythonnet模組版本
在這版經過測試pythonnet 2.4.0是可用的
請下載dll之後放進python腳本檔的同層位置
先import clr
clr的相關介紹:https://blog.csdn.net/lxjames833539/article/details/6453544
clr之後請注意要馬上clr.AddReference
參數內容為dll檔名稱
再import system模組,用來做Python與C#的資料類型轉換用
片斷的程式碼(.py):
# !/usr/bin/env python# -*- coding:utf-8 -*-import clrclr.AddReference("PICkitS")from System import *from System import Arrayimport osdevice_number = self._how_many_PICkitSerials_are_Attached()print("Device:" + device)if device>0: status = Device.Initialize_PICkitSerial() if not status: os._exit(-1) status = I2CM.Configure_PICkitSerial_For_I2CMaster() if not status: os._exit(-1) p_slave_addr = Byte(slave_addr) p_start_data_addr = Byte(start_data_addr) p_num_bytes_to_read = Byte(read_data_bytes) p_data_array = Array[Byte]([0] * read_data_bytes) p_script_view = String("") result = I2CM.Read(p_slave_addr, p_start_data_addr, p_num_bytes_to_read, p_data_array, p_script_view) if not result: os._exit(-1) print(p_data_array)
程式碼中示範了將PICkitSerialAnalyzer設為I2CMaster並讀取data
在使用函數之前
用Byte跟Array做初始化
如p_slave_addr = Byte(slave_addr)
slave_addr值為0xB0
Python中沒有ref這種C#屬性,所以初始化之後再傳入即可
如p_data_array = Array[Byte]([0] * read_data_bytes)
沒有留言:
張貼留言