总述

常见的设备在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)相关推荐

  1. CUDA动态库封装以及调用

    CUDA动态库封装以及调用 参考:http://blog.sina.com.cn/s/blog_618941f701016d26.html 通过将CUDA相关计算操作放在库中,方便在项目中调用,省去了 ...

  2. VC++动态库封装及调用

    https://blog.csdn.net/zhangfuliang123/article/details/71515796 一直对动态库的封装理解不是很透彻,虽然之前写过一个Demo,不过并没有真正 ...

  3. C++动态库封装及调用

    一直对动态库的封装理解不是很透彻,虽然之前写过一个Demo,不过并没有真正的理解.所以写下来,帮助自己理解下. 1.一个程序从源文件编译生成可执行文件的步骤: 预编译 -->  编译 --> ...

  4. 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )

    文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...

  5. 【C 语言】动态库封装与设计 ( Windows 动态库简介 | Visual Studio 调用动态库 )

    文章目录 一.Windows 动态库简介 二.Visual Studio 调用动态库 一.Windows 动态库简介 在 C:\Windows\System32 目录中 , 存放着 Windows 中 ...

  6. python调用c++动态库 linux_linux中使用boost.python调用c++动态库的方法

    前言 最近开始使用 robot framework 测试c++的动态库,robot framework 是跑在 windows 上面,c++动态库是跑在远程linux主机上面.测试办法是让 robot ...

  7. 使用Poco实现插件方式加载动态库

    动态库封装虚基类 //AbstractPlugin.h #ifndef __ABSTRACTPLUGIN_H__ #define __ABSTRACTPLUGIN_H__#include <st ...

  8. c语言仿ce内存搜索工 源代码_C语言函数库:动态库和静态库优缺点比较

    函数的重要性 我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护.我们可以把他们制 ...

  9. C语言函数库:动态库和静态库优缺点比较

    函数的重要性 我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护.我们可以把他们制 ...

最新文章

  1. 1480. 一维数组的动态和
  2. FTP 主动、被动工作模式
  3. FreeRTOS实验_独立看门狗监视多线程
  4. python的dataframe的groupby_python pandas.DataFrame.groupby()方法详解
  5. Android AP模式下获取SSID/PASSWORD(反射机制
  6. AppFuse 3的乱码问题
  7. 最适合程序员的电脑是什么?
  8. iOS 9:五、字体
  9. Java函数中改变变量值
  10. 网课查题接口 搜题公众号对接题库教程 (附赠题库接口)
  11. 微信公众号html教程,公众号排版简易教程
  12. SQLserver数据库被置疑了(“可疑”)状态下怎么处理?
  13. 计算机游戏cpu,2021年11代酷睿cpu游戏电脑配置推荐(可装win7系统)
  14. Mysql8中降序索引的底层实现
  15. 全自动与半自动手表的区别_机械表全自动好还是半自动好 有什么区别
  16. 为什么现在的智能手机,都被设计成不可更换电池?
  17. MATLAB-视频的前景目标提取
  18. Flash Helper Service 这个流氓,动不动弹出广告!!
  19. 极光笔记|百亿级KV存储在极光的运维实践之路
  20. 转:Excel Web Access Web Part

热门文章

  1. 图片上传失败了?憋慌,有可能不是Bug哦~
  2. 05快速排序(不稳定)
  3. 定制加载loading 图片
  4. opencv去除印章痕迹
  5. oracle执行存储过程06576,oracle的存储过程语法
  6. 【蓝桥杯真题练习】STEMA科技素养练习题库 练习版004 持续更新中~
  7. 迪博·中国上市公司内部控制指数(2000-2020年)
  8. 圣经中有关天使的记载
  9. BreederDAO 在 A 轮融资中筹集了 1000 万美元
  10. 网络安全 中间人攻击-ARP欺骗 工具:Cain