我有一个通过 LAN 连接到计算机的电子设备。我有它的 SDK 与它通信。
在与设备通信之前,必须使用 SDK 中提供的代码连接和注册设备。没关系。
我的win应用程序在应用程序启动时连接并注册机器,但问题是如果电子设备关闭然后再打开,应用程序必须再次连接并注册设备。
所以问题是如何持续监控设备是否通过 IP 连接(例如通过 C# 代码对其进行 PING)。
因此,不断 PING 设备时的一个问题是我必须在单独的线程上运行它,这样它就不会影响我的实际应用程序。另一个好的解决方案是,如果我得到一些片段代码,当设备通过 IP 断开连接时会触发事件。
感谢帮助。问候,
编辑 1:我用来使用 SDK 连接的一些代码
bool connected;
connected = axCZKEM1.Connect_Net("192.168.1.201", "4370");
bool registered;
registered = axCZKEM1.RegEvent(1, 65535);
编辑 2:我正在尝试 sa_ddam213 的回答方法,但我从未遇到 ping 失败。此外,它使我的电脑运行缓慢。我犯了什么错误?
while (true)
{
Ping ping = new Ping();
ping.PingCompleted += (sender, e) =>
{
if(e.Reply.Status != IPStatus.Success)
{
connected=false;
registered=false;
while(connected && registered)
{
connected = axCZKEM1.Connect_Net("192.168.1.201", 4370);
registered = axCZKEM1.RegEvent(1, 65535);
}
}
};
ping.Send("192.168.1.201", 3000);
}