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

沒有留言:

張貼留言

About

努力在程式的大海
用力的揮動雙手
找出屬於自己的航線

Blog Archive

Traffic