DockerPi-H 基于CP2112实现的HID转I2C功能,而CP2112提供很多各种的驱动层对接,所以开发起来会轻松加愉快.
当然首要前提是安装VS,其实VSC也可以,因为是HID的,也不存在安装驱动一说,另外.NET是跨平台的,在Mac和Linux下可以用mono部分代替.NET框架运行.
引用的DLL和头文件.

打开设备.
const ushort vid = 4292; //10C4
const ushort pid = 60048; //EA90
IntPtr connectedDevice;
InitializeComponent();
uint numDevices = 0;
SLAB_HID_TO_SMBUS.CP2112_DLL.HidSmbus_GetNumDevices(ref numDevices, vid, pid);
if (numDevices < 1)
{
MessageBox.Show("No devices Connected");
this.Close();
}
if (numDevices > 1)
{
MessageBox.Show("More than one device connected. Abort");
this.Close();
}
try
{
SLAB_HID_TO_SMBUS.CP2112_DLL.HidSmbus_Open(ref connectedDevice, 0, vid, pid);
SLAB_HID_TO_SMBUS.CP2112_DLL.HidSmbus_SetSmbusConfig(connectedDevice, 100000, 0x02, 0, 100, 100, 0, 2);
TickTimer.Start();
}
catch (Exception)
{
MessageBox.Show("Connecting fail");
this.Close();
}
然后读取一下寄存器.
byte status = 0;
byte[] readbuff = new byte[61];
byte bytesRead = 1;
SLAB_HID_TO_SMBUS.CP2112_DLL.HidSmbus_AddressReadRequest(connectedDevice, 0x2E, 1, 1, new byte[] { 0x01 });
SLAB_HID_TO_SMBUS.CP2112_DLL.HidSmbus_ForceReadResponse(connectedDevice, 30);
SLAB_HID_TO_SMBUS.CP2112_DLL.HidSmbus_GetReadResponse(connectedDevice, ref status, readbuff, 61, ref bytesRead);
就是这么简单.