You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

795 lines
31 KiB
C#

/************************************************************************************
* All contents © copyright HighWay IOT. All rights reserved
* File:
* DeviceAppNewDemo.cs
* Description:
* Demo
* Author:
* Baogq
* Baogq@MESNAC.COM
* HTTP://WWW.MESNAC.COM
* Create DateTime:
* 2019.11.20
* History:
*
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
//using System.Threading.Tasks;
using System.Windows.Forms;
using System.Configuration;
using Mesnac.DeviceAdapter;
using System.Reflection;
using Mesnac.DataChange;
using System.Threading;
using System.Diagnostics;
using System.Text.RegularExpressions;
using System.Net.NetworkInformation;
namespace DeviceAppDemo
{
public partial class DeviceAppNewDemo : Form
{
//private readonly string m_AdapterType = ConfigurationManager.AppSettings["AdapterType"];
//private readonly string m_AdapterClassName = ConfigurationManager.AppSettings["AdapterClassName"];
//private readonly string m_DeviceType = ConfigurationManager.AppSettings["DeviceType"];
//private readonly string m_DeviceIp = ConfigurationManager.AppSettings["DeviceIp"];
//private readonly string m_DevicePort = ConfigurationManager.AppSettings["DevicePort"];
//private readonly string m_ReadCounts = ConfigurationManager.AppSettings["ReadCounts"];
//private readonly string m_isReload = ConfigurationManager.AppSettings["isReload"];
private readonly string m_AdapterType = "Mesnac.DeviceAdapter.Fuchs";
private readonly string m_AdapterClassName = "FuchsAdapter";
private readonly string m_DeviceType = ConfigurationManager.AppSettings["DeviceType"];
private string m_DeviceIp;
private string m_DevicePort;
private readonly string m_ReadCounts = ConfigurationManager.AppSettings["ReadCounts"];
private readonly string m_isReload = ConfigurationManager.AppSettings["isReload"];
private IDeviceAdapter m_IDeviceAdapter = null;
byte m_iAntenna = 0; //天线号
int iAnt = 0;
public DeviceAppNewDemo()
{
InitializeComponent();
ConfigurationManager.RefreshSection("appSettings"); //强制重新载入
string sSkinName = ConfigurationManager.AppSettings.Get("ConfigSkinName");
this.skinEngine1.SkinFile = Application.StartupPath + "\\Skins\\" + sSkinName;
//cbReadFilterNo.SelectedIndex = 0;
cb_Ant.SelectedIndex = 0;
cb_SenorType.SelectedIndex = 0;
cbReadType.SelectedIndex = 0;
cbAntenna.SelectedIndex = 0;
cbTagNo.SelectedIndex = 0;
for (int i = 2;i < 14 ;i+=2)
{
cb_DataLength.Items.Add(i);
}
cb_DataLength.Text = "12";
//cbWriteFilterNo.SelectedIndex = 0;
//cbWriteNo.SelectedIndex = 0;
m_IDeviceAdapter = CreateDeviceAdapter(); //动态赋值要测试的类
}
public void UpdateUIText(object o, System.EventArgs e)
{
ShowMessage((string)o.ToString());
//this.tbText.Items.Insert(0, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " " + (string)o.ToString() + "\r\n");
}
public void RecvIdentifyDataTrue(ushort iLen, byte[] pData, byte Antenna, UInt16 iDeviceId, object pDevice)
{
Console.Write(" 接收到识别数据:" + StringChange.bytesToHexStr(pData) + "\r\n");
tbLog.BeginInvoke(new System.EventHandler(UpdateUIText), StringChange.bytesToHexStr(pData));
}
//动态获取类
public IDeviceAdapter CreateDeviceAdapter()
{
IDeviceAdapter IAdapter = null;
//Load参数为要被实例化的动态库名称
Assembly assembly = Assembly.Load(m_AdapterType);
//"AlienAdapter"为要实例化的类的名称
string fullName = m_AdapterType + "." + m_AdapterClassName;
IAdapter = (IDeviceAdapter)assembly.CreateInstance(fullName);
return IAdapter;
}
#region log
private void Timer_Tick(object sender, EventArgs e)
{
this.label_Time.Text ="系统当前时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss dddd");
}
public void ShowMessage(string strMessage)
{
string tempstr = DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss.fff") + ": " + strMessage + "\r\n";
tbLog.AppendText(tempstr);
tbLog.ScrollToCaret();
}
private void btnClearLog_Click(object sender, EventArgs e)
{
tbLog.Text = "";
}
#endregion
//检查设备连接字符串的IP的格式是否正确 baogq add 2019年11月18日
protected bool checkDeviceIP(string message)
{
Regex rex = new Regex(@"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$");
if (rex.IsMatch(message))
{
return true;
}
else
return false;
}
//检查适配软件端口号的格式是否正确 baogq add 2019年11月18日
protected bool checkDevicePort(string message)
{
try
{
if (message.IndexOf(".") > 0)
{
return false;
}
if (Convert.ToInt32(message) >= 0 && Convert.ToInt32(message) <= 65535)
{
return true;
}
else
{
return false;
}
}
catch (Exception)
{
return false;
}
}
private void btnInit_Click(object sender, EventArgs e)
{
if (m_IDeviceAdapter != null)
{
m_DeviceIp = tb_IPaddr.Text.Trim();
m_DevicePort = tb_Port.Text.Trim();
if (!checkDeviceIP(m_DeviceIp)) //判断IP地址格式是否正确
{
ShowMessage("设备的IP地址 格式输入错误。IP地址 的正确格式是:(0-255.0-255.0-255.0-255)。");
return;
}
if (!checkDevicePort(m_DevicePort))
{
ShowMessage("设备端口号 格式输入错误。端口号 的正确格式是0-65535的整数。");
return;
}
if (m_DeviceIp.IndexOf("COM") >= 0)
{
if (m_IDeviceAdapter.Device_Init(CommType.RS232, m_DeviceIp + ":" + m_DevicePort, (DeviceType)(Convert.ToInt32(m_DeviceType))))
{
m_IDeviceAdapter.RecvIdentifyDataEvent += new RecvIdentifyData(RecvIdentifyDataTrue);
ShowMessage("初始化成功");
}
else
{
ShowMessage("初始化失败");
}
}
else
{
if (m_IDeviceAdapter.Device_Init(CommType.RJ45, m_DeviceIp + ":" + m_DevicePort, (DeviceType)(Convert.ToInt32(m_DeviceType))))
{
m_IDeviceAdapter.RecvIdentifyDataEvent += new RecvIdentifyData(RecvIdentifyDataTrue);
ShowMessage("初始化成功");
}
else
{
ShowMessage("初始化失败");
}
}
}
}
private void btnConnect_Click(object sender, EventArgs e)
{
if (m_IDeviceAdapter != null)
{
m_DeviceIp = tb_IPaddr.Text.Trim();
m_DevicePort = tb_Port.Text.Trim();
if (!checkDeviceIP(m_DeviceIp)) //判断IP地址格式是否正确
{
ShowMessage("设备的IP地址 格式输入错误。IP地址 的正确格式是:(0-255.0-255.0-255.0-255)。");
return;
}
if (!checkDevicePort(m_DevicePort))
{
ShowMessage("设备端口号 格式输入错误。端口号 的正确格式是0-65535的整数。");
return;
}
if (m_DeviceIp.IndexOf("COM") >= 0)
{
if (m_IDeviceAdapter.Device_Init(CommType.RS232, m_DeviceIp + ":" + m_DevicePort, (DeviceType)(Convert.ToInt32(m_DeviceType))))
{
m_IDeviceAdapter.RecvIdentifyDataEvent += new RecvIdentifyData(RecvIdentifyDataTrue);
ShowMessage("初始化成功");
}
else
{
ShowMessage("初始化失败");
}
}
else
{
if (m_IDeviceAdapter.Device_Init(CommType.RJ45, m_DeviceIp + ":" + m_DevicePort, (DeviceType)(Convert.ToInt32(m_DeviceType))))
{
m_IDeviceAdapter.RecvIdentifyDataEvent += new RecvIdentifyData(RecvIdentifyDataTrue);
//ShowMessage("初始化成功");
}
else
{
ShowMessage("初始化失败");
}
}
if (m_IDeviceAdapter.Device_Connect())
{
ShowMessage("连接成功");
}
else
{
ShowMessage("连接失败");
}
}
}
private void btnConStatus_Click(object sender, EventArgs e)
{
try {
if (m_IDeviceAdapter != null)
{
if (m_IDeviceAdapter.Device_GetState())
{
ShowMessage(" 当前状态:已连接");
}
else
{
ShowMessage(" 当前状态:未连接");
}
}
}
catch (Exception ex)
{
ShowMessage("当前状态:未连接");
}
}
private void btnDisConnect_Click(object sender, EventArgs e)
{
try
{
if (m_IDeviceAdapter != null)
{
m_IDeviceAdapter.Device_Destroy();
ShowMessage(" 断开连接成功" + "\r\n");
}
}
catch (Exception ex)
{
ShowMessage("当前状态:未连接");
}
}
private void btnOneIdentify_Click(object sender, EventArgs e)
{
if (m_IDeviceAdapter != null)
{
Byte iReadLen = 0;
//UInt16 TimedOut = Convert.ToUInt16(tbIdentifyTimeOut.Text.Trim());
//m_iAntenna = Convert.ToByte(tbIdentifyAnt.Text.Trim());
Byte[] pReadData = null;
//string iEpc = m_IDeviceAdapter.Device_GetOneIdentifyData(m_iAntenna, TimedOut);
//ShowMessage(" 单次识别到的数据(测试返回String的函数)为: " + iEpc + "\r\n");
//iReadLen = m_IDeviceAdapter.Device_GetOneIdentifyData(ref pReadData, m_iAntenna, TimedOut,0); //如果读取到数据
//if (iReadLen > 0)
//{
// ShowMessage(" 单次识别到的数据(测试返回btye长度的函数)为: " + StringChange.bytesToHexStr(pReadData) + "\r\n");
//}
//else
//{
// ShowMessage(" 未识别到数据" + "\r\n");
//}
}
}
private void btnLoopIdentify_Click(object sender, EventArgs e)
{
//if (m_IDeviceAdapter != null)
//{
// int iLoop = 5;
// int iLoopTime = 1000;
// iLoop = int.Parse(tbIdentifyCount.Text.Trim());
// iLoopTime = int.Parse(tbIdentifyTime.Text.Trim());
// Byte iReadLen = 0;
// UInt16 TimedOut = Convert.ToUInt16(tbIdentifyTimeOut.Text.Trim());
// m_iAntenna = Convert.ToByte(tbIdentifyAnt.Text.Trim());
// Byte[] pReadData = null;
// ShowMessage("循环测试开始:");
// for (int i = 0; i < iLoop; i++)
// {
// string iEpc = m_IDeviceAdapter.Device_GetOneIdentifyData(m_iAntenna, TimedOut);
// ShowMessage(" 单次识别到的数据(测试返回String的函数)为: " + iEpc + "\r\n");
// iReadLen = m_IDeviceAdapter.Device_GetOneIdentifyData(ref pReadData, m_iAntenna, TimedOut,0); //如果读取到数据
// if (iReadLen > 0)
// {
// ShowMessage(" 单次识别到的数据(测试返回btye长度的函数)为: " + StringChange.bytesToHexStr(pReadData) + "\r\n");
// }
// else
// {
// ShowMessage(" 未识别到数据" + "\r\n");
// }
// Thread.Sleep(iLoopTime);
// }
// ShowMessage("循环测试结束");
//}
//else
//{
// ShowMessage(" m_IDeviceAdapter is null" + "\r\n");
//}
}
private void btnSendHeartPack_Click(object sender, EventArgs e)
{
if (m_IDeviceAdapter != null)
{
byte iResult = 0;
iResult = m_IDeviceAdapter.Device_SendHeartPack();
ShowMessage(" 获得心跳包成功:" + iResult + "\r\n");
}
}
private void btnReadData_Click(object sender, EventArgs e)
{
#region init data
G2MemBank iG2bk = G2MemBank.EPC;
UInt16 iReadLen = 0;
Byte[] pReadData = null;
Byte[] pFilterData = null;
UInt16 filterOffset = 0; //过滤偏移
string strFilterData = "";
UInt16 iFilterDataLength = 1;//过滤长度
pFilterData = new byte[iFilterDataLength];
pFilterData[0] = 0;
UInt16 readOffset = 0; //读取偏移
UInt16 readLength = Convert.ToUInt16(cb_DataLength.Text); //读取长度
int iAnt = 0;
//for (int i = 0; i < iFilterDataLength; i++)
//{
// pFilterData[i] = Convert.ToByte(strFilterData.Substring(i * 2, 2), 16); //过滤数据
//}
if (!m_IDeviceAdapter.Device_GetState())
{
ShowMessage("请检查设备连接状态!");
return;
}
if (cbReadType.SelectedIndex == 1) //判断读头类型
{
iAnt = cbAntenna.SelectedIndex + 1 + 4;
}
else
{
iAnt = cbAntenna.SelectedIndex + 1;
}
m_iAntenna = Convert.ToByte(iAnt);
#endregion
if (cbTagNo.SelectedIndex.ToString() == "1")
{
iG2bk = G2MemBank.TID;
}
if (m_IDeviceAdapter != null)
{
iReadLen = m_IDeviceAdapter.Device_Read(iG2bk, filterOffset, iFilterDataLength, pFilterData, iG2bk, readOffset, readLength, ref pReadData, m_iAntenna, 1); //如果读取到数据
if (iReadLen > 0)
{
if (iG2bk == G2MemBank.TID)
{
ShowMessage(" 读取原始数据:" + StringChange.bytesToHexStr(pReadData) + "\r\n");
tbShowReadData.Text = StringChange.bytesToHexStr(pReadData);
}
else
{
ShowMessage("标签数据:" + Encoding.ASCII.GetString(pReadData, 0, pReadData.Length) + " 读取原始数据:" + StringChange.bytesToHexStr(pReadData) + "\r\n");
tbShowReadData.Text = Encoding.ASCII.GetString(pReadData, 0, readLength);
}
}
else
{
ShowMessage(" 未读取到数据" + "\r\n");
tbShowReadData.Text = "";
}
}
}
private void btnLoopReadData_Click(object sender, EventArgs e)
{
#region init data
//int iLoop = 5;
//iLoop = Convert.ToInt32(tbReadLoop.Text.Trim());
//int iLoopTime = 1000;
//iLoopTime = Convert.ToInt32(tbReadLoopTime.Text.Trim());
//UInt16 iReadLen = 0;
//Byte[] pReadData = null;
//Byte[] pFilterData = null;
//UInt16 filterOffset = Convert.ToUInt16(tbReadFilterOffset.Text.Trim()); //过滤偏移
//string strFilterData = tbFilterData.Text.Trim();
//UInt16 iFilterDataLength = Convert.ToUInt16(strFilterData.Length / 2);//过滤长度
//pFilterData = new byte[iFilterDataLength];
//for (int i = 0; i < iFilterDataLength; i++)
//{
// pFilterData[i] = Convert.ToByte(strFilterData.Substring(i * 2, 2), 16); //过滤数据
//}
//UInt16 readOffset = Convert.ToUInt16(tbReadOffset.Text.Trim()); //读取偏移
//UInt16 readLength = Convert.ToUInt16(tbReadLength.Text.Trim()); //读取长度
//m_iAntenna = Convert.ToByte(tbReadAnt.Text.Trim()); //天线号
#endregion
//if (m_IDeviceAdapter != null)
//{
// ShowMessage("循环读取数据开始:");
// for (int i = 0; i < iLoop; i++)
// {
// iReadLen = m_IDeviceAdapter.Device_Read((G2MemBank)(int.Parse(cbReadFilterNo.SelectedIndex.ToString()) + 1), filterOffset, iFilterDataLength, pFilterData, (G2MemBank)(int.Parse(cbReadNo.SelectedIndex.ToString()) + 1), readOffset, readLength, ref pReadData, m_iAntenna, int.Parse(m_ReadCounts)); //如果读取到数据
// if (iReadLen > 0)
// {
// ShowMessage(" 读取数据:" + StringChange.bytesToHexStr(pReadData) + "\r\n");
// tbShowReadData.Text = StringChange.bytesToHexStr(pReadData);
// }
// else
// {
// ShowMessage(" 未读取到数据");
// }
// Thread.Sleep(iLoopTime);
// }
//}
//else
//{
// ShowMessage(" m_IDeviceAdapter 为空");
//}
//ShowMessage("循环读取数据结束。");
}
private void btnWriteData_Click(object sender, EventArgs e)
{
if (m_IDeviceAdapter != null)
{
UInt16 iReadLen = 0;
Byte[] pWriteData = null;
Byte[] pFilterData = null;
//UInt16 filterOffset = Convert.ToUInt16(tbWriteFilterOffsetAdd.Text.Trim()); //过滤偏移
//string strFilterData = tbWriteFilterData.Text.Trim();
//UInt16 iFilterDataLength = Convert.ToUInt16(strFilterData.Length / 2);//过滤长度
//pFilterData = new byte[iFilterDataLength];
//for (int i = 0; i < iFilterDataLength; i++)
//{
// pFilterData[i] = Convert.ToByte(strFilterData.Substring(i * 2, 2), 16); //过滤数据
//}
UInt16 writeOffset = 0;
string strWriteData = tbWriteData.Text.Trim();//写入的数据
byte iWriteDataLength = Convert.ToByte(strWriteData.Length);//写入长度
pWriteData = new byte[iWriteDataLength];
//判断输入数据是否为9位
if (iWriteDataLength < 12)
{
strWriteData = strWriteData.PadRight((12), '0');
iWriteDataLength = Convert.ToByte(strWriteData.Length);
pWriteData = new byte[strWriteData.Length];
pWriteData = Encoding.Default.GetBytes(strWriteData);
}
else if (iWriteDataLength > 12)
{
ShowMessage("请确认标签数据位数为12位");
return;
}
else
{
pWriteData = Encoding.Default.GetBytes(strWriteData);
}
if (cbReadType.SelectedIndex == 1) //判断读头类型
{
iAnt = cbAntenna.SelectedIndex + 1 + 4;
}
else
{
iAnt = cbAntenna.SelectedIndex + 1;
}
m_iAntenna = Convert.ToByte(iAnt);//天线号
#region 判断天线号是否符合范围
//if (Convert.ToInt32(m_iAntenna) > 16 || Convert.ToInt32(m_iAntenna) <= 0)
//{
// ShowMessage("天线号必须是1-4的整数 " + "\r\n");
// MessageBox.Show("天线号必须是1-4的整数", "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Error);
// return;
//}
#endregion
iReadLen = m_IDeviceAdapter.Device_Write((G2MemBank)(int.Parse(cb_SenorType.SelectedIndex.ToString()) + 1), 0, 0, pFilterData,
(G2MemBank)(int.Parse(cb_SenorType.SelectedIndex.ToString()) + 1), writeOffset, iWriteDataLength, pWriteData, m_iAntenna);
if (iReadLen == 1)
{
ShowMessage(" 写入成功");
tbWriteResult.Text = " 写入成功";
}
else if (iReadLen == 0)
{
ShowMessage(" 写入失败");
tbWriteResult.Text = " 写入失败";
}
else if (iReadLen == 2)
{
ShowMessage(" 写入跟读取不一致,写入失败,读取成功");
tbWriteResult.Text = " 写入跟读取,写入失败,读取成功";
}
}
}
public static void Restart()
{
//开启新的实例
Process.Start(Application.ExecutablePath);
}
private void btnbeginIdentify_Click(object sender, EventArgs e)
{
if (m_IDeviceAdapter != null)
{
try {
//m_iAntenna = Convert.ToByte(tbIdentifyAnt.Text.Trim());
bool bResult = false;
bResult = m_IDeviceAdapter.Device_BeginIdentify(1, 10000,true);
if (bResult)
{
ShowMessage(" 发送连续识别指令成功");
}
else
{
//ShowMessage(" 发送连续识别指令失败" + "\r\n");
}
}
catch (Exception ex)
{
ShowMessage(" 发送连续识别指令失败:" + "\r\n");
}
}
}
private void btnstopIdentify_Click(object sender, EventArgs e)
{
if (m_IDeviceAdapter != null)
{
try
{
bool bResult = false;
//m_iAntenna = Convert.ToByte(tbIdentifyAnt.Text.Trim());
bResult = m_IDeviceAdapter.Device_StopIdentify(1);
ShowMessage(" 发送停止连续识别指令成功" + "\r\n");
}
catch (Exception ex)
{
ShowMessage(" 发送停止连续识别指令失败" + "\r\n");
}
}
}
private void btnSetAntCT_Click(object sender, EventArgs e)
{
try {
if (m_IDeviceAdapter != null)
{
if (!m_IDeviceAdapter.Device_GetState())
{
ShowMessage("读头工作模式设置失败,请检查设备连接状态!");
return;
}
int iDbi = 0;
bool bResult = false;
int iAnt = 0;
if (cb_SenorType.SelectedIndex == 1) //判断读头类型
{
iAnt = cb_Ant.SelectedIndex + 1 + 4;
}
else
{
iAnt = cb_Ant.SelectedIndex + 1;
}
m_iAntenna = Convert.ToByte(iAnt);
bResult = m_IDeviceAdapter.Device_SetRf(iDbi, m_iAntenna, WriteOrRead.Read);
if (bResult)
{
ShowMessage("读头工作模式设置成功");
}
else
{
ShowMessage("读头工作模式设置失败");
}
}
}
catch (Exception ex)
{
ShowMessage("请连接读写器!再进行其他操作");
}
}
private void btSetSignleRead_Click(object sender, EventArgs e)
{
try {
if (!m_IDeviceAdapter.Device_GetState())
{
ShowMessage("读头工作模式设置失败,请检查设备连接状态!");
return;
}
if (m_IDeviceAdapter != null)
{
string strResult = "";
int iAnt = 0;
if (cb_SenorType.SelectedIndex != 1)
{
ShowMessage("请更改读头类型为超高频!");
return;
}
iAnt = cb_Ant.SelectedIndex + 1;
m_iAntenna = Convert.ToByte(iAnt);
strResult = m_IDeviceAdapter.Device_GetOneIdentifyData(m_iAntenna, 2000);
if (strResult == "成功")
{
ShowMessage("单标签模式设置成功");
}
else if (strResult == "超时")
{
ShowMessage("单标签模式设置超时,请重新设置!");
}
else
{
ShowMessage("单标签模式设置失败,请重新设置!");
}
}
}
catch (Exception ex)
{
ShowMessage("请连接读写器!再进行其他操作");
}
}
private void AToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutSystem aboutForm = new AboutSystem();
aboutForm.ShowDialog();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
ChangeSkinForm csForm = new ChangeSkinForm();
csForm.ShowDialog();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("您确定要重启该系统吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
//系统重启
Application.Exit();
//开启新的实例
Application.Restart();
}
else
{
return;
}
}
private void DeviceAppNewDemo_FormClosing(object sender, FormClosingEventArgs e)
{
if (m_isReload == "1") //是否自动重启1为重启
{
Restart();
}
else
{
if (e.CloseReason == CloseReason.UserClosing)
{
if (MessageBox.Show("您确定要关闭该系统吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
//关闭当前实例
Process.GetCurrentProcess().Kill();
}
else
{
e.Cancel = true;
}
}
}
}
private void BtnPing_Click(object sender, EventArgs e)
{
if (BtnPing.Text == "取消")
{
BtnPing.Text = "Ping";
TimerPing.Enabled = false;
TimerPing.Stop();
}
else if (BtnPing.Text == "Ping")
{
TimerPing.Enabled = true;
TimerPing.Interval = 1000;
TimerPing.Start();
BtnPing.Text = "取消";
}
}
private void TimerPing_Tick(object sender, EventArgs e)
{
string ip = tb_IPaddr.Text.Trim();
Thread M_Deal = new Thread(() => PingTF(ip, new Ping()));
M_Deal.IsBackground = true;
M_Deal.Start();
tbLog.Text += log;
tbLog.Select(tbLog.TextLength, 0);
tbLog.ScrollToCaret();
}
string log = null;
private void PingTF(string ip, Ping ping)
{
if (!string.IsNullOrEmpty(ip))
{
PingReply reply = ping.Send(ip);
if (reply.Status == IPStatus.Success)
{
string time = DateTime.Now.ToString();
string hour = DateTime.Now.Hour.ToString();
string patime = time.Replace(":", "").Replace("/", "");
log = time + ":来自" + reply.Address.ToString() + "的回复:字节=" + reply.Buffer.Length + " 回复时间=" + reply.RoundtripTime.ToString() + " TTL=" + reply.Options.Ttl + "\r\n";
//if (hour.Equals("00"))
//{
//}
}
else
{
log = DateTime.Now.ToString() + ":Request timed out.\r\n";
// Console.WriteLine("继续ping");
//PingTF(ip, ping);
}
Thread.Sleep(1000);
}
}
private void cbTagNo_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbTagNo.SelectedIndex.ToString() == "1")
{
this.cb_DataLength.Enabled = false;
this.btnWriteData.Enabled = false;
this.tbWriteData.Enabled = false;
}
else
{
this.cb_DataLength.Enabled = true;
this.btnWriteData.Enabled = true;
this.tbWriteData.Enabled = true;
}
}
}
}