protected bool IsVoltageAdd(int seat, out bool enable, out string msg) { var status = new byte[0x100]; enable = false; if (!IsSeatValid(seat, out msg)) { return(false); } var chipAddr = DriverAddr.GetChipAddr(); var subChipAddr = DriverAddr.GetSubChipAddr(seat); var ctrlAddr = DriverAddr.GetCtrlAddr(seat); var volAddr = DriverAddr.GetAddVolAddr(); var ctrlByte = DriverAddr.GetCtrlByte(seat); //Select Chip if (1 != eDriver_IO.Cls_edriverdll.i2c_write(chipAddr, 0x01, 1, 0, new[] { subChipAddr }, status)) { msg = Encoding.ASCII.GetString(status); return(false); } //Set Control Bit var data = new byte[1]; if (1 == eDriver_IO.Cls_edriverdll.i2c_read(volAddr, ctrlAddr, 1, 0, data, status)) { enable = (0 != (byte)((~data[0]) & ctrlByte)); return(true); } msg = Encoding.ASCII.GetString(status); return(false); }
public void TestGetCtrlAddr() { Assert.AreEqual(_vbmsDriverAddr.GetCtrlAddr(0), 0x0); for (var i = 1; i <= 8; i++) { Assert.AreEqual(_vbmsDriverAddr.GetCtrlAddr(i), 0x06); } for (var j = 9; j <= 16; j++) { Assert.AreEqual(_vbmsDriverAddr.GetCtrlAddr(j), 0x07); } for (var z = 17; z <= 24; z++) { Assert.AreEqual(_vbmsDriverAddr.GetCtrlAddr(z), 0x06); } }