這篇用來記錄在些模擬Canoe生成CAN數據楨工具時遇到的問題,
生成CAN數據楨,主要分為兩個關注點:
1.如何從can信號名獲取到can信號的ID長度以及信號的起始位,並將信號值按照一定的規則填寫進去。
2.由於FCAN進行額checksum校驗和activecount的規則,這部分算法使用C/C++最好,所以設計到python程序調用C/C++代碼(也就是這篇文章)
1.如何用python調用C++代碼:
這個是python官方庫的cytpes模塊的介紹,可以關注一下“Fundamental data types”
(https://docs.python.org/3/library/ctypes.html)
這個提供了一個簡單的例子調用C語言代碼
(https://blog.csdn.net/theonegis/article/details/82490549)
這個python調用C++指針和指針數組的調用(變量比較亂,要好好看一下才能看出來)
(https://blog.csdn.net/weixin_41770169/article/details/90675653)
這個python調用C代碼,傳入一個數組給函數,因為傳進去的實質是指針,作為參數的數組內容會改變,兩個例子
(https://blog.csdn.net/u012449363/article/details/76690540/)
(https://blog.csdn.net/cahesi/article/details/80256638)
2.編譯C/C++生成動態庫
這個是如何創建C++動態庫工程的方法
(https://blog.csdn.net/qianchenglenger/article/details/21599235)
這個是如何生成C++動態庫的方法
32bit:直接用你的C++編譯器32位的即可
64bit:使用mingw-w64編譯器(如果沒有請看第3條)
無論32bit或者是64bit,生成動態庫方法如下:
cd到你的動態庫工程里面使用編譯命令如下
“gcc -shared -o yourDynamicLibNmae.dll yourSourceFileName.cpp”
最后生成的“yourDynamicLibNmae.dll”文件即為所求
3.Python和C的編譯器要保持一致,要不都是64bit的,要不都是32bit的
這個是windows下安裝mingw-w64的離線安裝包,安裝完畢請重啟電腦
(https://www.cnblogs.com/TAMING/p/9945389.html)
4.為了方便使用者,不必要每個人都安裝python環境,可以將程序打包成exe
(https://blog.csdn.net/shangxiaqiusuo1/article/details/81113900)
1> 安裝打包庫
pip install pyinstaller
2> 在python程序對應的路徑打開命令行
pyinstaller -F yourEnterFile.py
對應生成的exe在同路徑下的dist文件夾里面,名字為yourEnterFile.exe

出現這個現象即打包成功
3> 本程序因為涉及到dll,所以對應的dll也要拷貝在exe的目錄里面
雙擊yourEnterFile.exe
