Python3 PICkitSerialAnalyzer

工作上需要用到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 clr
clr.AddReference("PICkitS")
from System import *
from System import Array
import os

device_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)

發佈留言