1、软件实现根据IP地址获取主机名,然后获取OPC服务器,连接服务器后获OPC服务器上的所有节点,双击某个节点标签,在下面可以订阅标签的值,点击某个标签,右键点击可以更改写入值:
![98ed430da5c9ea967c4cc652f584948c.png](https://img-blog.csdnimg.cn/img_convert/98ed430da5c9ea967c4cc652f584948c.png)
![da790677c204a11b91dd30b9feb04e2e.png](https://img-blog.csdnimg.cn/img_convert/da790677c204a11b91dd30b9feb04e2e.png)
2、软件功能演示:
![715f74d50b0f48ba3e2f1b7b8cacaa0b.gif](https://img-blog.csdnimg.cn/img_convert/715f74d50b0f48ba3e2f1b7b8cacaa0b.gif)
3、部分代码如下:
///
/// 根据IP地址获取DNS主机名
///
///
///
private void button1_Click(object sender, EventArgs e)
{
try
{
IPHostEntry iPHostEntry = Dns.GetHostEntry(textBox1.Text);
textBox2.Text = iPHostEntry.HostName;
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
///
/// 获取OPC服务器
///
///
///
private void button2_Click(object sender, EventArgs e)
{
try
{
if (textBox2.Text != "")
{
kepServer = new OPCServer();
//获取指定DNS主机名上的OPC服务器
object serverList = kepServer.GetOPCServers(textBox2.Text);
comboBox1.Items.Clear();
foreach (string serverName in (Array)serverList)
{
if (!comboBox1.Items.Contains(serverName))
{
comboBox1.Items.Add(serverName);
}
}
}
else
{
MessageBox.Show("请先获取DNS主机名");
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
///
/// 连接OPC服务器
///
///
///
private void button3_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
bool connFlag= ConnectServer(comboBox1.Text,textBox2.Text);
if(connFlag==true)
{
button3.Text = "已连接OPC";
}
GetOPC_Info();
kepBrowser = kepServer.CreateBrowser();
CreateKepBrowser(kepBrowser);
CreateGroup();
}
///
/// 连接OPC服务器,并返回是否连接成功
///
///
///
///
public bool ConnectServer(string serverName,String ServerNode)
{
try
{
kepServer.Connect(serverName, ServerNode);
//判断OPC服务器的连接状态
if (kepServer.ServerState == (int)OPCServerState.OPCRunning)
{
toolStripStatusLabel1.Text = "已连接到服务器:" + kepServer.ServerName + " ";
return true;
}
else
{
toolStripStatusLabel1.Text= "状态:" + kepServer.ServerState.ToString() + " ";
return false;
}
}
catch
{
return false;
}
}
4、完整代码较长,如需要完整代码可先关注并留言,然后私信我发送“OPCDA”即可自动回复,如果能帮助到你,感谢你的关注订阅,可以第一时间接收后续更新。