/// <summary> /// Initializes a new instance of the <see cref="NetworkDrive" /> class. /// </summary> /// <param name="resource">The resource.</param> /// <param name="credentials">The credentials.</param> /// <exception cref="Win32Exception">Error connecting to remote share</exception> internal NetworkDrive(NetworkResource resource, NetworkCredential credentials) { _Resource = resource; var userName = string.IsNullOrEmpty(credentials.Domain) ? credentials.UserName : string.Format(@"{0}\{1}", credentials.Domain, credentials.UserName); var result = WNetAddConnection2( resource, credentials.Password, userName, 0); if (result != 0) { throw new Win32Exception(result, "Error connecting to remote share"); } }
public void TestReadRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Get, Twilio.Rest.Domain.Supersim, "/v1/Networks", "" ); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { NetworkResource.Read(client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
/// <summary> /// Map network drive /// </summary> /// <param name="force">do unmap first</param> public void MapDrive(bool force) { if (DriveLetter.Length > 0) { var drive = DriveLetter.Substring(0, 1) + ":"; //create struct data var netRes = new NetworkResource { Scope = 2, Type = 0x1, DisplayType = 3, Usage = 1, RemoteName = ShareName, LocalName = drive }; //if force, unmap ready for new connection if (force) { try { UnMapDrive(true); } catch (Exception e) { Log.Warning("Exception unmapping drive: " + e.Message); } } //call and return var i = WNetAddConnection2A(ref netRes, null, null, 0); if (i > 0) { throw new System.ComponentModel.Win32Exception(i); } } else { throw new Exception("Invalid drive letter: " + DriveLetter); } }
/// <summary> /// Map network drive /// </summary> /// <param name="force">do unmap first</param> public void MapDrive(bool force) { if (DriveLetter.Length > 0) { var drive = DriveLetter.Substring(0, 1) + ":"; //create struct data NetworkResource netRes = new NetworkResource(); netRes.Scope = 2; netRes.Type = 0x1; netRes.DisplayType = 3; netRes.Usage = 1; netRes.RemoteName = ShareName; netRes.LocalName = drive; //if force, unmap ready for new connection if (force) { try { UnMapDrive(true); } catch { } } //call and return int i = WNetAddConnection2A(ref netRes, null, null, 0); if (i > 0) { throw new System.ComponentModel.Win32Exception(i); } } else { throw new Exception("Invalid drive letter: " + DriveLetter); } }
[DllImport("mpr.dll")] private static extern int WNetAddConnection2A(ref NetworkResource netRes, string password, string username, int flags);
public static extern int WNetAddConnection2W( ref NetworkResource pstNetRes, string psPassword, string psUsername, int piFlags);
private void HandleCommand(CommandVModel command, NetworkResource Network) { if (Network == null) { FileLog.Error("ID:" + command.Module_id + "地址:" + command.ModuleAddr + "采集码:" + command.FunType + "采集ID:" + command.Fun_id + "采集名:" + command.FunName + "网络资源错误"); return; } string msg = ""; byte[] send = null, result = null; string lpszVal = null; AlarmType errCode = AlarmType.Sue; bool rst = false; command.CollectTime = DateTime.Now; DateTime lpszdateTime = DateTime.Now; if (command.FunType.Equals(V0Fun.E.ToString()))/*有功总电能*/ { rst = Drive.ARM(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.RdVal.ToString()))/*当前电表剩余电量*/ { rst = Drive.RdVal(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Ia.ToString()))/*当前电表剩余电量*/ { rst = Drive.GetIa(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Ib.ToString())) { rst = Drive.GetIb(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Ic.ToString())) { rst = Drive.GetIc(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Ua.ToString())) { rst = Drive.GetUa(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Ub.ToString())) { rst = Drive.GetUb(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Uc.ToString())) { rst = Drive.GetUc(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Psum.ToString())) { rst = Drive.GetPsum(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Pa.ToString())) { rst = Drive.GetPa(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Pb.ToString())) { rst = Drive.GetPb(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Pc.ToString())) { rst = Drive.GetPc(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Qsum.ToString())) { rst = Drive.GetQsum(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Qa.ToString())) { rst = Drive.GetQa(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Qb.ToString())) { rst = Drive.GetQb(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Qc.ToString())) { rst = Drive.GetQc(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Pfav.ToString())) { rst = Drive.GetPfav(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.PFa.ToString())) { rst = Drive.GetPFa(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.PFb.ToString())) { rst = Drive.GetPFb(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.PFc.ToString())) { rst = Drive.GetPFc(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Ssr.ToString()) && string.IsNullOrEmpty(command.DataValue))/*拉合闸状态*/ { rst = Drive.Ssr(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Ssr.ToString()) && CommFunc.ConvertDBNullToInt32(command.DataValue) == 0)/*合闸*/ { rst = Drive.Ssr0(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Ssr.ToString()) && CommFunc.ConvertDBNullToInt32(command.DataValue) == 1)/*拉闸*/ { rst = Drive.Ssr1(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Pay.ToString()))/*充值*/ { rst = Drive.Pay(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Refund.ToString()))/*退费*/ { rst = Drive.Refund(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.PaySb1.ToString()))/*充值*/ { rst = Drive.PaySb1(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.PaySb2.ToString()))/*充值*/ { rst = Drive.PaySb2(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.IsPaul.ToString()) && string.IsNullOrEmpty(command.DataValue))/*保电状态*/ { rst = Drive.SetPaul(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.IsPaul.ToString()) && !string.IsNullOrEmpty(command.DataValue))/*保电设置*/ { rst = Drive.SetPaul(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Nrp.ToString()))/*有功功率负荷限值(kW)*/ { rst = Drive.SetNrp(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.McNrp.ToString()))/*恶性负载判定有功功率增量(kW)(瞬时额定功率)*/ { rst = Drive.SetMcNrp(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Wpf.ToString()))/*恶性负载判定无功功率(kW)*/ { rst = Drive.SetWpf(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Uep.ToString()))/*违规用电判定功能的功率下限(kW)*/ { rst = Drive.SetUep(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Miss.ToString()))/*一天内违规断电次数限值(0~255)*/ { rst = Drive.SetMiss(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Rest.ToString()))/*违规断电后重启时间(S)*/ { rst = Drive.SetRest(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Saf.ToString()))/*单次功率增量限值(kW)*/ { rst = Drive.SetSaf(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Avlm.ToString()))/*过流门限值(A)*/ { rst = Drive.SetAvlm(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Phase.ToString()))/*启用移相器监测功率下限(kW)*/ { rst = Drive.SetPhase(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Resist.ToString()))/*设置阻行负载(kW)*/ { rst = Drive.SetResist(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.IsPhase.ToString()))/*移相器(=1启用)*/ { rst = Drive.SetIsPhase(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.IsRelay.ToString()))/*继电器参数(=0电平式A路继电器设置;=1电平式B路继电器设置;=127脉冲式设置)*/ { rst = Drive.SetIsRelay(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.IsStdby.ToString()))/*待机检测=0 不检测 =1 检测*/ { rst = Drive.SetStandby(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.TiVal.ToString()))/*获取定时断送电表*/ { rst = Drive.SetTiVal(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.ToLower().Length == 5 && command.FunType.ToLower().Contains("leak") && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*漏电流*/ { rst = Drive.GetMeterLeak(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.ToLower().Length == 5 && command.FunType.ToLower().Contains("temp") && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*漏电流*/ { rst = Drive.GetMeterTemp(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.ToLower().Length == 8 && command.FunType.ToLower().Contains("maxleak") && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*电流阀值*/ { rst = Drive.SetMaxLeak(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.ToLower().Length == 8 && command.FunType.ToLower().Contains("maxtemp") && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*温度阀值*/ { rst = Drive.SetMaxTemp(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.ToLower().Length >= 8 && command.FunType.ToLower().Contains("StatusLeak".ToLower()) && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*电流使能*/ { rst = Drive.SetStatusLeak(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.ToLower().Length >= 8 && command.FunType.ToLower().Contains("StatusTemp".ToLower()) && CommFunc.ConvertDBNullToInt32(command.FunType.Substring(command.FunType.Length - 1, 1)) > 0)/*温度使能*/ { rst = Drive.SetStatusTemp(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Contains(V0Fun.LeakAlarm.ToString()))/*漏电设备告警*/ { rst = Drive.GetLeakAlarm(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.Alarm1.ToString()))/*获取报警电量1限值*/ { rst = Drive.GetAlarm1(command, Network, out send, out result, out lpszVal, out errCode, out msg); } else if (command.FunType.Equals(V0Fun.EventWpf.ToString()))/*记录恶性负载事件*/ { #region 记录恶性负载事件 Dictionary <string, string> list = new Dictionary <string, string>(); rst = Drive.GetEventWpf(command, Network, out send, out result, out list, out errCode, out msg); if (rst == true) { MalignantVModel mv = new MalignantVModel(); mv.CTime = new DateTime(1900, 1, 1); foreach (var item in list) { if (item.Key.Equals("CTime")) { mv.CTime = CommFunc.ConvertDBNullToDateTime(item.Value); } else if (item.Key.Equals("SsrS")) { mv.Status = item.Value; } else if (item.Key.Equals("Ua")) { mv.Ua = CommFunc.ConvertDBNullToDecimal(item.Value); } else if (item.Key.Equals("Ia")) { mv.Ia = CommFunc.ConvertDBNullToDecimal(item.Value); } else if (item.Key.Equals("Psum1")) { mv.Psum1 = CommFunc.ConvertDBNullToDecimal(item.Value); } else if (item.Key.Equals("Psum2")) { mv.Psum2 = CommFunc.ConvertDBNullToDecimal(item.Value); } else if (item.Key.Equals("Psum3")) { mv.Psum3 = CommFunc.ConvertDBNullToDecimal(item.Value); } else if (item.Key.Equals("Psum4")) { mv.Psum4 = CommFunc.ConvertDBNullToDecimal(item.Value); } } lpszVal = null; lpszdateTime = mv.CTime; if (mv.CTime.Year != 1900) { lpszVal = JsonHelper.Serialize(mv); lpszdateTime = mv.CTime; } } #endregion } else { errCode = AlarmType.Err_Nd; } try { DataProcess.YdProcess.Helper.YdDriveSaveCollectCache(command, lpszVal, lpszdateTime, 0, rst, errCode, msg, send, result); } catch (Exception ex) { FileLog.Error("处理ID号:" + this.HandledBY + "处理采集数据错误:" + ex.Message + ex.StackTrace); } }
private static extern int WNetAddConnection2(NetworkResource resource, string password, string username, int flags);