public async Task Init() { // 订阅各种事件 WxBSdk.DataCallback += WxBSdk_DataCallback; WxBSdk.Disconnected += WxBSdk_Disconnected; WxBSdk.Connected += WxBSdk_Connected; // 从数据库获取当前所有下级平台 using (var db = new SuperBContext()) { var query = db.subplateformres.ToListAsync(); await query; if (query.Result != null) { foreach (var plate in query.Result) { var tmp = new SuperB_PlateInfo(); // 初始化sdk var userId = SuperB_Login(plate.ip, plate.port, plate.userName, plate.password, ref tmp); if (userId < 0 || !_subPlates.TryAdd(userId, plate)) { LogHelper.Error($"login sdk error {plate.ip} !"); continue; } } } } }
public static int SuperB_Login(string ip, int port, string sUserName, string sPassword, ref SuperB_PlateInfo lpDeviceInfo) { int userIndex = -1; BSDK tmp = new BSDK(); tmp.Initial(ip, port, new User() { username = sUserName.ToCharArray(), password = sPassword.ToCharArray(), Eright = EnumRightMode.LEVEL2, }); if (_sdkList.TryAdd(_sdkList.Count, tmp)) { userIndex = _sdkList.Count - 1; tmp.SetCallBackFun( (cmd, objs) => DataCallback(userIndex, cmd, objs), (cmd, objs) => { if (cmd == Sdk_StatusEvent.Closed) { Disconnected.Invoke(userIndex); } else { Connected.Invoke(userIndex); } }); tmp.StartWork(); } return(userIndex); }