C#动态库封装(CH341\CP2112)
总述
常见的设备在PC端都只提供C/C++的动态库,当需要使用C#调用时就需要进行封装一下,下面对CP2112/CH341提供的动态库进行封装。
封装操作
首先按一下模式将C/C++的动态库中的函数进行提取和定义
using System.Runtime.InteropServices;[DllImport("SLABHIDtoSMBus.dll", EntryPoint = "HidSmbus_GetNumDevices")]
public extern static int HidSmbus_GetNumDevices(ref uint lpdwNumDevices, int vid, int pid);
CH341/CP2112
CH341 是可以USB转IIC的芯片,既可以在PC端控制其通过IIC输出数据,例如: 控制IIC OLed屏幕显示灯。
CP2112 是可以USB转SMBUS的芯片,可以用来进行读写电源芯片,例如: TI的bq系列芯片等
编译库链接
接口:
public static uint CP2112_Get_Devices();
public static IntPtr CP2112_Open(uint index);
public static int CP2112_Close(IntPtr device);
public static int CP2112_Send(IntPtr device, byte slaveAddress, byte reg, byte[] buffer, byte sendlen);
public static int CP2112_Read(IntPtr device, byte slaveAddress, byte reg, ref byte[] buffer, byte numBytesToRead);public static int Ch341_Open(uint iIndex);
public static bool Ch341_Close(uint iIndex);
public static bool IIC_Write_Bytes(uint iIndex, byte slave_addr, byte reg_addr, byte[] buf, uint len);
public static bool IIC_Read_Bytes(uint iIndex, byte slave_addr, byte reg_addr, ref byte buf, uint len);
获取:
关注,并发送 动态库
C#动态库封装(CH341\CP2112)相关推荐
- CUDA动态库封装以及调用
CUDA动态库封装以及调用 参考:http://blog.sina.com.cn/s/blog_618941f701016d26.html 通过将CUDA相关计算操作放在库中,方便在项目中调用,省去了 ...
- VC++动态库封装及调用
https://blog.csdn.net/zhangfuliang123/article/details/71515796 一直对动态库的封装理解不是很透彻,虽然之前写过一个Demo,不过并没有真正 ...
- C++动态库封装及调用
一直对动态库的封装理解不是很透彻,虽然之前写过一个Demo,不过并没有真正的理解.所以写下来,帮助自己理解下. 1.一个程序从源文件编译生成可执行文件的步骤: 预编译 --> 编译 --> ...
- 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )
文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...
- 【C 语言】动态库封装与设计 ( Windows 动态库简介 | Visual Studio 调用动态库 )
文章目录 一.Windows 动态库简介 二.Visual Studio 调用动态库 一.Windows 动态库简介 在 C:\Windows\System32 目录中 , 存放着 Windows 中 ...
- python调用c++动态库 linux_linux中使用boost.python调用c++动态库的方法
前言 最近开始使用 robot framework 测试c++的动态库,robot framework 是跑在 windows 上面,c++动态库是跑在远程linux主机上面.测试办法是让 robot ...
- 使用Poco实现插件方式加载动态库
动态库封装虚基类 //AbstractPlugin.h #ifndef __ABSTRACTPLUGIN_H__ #define __ABSTRACTPLUGIN_H__#include <st ...
- c语言仿ce内存搜索工 源代码_C语言函数库:动态库和静态库优缺点比较
函数的重要性 我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护.我们可以把他们制 ...
- C语言函数库:动态库和静态库优缺点比较
函数的重要性 我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护.我们可以把他们制 ...
最新文章
- 1480. 一维数组的动态和
- FTP 主动、被动工作模式
- FreeRTOS实验_独立看门狗监视多线程
- python的dataframe的groupby_python pandas.DataFrame.groupby()方法详解
- Android AP模式下获取SSID/PASSWORD(反射机制
- AppFuse 3的乱码问题
- 最适合程序员的电脑是什么?
- iOS 9:五、字体
- Java函数中改变变量值
- 网课查题接口 搜题公众号对接题库教程 (附赠题库接口)
- 微信公众号html教程,公众号排版简易教程
- SQLserver数据库被置疑了(“可疑”)状态下怎么处理?
- 计算机游戏cpu,2021年11代酷睿cpu游戏电脑配置推荐(可装win7系统)
- Mysql8中降序索引的底层实现
- 全自动与半自动手表的区别_机械表全自动好还是半自动好 有什么区别
- 为什么现在的智能手机,都被设计成不可更换电池?
- MATLAB-视频的前景目标提取
- Flash Helper Service 这个流氓,动不动弹出广告!!
- 极光笔记|百亿级KV存储在极光的运维实践之路
- 转:Excel Web Access Web Part