我正在编写一个应用程序,用于将数据从模拟OPC服务器传输到MySql数据库。我正在使用OPC Foundation的一些库 - OPCNETAPI.DLL,OPCNETAPI.COM.DLL。
我快乐地从服务器读取程序,但是一旦我在读取数据的循环内打开一个连接,它就会循环大约5次然后停止执行..没有抛出异常而且我试过了几个小时才能完成它并且惨遭失败。我还修改了VisualStudio,以便在抛出异常时中断,并且它没有
希望有些人可能知道最新情况,但没有什么明显的,希望下面的代码会引发想法!
Windows窗体代码
public void readplc()
{
Opc.URL url = new Opc.URL("opcda://localhost/Matrikon.OPC.Simulation.1");
Opc.Da.Server server = null;
OpcCom.Factory fact = new OpcCom.Factory();
server = new Opc.Da.Server(fact, null);
try
{
server.Connect(url, new Opc.ConnectData(new System.Net.NetworkCredential()));
}
catch (Exception ecy)
{
}
// Create a group
Opc.Da.Subscription group;
Opc.Da.SubscriptionState groupState = new Opc.Da.SubscriptionState();
groupState.Name = "Group";
groupState.Active = true;
group = (Opc.Da.Subscription)server.CreateSubscription(groupState);
// add items to the group.
Opc.Da.Item[] items = new Opc.Da.Item[2];
items[0] = new Opc.Da.Item();
items[0].ItemName = "Random.Int1";
items[1] = new Opc.Da.Item();
items[1].ItemName = "Random.Time";
items = group.AddItems(items);
group.DataChanged += new Opc.Da.DataChangedEventHandler(OnTransactionCompleted);
}
public void OnTransactionCompleted(object group, object hReq, Opc.Da.ItemValueResult[] items)
{
for (int i = 0; i < items.GetLength(0); i++)
{
try
{
string a = items[i].Value.ToString();
string b = items[i].ItemName;
string c = items[i].Key;
MySqlConnection conn = new MySqlConnection("server=localhost;user id=localhost;password=localhost;database=localhost;pooling=false");
conn.Open();
conn.Close();
}
catch (Exception ec)
{
MessageBox.Show(ec.Message);
}
}
}
我已经在整个代码中设置了断点,逐步完成了所有可能的事情,但仍然没有明显的导致问题。