C# 网口通信modbus,自动重连
1.创建接收线程。
Com2Ups60Thread = new Thread(Com2Ups60);
Com2Ups60Thread.IsBackground = true;
Com2Ups60Thread.Start();
2.线程函数。
private void Com2Ups60()
{
try
{
Logger.Info("Com2Ups60() Start");
ModbusFactory modbusFactory = new ModbusFactory();
NModbus.IModbusMaster master = modbusFactory.CreateMaster(new TcpClient(_nameValueCollection["UPSYiDun_IP"], int.Parse(_nameValueCollection["UPSYiDun_Port"])));
master.Transport.ReadTimeout = 1000;
master.Transport.Retries = 1000;
//参数(分别为站号,起始地址,长度)
byte slaveAddress = 1;
ushort startAddress = 200;
ushort numberOfPoints = 125; // 这个长度不能超过125
isups60Connect = true;
while (true)
{
ushort[] registerBuffer = master.ReadInputRegisters(slaveAddress, startAddress, numberOfPoints);
for (int i = 0; i < registerBuffer.Length; i )
{
isups60Connect = true;
//Logger.Info("receive Data:" registerBuffer[i]);
Application.Current.Dispatcher.Invoke(() =>
{
srA = registerBuffer[77].ToString();
srB = registerBuffer[78].ToString();
srC = registerBuffer[79].ToString();
scA = registerBuffer[95].ToString();
scB = registerBuffer[96].ToString();
scC = registerBuffer[97].ToString();
});
}
Thread.Sleep(5000);
}
}
catch (Exception ex)
{
isups60Connect = false;
Logger.Error("MainWinViewModel()->Com2Ups60()->" , ex);
}
}
3.定时器实时判断。
if (isups60Connect == false)
{
Com2Ups60Thread.Abort();
Com2Ups60Thread = new Thread(Com2Ups60);
Com2Ups60Thread.IsBackground = true;
Com2Ups60Thread.Start();
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcbeie
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13