这篇用来记录在些模拟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

python程序调用C/C++代码的更多相关文章

  1. SQLite 版本引发的 Python 程序调用问题

    问题 在跑 OpenStack functional 功能测试的时候有两个用例过不去. nova.tests.functional.db.test_resource_provider.Resource ...

  2. 如何在python中调用C语言代码

    1.使用C扩展CPython还为开发者实现了一个有趣的特性,使用Python可以轻松调用C代码 开发者有三种方法可以在自己的Python代码中来调用C编写的函数-ctypes,SWIG,Python/ ...

  3. 想要薪资20-30K,Python程序员认真敲代码就够了!

    在这个年代,互联网的飞速壮大大家有目共睹,除了表露出的公共受益,其中计算机编程者也是做出了巨大的贡献,即使外国编程语言仍旧属于领导者,但是在互联网的壮大下,我们这是"地球村",国内 ...

  4. python下调用c语言代码

    1)首先,创建一个.c文件,其大体内容如下: 2 #include <Python.h> 99 char * extract(char * path)                    ...

  5. Python程序调用摄像头实现人脸识别

    使用简单代码实现摄像头进行在线人脸识别 import cv2 import sys import logging as log import datetime as dt from time impo ...

  6. python如何调用c编译好可执行程序

    python如何调用c编译好可执行程序       以下总结出几种在Python 中调用 C/C++ 代码的方法 ------------------------------------------- ...

  7. 【python基础】如何注释代码块

    前言 编写python程序有时候需要对代码块进行comment,本文对此介绍. 方法 python注释的三种方法: 1.井号注释单行代码: # 2.三个单引号或三个双引号注释语句块: ''' 或者&q ...

  8. python基础===PEP网站,代码规范指南

    PEP 8是最古老的PEP之一,它向Python程序员提供了代码格式设置指南.PEP 8的篇幅很长,但大都与复杂的编码结构相关. https://python.org/dev/peps/pep-000 ...

  9. 64位程序调用32DLL解决方案

    最近做一个.NETCore项目,需要调用以前用VB6写的老程序,原本想重写,但由于其调用了大量32DLL,重写后还需要编译为32位才能运行,于是干脆把老代码整个封装为32DLL,然后准备在64位程序中 ...

随机推荐

  1. IDC数据中心应具备如下基本条件:

    IDC数据中心应具备如下基本条件: 电力:有充足的直流电力保证,同时还应具备UPS不间断电源及充足的电池组以备用.高端数据中心通常配备柴油发电机等. 环境:符合电信标准的建筑设施,防尘防静电,相对适合 ...

  2. SIA-GateWay之API网关安装部署指南

    SIA-GATEWAY是基于SpringCloud微服务生态体系下开发的一个分布式微服务网关系统.具备简单易用.可视化.高可扩展.高可用性等特征,提供云原生.完整及成熟的接入服务解决方案.本文介绍AP ...

  3. 关于git使用的几点理解

    1.git为分布式的版本控制系统,有远程仓库和本地仓库,远程仓库和本地仓库之间建立关联关系后,可将本地仓库的更新push(相当于是内容同步)到远程仓库进行保存,远程仓库的作用相当于一个最终代码备份的地 ...

  4. HTTPS加密协议

    使用JDK自带的keytool工具生成一个证书(keystore文件),其中包含了密钥. a.在命令行输入以下命令:keytool -genkey -alias tbb -keyalg RSA -ke ...

  5. FreeSql (二十六)贪婪加载 Include、IncludeMany、Dto、ToList

    贪婪加载顾名思议就是把所有要加载的东西一次性读取. 本节内容为了配合[延时加载]而诞生,贪婪加载和他本该在一起介绍,开发项目的过程中应该双管齐下,才能写出高质量的程序. Dto 映射查询 Select ...

  6. FreeSql (三十一)分区分表

    分区 分区就是把一个数据表的文件和索引分散存储在不同的物理文件中.把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,数据库不同实现方式有所不同. 与分表不同,一张大表进行 ...

  7. Kubernetes v1.16 发布 | 云原生生态周报 Vol. 20

    作者:心贵.进超.元毅.心水.衷源.洗兵 业界要闻 Kubernetes v1.16 发布 在这次发布中值得关注的一些特性和 Feature: CRD 正式进入 GA 阶段: Admission We ...

  8. [SpringBoot——Web开发(使用Thymeleaf模板引擎)]

    [文字只能描述片段信息,具体细节参考代码] https://github.com/HCJ-shadow/SpringBootPlus 引入POM依赖 <properties> <ja ...

  9. Kubernetes学习之k8s

    k8s是什么 云原生 越来越多的开发者不仅使用容器作为应用部署和运行的载体,还积极使用了与容器这个应用载体天生匹配的微服务的架构,并依靠容器调度编排引擎的帮助,以保持对外部的敏捷性,这种容器化的微服务 ...

  10. JavaScript之深入对象(一)

    在之前的<JavaScript对象基础>中,我们大概了解了对象的创建和使用,知道对象可以使用构造函数和字面量方式创建.那么今天,我们就一起来深入了解一下JavaScript中的构造函数以及 ...