推荐
-
- 技术文摘c# 控制智能停车系统出入口道闸模块开关
- 2021/3/31 11:45:37
- 不通厂家的模块协议可能不一样,普遍通用,本次分享的是【康耐德】的模块;如果用到其他模块的朋友通过下面的介绍无法控制,那就要自己另寻他法了。协议:ModbusTCP一如既往,首先来张demo截图: a、按钮上的1,2分别代表两个道闸; b、接触过开关控制器的都知道,2路组成一个开关,如指令 1,0代表开;0,1代表关,同时发1,0,1,0代表两头都开,反之则都关开始了,上代码。。。直接上完整代码,需要可运行exe完整源码或程序的联系我无偿提供:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ModbusTCP;
using System.Collections;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private ModbusTCP.Master MBmaster;
string StartAddress = "200"; //读取开始地址
string DOStartAddress = "100"; //写入接口开始地址
private bool RecvieMode_502 = false;
string dataSize = "16";//长度
byte uiSlaveID = 255;//
private int Recvie_Count = 0;
string redIP = "172.16.1.237"; //红外控制器IP
public Form1()
{
InitializeComponent();
}
private void btnConnect_Click(object sender, EventArgs e)
{
redIP = txtIP.Text;
if (RecvieMode_502)
{
return;
}
try
{
// Create new modbus master and add event functions
MBmaster = new Master(redIP, 502);
MBmaster.OnResponseData += new ModbusTCP.Master.ResponseData(MBmaster_OnResponseData);
MBmaster.OnException += new ModbusTCP.Master.ExceptionData(MBmaster_OnException);
RecvieMode_502 = true;
MBmaster.autoConnectOfBreak = false;
MessageBox.Show("连接成功!!");
}
catch (SystemException error)
{
MessageBox.Show(error.Message);
}
}
// ------------------------------------------------------------------------
// Event for response data
// ------------------------------------------------------------------------
private void MBmaster_OnResponseData(ushort ID, byte function, byte[] values)
{
// ------------------------------------------------------------------
// Seperate calling threads
if (this.InvokeRequired)
{
this.BeginInvoke(new ModbusTCP.Master.ResponseData(MBmaster_OnResponseData), new object[] { ID, function, values });
return;
}
// Ignore watchdog response data
if (ID == 0xFF) return;
// ------------------------------------------------------------------------
// Identify requested data
ushort Func = ID;
++Recvie_Count;
if (Recvie_Count > 100000000)
{
Recvie_Count = 1;
}
bool[] bits = new bool[1];
if (Func > 0)
{
// Convert data to selected data type
richTextBox1.Clear();
if (null != values)
{
int i = 1;
int dzNo = (i - 1) * 4;
BitArray bitArray = new BitArray(values);
bool[] bs = new bool[bitArray.Count];
bitArray.CopyTo(bs, 0);
if (bs.Count(a => a == false) == 15)
{
return;
}
bool[] bitsArr = new bool[bitArray.Count];
for (int k = 0; k < bitArray.Count - dzNo; k++)
{
bitsArr[k] = bs[k + dzNo];
richTextBox1.AppendText(Convert.ToInt32(bitsArr[k]).ToString());
}
bits = bitsArr;
}
//接收成功
if (richTextBox1.Visible && !richTextBox1.IsDisposed)
{
richTextBox1.AppendText(string.Format("\r\n红外接收结果:{0} {1} {2} {3}\r\n", bits[0], bits[1], bits[2], bits[3]));
}
#region
//if (null != values)
//{
// BitArray bitArray = new BitArray(values);
// bits = new bool[bitArray.Count];
// bitArray.CopyTo(bits, 0);
// for (int i = 0; i < bits.Length; i++)
// {
// richTextBox1.AppendText(Convert.ToInt32(bits[i]).ToString());
// }
//}
#endregion
//接收成功
// MessageBox.Show(bits.Length.ToString());
}
}
#region 通讯常提示事件
// ------------------------------------------------------------------------
// Modbus TCP slave exception
// ------------------------------------------------------------------------
private void MBmaster_OnException(ushort id, byte function, byte exception)
{
// ------------------------------------------------------------------
// Seperate calling threads
if (this.InvokeRequired)
{
this.BeginInvoke(new ModbusTCP.Master.ExceptionData(MBmaster_OnException), new object[] { id, function, exception });
return;
}
string exc = "Modbus says error: ";
switch (exception)
{
case Master.excIllegalFunction: exc += "Illegal function!"; break;
case Master.excIllegalDataAdr: exc += "Illegal data adress!"; break;
case Master.excIllegalDataVal: exc += "Illegal data value!"; break;
case Master.excSlaveDeviceFailure: exc += "Slave device failure!"; break;
case Master.excAck: exc += "Acknoledge!"; break;
case Master.excSlaveIsBusy: exc += "Slave is busy!"; break;
case Master.excGatePathUnavailable: exc += "Gateway path unavailbale!"; break;
case Master.excExceptionTimeout: exc += "Slave timed out!"; break;
}
// LogHelper.WriteLog(this.GetType(), exc);
}
#endregion
#region 读取点
private void btnReadDisInp_Click(object sender, EventArgs e)
{
ushort ID = 2;
ushort StartAddress = ReadStartAdr();
ushort Length = Convert.ToUInt16(dataSize);
MBmaster.ReadDiscreteInputs(ID, StartAddress, Length, uiSlaveID);
}
private ushort ReadStartAdr()
{
// Convert hex numbers into decimal
if (StartAddress.IndexOf("0x", 0, StartAddress.Length) == 0)
{
string str = StartAddress.Replace("0x", "");
ushort hex = Convert.ToUInt16(str, 16);
return hex;
}
else
{
return Convert.ToUInt16(StartAddress);
}
}
#endregion
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
//ushort ID = 6;
//ushort StartAddress = ReadStartAdr();
//data = GetData(Convert.ToByte(txtSize.Text));
//MBmaster.WriteMultipleCoils(ID, StartAddress, Convert.ToByte(txtSize.Text), data, GetSlaveID());
ChangDZ(Convert.ToInt32(textBox1.Text), Convert.ToBoolean(Convert.ToInt32(textBox2.Text)), Convert.ToBoolean(Convert.ToInt32(textBox3.Text)));
}
/// <summary>
/// 开关道闸
/// </summary>
/// <param name="dzNo"></param>
/// <param name="b1"></param>
/// <param name="b2"></param>
private void ChangDZ(int dzNo, bool b1, bool b2)
{
ushort ID = 6;
int sized = Convert.ToInt32(dataSize);
ushort StartAddress = Convert.ToUInt16(DOStartAddress);
byte[] data = new byte[sized];
bool[] bits = new bool[sized];
string s = richTextBox1.Text;
int st = (dzNo - 1) * 2;
bits[st] = b1;
bits[st + 1] = b2;
int dl = bits.Length / 8 + (bits.Length % 8 == 0 ? 0 : 1);
data = new byte[dl];
BitArray ba = new BitArray(bits);
ba.CopyTo(data, 0);
if (MBmaster != null)
{
MBmaster.WriteMultipleCoils(ID, StartAddress, (ushort)sized, data, uiSlaveID);
}
}
/// <summary>
/// 开关道闸
/// </summary>
/// <param name="b1">道闸1开</param>
/// <param name="b2"> 1关</param>
/// <param name="b3">2开</param>
/// <param name="b4">2关</param>
private void ChangDZ2(bool b1, bool b2, bool b3, bool b4)
{
lock (MBmaster)
{
int i = Convert.ToInt32(1);
int dzNo = (i - 1) * 2 + 1;
ushort ID = 6;
int sized = Convert.ToInt32(dataSize);
ushort StartAddress = Convert.ToUInt16(DOStartAddress);
byte[] data = new byte[sized];
bool[] bits = new bool[sized];
string s = richTextBox1.Text;
int st = (dzNo - 1) * 2;
bits[st] = b1;
bits[st + 1] = b2;
bits[st + 2] = b3;
bits[st + 3] = b4;
int dl = bits.Length / 8 + (bits.Length % 8 == 0 ? 0 : 1);
data = new byte[dl];
BitArray ba = new BitArray(bits);
ba.CopyTo(data, 0);
if (MBmaster != null)
{
MBmaster.WriteMultipleCoils(ID, StartAddress, (ushort)sized, data, uiSlaveID);
}
}
}
private void button2_Click(object sender, EventArgs e)
{
//ChangDZ(1,false, false);
//ChangDZ(1,Convert.ToBoolean(Convert.ToInt32(textBox4.Text)), Convert.ToBoolean(Convert.ToInt32(textBox5.Text)));
//ChangDZ(2, false, false);
//ChangDZ(2, Convert.ToBoolean(Convert.ToInt32(textBox6.Text)), Convert.ToBoolean(Convert.ToInt32(textBox7.Text)));
ChangDZ2(false, false, false, false);
Thread.Sleep(3000);
ChangDZ2(Convert.ToBoolean(Convert.ToInt32(textBox4.Text)), Convert.ToBoolean(Convert.ToInt32(textBox5.Text)), Convert.ToBoolean(Convert.ToInt32(textBox6.Text)), Convert.ToBoolean(Convert.ToInt32(textBox7.Text)));
//Thread.Sleep(5);
}
private void btn_kg_Click(object sender, EventArgs e)
{
ChangDZ2(false, false, false, false);
Thread.Sleep(getMiCeccond());
ChangDZ2(true, false, false, true);
}
/// <summary>
/// 默认为两秒
/// </summary>
/// <returns></returns>
int getMiCeccond()
{
int a = 0;
int.TryParse(textBox8.Text, out a);
return a != 0 ? a : 2000;
}
private void btn_gk_Click(object sender, EventArgs e)
{
ChangDZ2(false, false, false, false);
Thread.Sleep(getMiCeccond());
ChangDZ2(false, true, true, false);
}
private void btn_kk_Click(object sender, EventArgs e)
{
ChangDZ2(false, false, false, false);
Thread.Sleep(getMiCeccond());
ChangDZ2(true, false, true, false);
}
private void btn_gg_Click(object sender, EventArgs e)
{
ChangDZ2(false, false, false, false);
Thread.Sleep(getMiCeccond());
ChangDZ2(false, true, false, true);
}
private void btn_1k_Click(object sender, EventArgs e)
{
ChangDZ2(false, false, false, false);
Thread.Sleep(getMiCeccond());
ChangDZ(1, true, false);
}
private void btn_1g_Click(object sender, EventArgs e)
{
ChangDZ2(false, false, false, false);
Thread.Sleep(getMiCeccond());
ChangDZ(1, false, true);
}
private void btn_2k_Click(object sender, EventArgs e)
{
ChangDZ2(false, false, false, false);
Thread.Sleep(getMiCeccond());
ChangDZ(2, true, false);
}
private void btn_2g_Click(object sender, EventArgs e)
{
ChangDZ2(false, false, false, false);
Thread.Sleep(getMiCeccond());
ChangDZ(2, false, true);
}
}
}
- 评论:0 / 阅读:1193
-
- 技术文摘c# 自定义加密解密工具,避免MD5加密不可逆或者DES对称加密容易被破解问题。
- 2021/3/31 11:50:41
- 不多说,直接上代码。。。↓↓↓↓↓↓↓↓↓↓↓↓↓↓1、定义8位的加密秘钥 /// <summary>
/// 加密密钥(8位)
/// </summary>
public static string KEY_64 = "00000000";2、定义8位的初始化向量 /// <summary>
/// 加密初始化向量(8位)
/// </summary>
public static string IV_64 = "88888888";3、通过初始化向量与加密秘钥生成加密内容 /// <summary>
/// 加密
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string Encode(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length).Replace("=", "φ");
}4、通过初始化向量与加密秘钥对加密内容进行解密 /// <summary>
/// 解密
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string Decode(string data)
{
try
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data.Replace("φ", "="));
}
catch
{
return null;
}
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}
catch
{ return ""; }
}5、到这里就大功告成啦!
- 评论:0 / 阅读:1581
-
- 技术文摘SqlServer,Mysql数据同步系统,适用于企业数据库做数据迁移。
- 2021/3/31 11:51:15
- 1、系统主界面2、数据库连接配置,本地为sqlserver,服务器为mysql,如果是mysql迁移到sqlserver可以适当的修改源码就可以实现。3、支持部分表同步,需要同步哪些表自己进行设置4、同步日志查看,包括建表,同步了多少条数据,成功多少失败多少,未捕获的错误异常等等详细日志信息。5、更多功能自行下载后运行查看即可。。。完整下载地址:https://download.csdn.net/download/xukai515786/11117125
- 评论:0 / 阅读:1202
-
- 网站公告关于站点启用HTTPS访问的通知
- 2021/4/2 11:38:08
- 各用户: 为进一步加强凯特云安全体系建设,加强对用户个人信息的安全保护,即日起本网站将启用https安全访问协议。请大家注意新的网站访问方式,相关注意事项通知如下: 1.正常情况下,用户在访问网站时无需做任何修改即可正常访问。 2.以主站为例,使用http://www.ktblog.top传统http模式访问时,浏览器会自动跳转到https://www.ktblog.top,建议更新收藏夹相关链接。
- 评论:1 / 阅读:1687
-
- 网站公告非法访问资源ip地址公布
- 2021/4/7 11:40:27
- 180.163.220.41.85.2.113
- 评论:1 / 阅读:1421
-
- 技术文摘不用写一句sql的ORM框架,支持多种数据库
- 2021/4/12 11:59:22
- 一、文件说明 Xk.Common.dll:框架周边的一些帮助类 Xk.ORM.dll:框架核心二、开始使用 1、简单粗暴的配置模式Cs类中:public static readonly DbSession DbHelper = new DbSession("MySqlConn");Web.config中:<add name="MySqlConn" providerName="Xk.ORM.MySql" connectionString="server=127.0.0.1;database=ormcms;uid=root;pwd=abc123123;oldsyntax=true;charset=utf8;Allow Zero Datetime=True;port=3306;" /> 2、定义一个类文件(这个文件可以自己用代码生成器生成,后面会开放下载)//------------------------------------------------------------------------------
//
// 此代码由工具生成:
// 生成时间:2021/3/17
// 创建人:XuKai
//
using System;
using Xk.ORM;
namespace CMS.Models
{
///
/// *实体类:ktcfriendlink
///
[Table("ktcfriendlink")]
[Serializable]
public partial class Ktcfriendlink : Entity
{
#region Model
private int _Id;
///
/// 主键id
///
[Field("id")]
public int Id
{
get { return _Id; }
set
{
this.OnPropertyValueChange("id");
this._Id = value;
}
}
private string _Title;
///
/// 友链标题
///
[Field("title")]
public string Title
{
get { return _Title; }
set
{
this.OnPropertyValueChange("title");
this._Title = value;
}
}
private string _Desc;
///
/// 描述
///
[Field("desc")]
public string Desc
{
get { return _Desc; }
set
{
this.OnPropertyValueChange("desc");
this._Desc = value;
}
}
private string _Url;
///
/// 友链地址
///
[Field("url")]
public string Url
{
get { return _Url; }
set
{
this.OnPropertyValueChange("url");
this._Url = value;
}
}
private int _Status;
///
/// 1 通过,2 不通过,0 未审核
///
[Field("status")]
public int Status
{
get { return _Status; }
set
{
this.OnPropertyValueChange("status");
this._Status = value;
}
}
private DateTime _Createtime;
///
/// 创建时间
///
[Field("createtime")]
public DateTime Createtime
{
get { return _Createtime; }
set
{
this.OnPropertyValueChange("createtime");
this._Createtime = value;
}
}
private DateTime _Authtime;
///
/// 审核时间
///
[Field("authtime")]
public DateTime Authtime
{
get { return _Authtime; }
set
{
this.OnPropertyValueChange("authtime");
this._Authtime = value;
}
}
private string _Askdesc;
///
/// 申请描述
///
[Field("askdesc")]
public string Askdesc
{
get { return _Askdesc; }
set
{
this.OnPropertyValueChange("askdesc");
this._Askdesc = value;
}
}
private string _Imgurl;
///
/// 友链图片封面
///
[Field("imgurl")]
public string Imgurl
{
get { return _Imgurl; }
set
{
this.OnPropertyValueChange("imgurl");
this._Imgurl = value;
}
}
private int _Index;
///
/// 排序
///
[Field("index")]
public int Index
{
get { return _Index; }
set
{
this.OnPropertyValueChange("index");
this._Index = value;
}
}
private int _Isimg;
///
/// 是否为图片链接,1 是,0 否(文本)
///
[Field("isimg")]
public int Isimg
{
get { return _Isimg; }
set
{
this.OnPropertyValueChange("isimg");
this._Isimg = value;
}
}
private string _Email;
///
/// 对方的站点url
///
[Field("email")]
public string Email
{
get { return _Email; }
set
{
this.OnPropertyValueChange("email");
this._Email = value;
}
}
#endregion
#region Method
///
/// 获取实体中的主键列
///
public override Field[] GetPrimaryKeyFields()
{
return new Field[] {
_.Id,
};
}
///
/// 获取列信息
///
public override Field[] GetFields()
{
return new Field[] {
_.Id,
_.Title,
_.Desc,
_.Url,
_.Status,
_.Createtime,
_.Authtime,
_.Askdesc,
_.Imgurl,
_.Index,
_.Isimg,
_.Email
};
}
///
/// 获取值信息
///
public override object[] GetValues()
{
return new object[] {
this._Id,
this._Title,
this._Desc,
this._Url,
this._Status,
this._Createtime,
this._Authtime,
this._Askdesc,
this._Imgurl,
this._Index,
this._Isimg,
this._Email
};
}
#endregion
#region _Field
///
/// 字段信息
///
public class _
{
///
/// *
///
public readonly static Field All = new Field("*", "ktcfriendlink");
///
/// 主键id
///
public readonly static Field Id = new Field("id", "ktcfriendlink");
///
/// 友链标题
///
public readonly static Field Title = new Field("title", "ktcfriendlink");
///
/// 描述
///
public readonly static Field Desc = new Field("desc", "ktcfriendlink");
///
/// 友链地址
///
public readonly static Field Url = new Field("url", "ktcfriendlink");
///
/// 1 通过,2 不通过,0 未审核
///
public readonly static Field Status = new Field("status", "ktcfriendlink");
///
/// 创建时间
///
public readonly static Field Createtime = new Field("createtime", "ktcfriendlink");
///
/// 审核时间
///
public readonly static Field Authtime = new Field("authtime", "ktcfriendlink");
///
/// 申请描述
///
public readonly static Field Askdesc = new Field("askdesc", "ktcfriendlink");
///
/// 友链图片封面
///
public readonly static Field Imgurl = new Field("imgurl", "ktcfriendlink");
///
/// 排序
///
public readonly static Field Index = new Field("index", "ktcfriendlink");
///
/// 是否为图片链接,1 是,0 否(文本)
///
public readonly static Field Isimg = new Field("isimg", "ktcfriendlink");
///
/// 对方的联系邮箱
///
public readonly static Field Email = new Field("email", "ktcfriendlink");
}
#endregion
}
}
3、cuid操作int i = 0;
DbHelper.From<Ktcfriendlink>();//查询表所有数据 DbHelper.From<Ktcfriendlink>().Where(t => t.Id == 1);//条件id为1的数据,参数遵循linq语法。 DbHelper.From<Ktcfriendlink>().Where(new WhereClip("id = 1"));//条件id为1的数据,WhereClip参数也有很多种写法。 Ktcfriendlink model = new Ktcfriendlink();
model.Title = "baidu";
model.Url = "www.baidu.com";
i = DbHelper.Insert(model);//插入一条数据
i = DbHelper.Delete(a => a.Id == 1);//删除id为1的数据
model.Title = "taobao";
i = DbHelper.Update(model);
DbHelper.FromProc("procname");//可以执行存储过程
DbTrans trans = DbHelper.BeginTransaction();//执行事务
try
{
trans.Update(Ktcfriendlink._.Title, "google", a => a.Id == 1);
trans.Update(Ktcfriendlink._.Title, "yahoo", a => a.Id == 2);
trans.Commit();//提交事务
}
catch
{
trans.Rollback();//回滚事务
}
finally
{
trans.Close();
} Ktcfriendlink model = new Ktcfriendlink();
model.Title = "baidu";
model.Url = "www.baidu.com";
i = DbHelper.Insert(model);//插入一条数据
i = DbHelper.Delete(a => a.Id == 1);//删除id为1的数据
model.Title = "taobao";
i = DbHelper.Update(model);
DbHelper.FromProc("procname");//可以执行存储过程
DbTrans trans = DbHelper.BeginTransaction();//执行事务
try
{
trans.Update(Ktcfriendlink._.Title, "google", a => a.Id == 1);
trans.Update(Ktcfriendlink._.Title, "yahoo", a => a.Id == 2);
trans.Commit();//提交事务
}
catch
{
trans.Rollback();//回滚事务
}
finally
{
trans.Close();
} DbHelper.From().Where(new WhereClip("id = 1"));//条件id为1的数据,WhereClip参数也有很多种写法。
Ktcfriendlink model = new Ktcfriendlink();
model.Title = "baidu";
model.Url = "www.baidu.com";
i = DbHelper.Insert(model);//插入一条数据
i = DbHelper.Delete(a => a.Id == 1);//删除id为1的数据
model.Title = "taobao";
i = DbHelper.Update(model);
DbHelper.FromProc("procname");//可以执行存储过程
DbTrans trans = DbHelper.BeginTransaction();//执行事务
try
{
trans.Update(Ktcfriendlink._.Title, "google", a => a.Id == 1);
trans.Update(Ktcfriendlink._.Title, "yahoo", a => a.Id == 2);
trans.Commit();//提交事务
}
catch
{
trans.Rollback();//回滚事务
}
finally
{
trans.Close();
} DbHelper.From().Where(t => t.Id == 1);//条件id为1的数据,参数遵循linq语法。
DbHelper.From().Where(new WhereClip("id = 1"));//条件id为1的数据,WhereClip参数也有很多种写法。
Ktcfriendlink model = new Ktcfriendlink();
model.Title = "baidu";
model.Url = "www.baidu.com";
i = DbHelper.Insert(model);//插入一条数据
i = DbHelper.Delete(a => a.Id == 1);//删除id为1的数据
model.Title = "taobao";
i = DbHelper.Update(model);
DbHelper.FromProc("procname");//可以执行存储过程
DbTrans trans = DbHelper.BeginTransaction();//执行事务
try
{
trans.Update(Ktcfriendlink._.Title, "google", a => a.Id == 1);
trans.Update(Ktcfriendlink._.Title, "yahoo", a => a.Id == 2);
trans.Commit();//提交事务
}
catch
{
trans.Rollback();//回滚事务
}
finally
{
trans.Close();
}框架后期整理好后开放下载,欢迎广大.net ORM爱好者使用
- 评论:1 / 阅读:1353
-
- 经验分享vs2019 安装时速度0kb,下载不了解决方案
- 2021/4/14 15:17:03
- vs2019安装无法进行
- 问题:今天想装下高版本的vs,于是直接到官网下载了个vs2019 ,结果发现双击安装的时候一直卡住不动,提取文件速度0kb.解决方案: 关掉上面的下载窗口,到电脑网络适配器中,把正在用使的本地连接禁用后数秒重新启用,然后再次双击vs_community__4307803.1618383150.exe,会惊奇的发现居然可以下载了。 以上观点只是本人真实遇到的情况与解决方案,若解决不了您的问题,请另寻他法。
- 评论:0 / 阅读:1199
-
- 经验分享nuget中 Microsoft.NETCore.App/3.1 还原包超时问题
- 2021/4/15 9:43:01
- nuget未能还原引用包问题
- nuget未能还原解决方案: 工具/Nuget包管理器/程序包管理器设置=》将程序包源加上【https://api.nuget.org/v3/index.json】,并设为启用优先保存重新再编译使用自动还原包即可。如下图
- 评论:0 / 阅读:993
-
- 经验分享win7下运行nodejs的npm命令报错Error: ENOENT
- 2021/4/15 10:16:44
- Error: ENOENT, stat 'C:\Users\Administrator\AppData\Roaming\npm'
- 安装好node.js引擎后,命令窗口下尝试输入npm回车,结果报异常【Error: ENOENT, stat 'C:\Users\Administrator\AppData\Roaming\npm'】如下
出现上面错误表示指定的路径不存在,只用在C:\Users\Administrator\AppData\Roaming\下创建npm文件夹即可。创建好文件夹后再次输入npm指令回车。久违的nodejs系统提示出来了,问题解决。
- 评论:0 / 阅读:1165
-
- 经验分享vs 修改css格式化展示方式为一行
- 2021/4/16 9:59:45
- visual studio格式化css为一行显示
- 一般情况下,vs IDE自动格式化css的样式为以下这种展示方式: body, p {
font-family: sans-serif,fantasy;
overflow: hidden;
margin: 0;
padding: 0;
}
.msg-container {
margin: 90px;
position: relative;
}看上去结构比较清晰,但是当样式写多了,滚动条会很长,有时也挺麻烦的,那么怎么修改其格式化展示的方式呢?依次点击:工具=》选项=》文本编辑器=》css=》高级,进行如下设置即可。
- 评论:0 / 阅读:1103