Libnodave(TCPIP)+Thread=Problem(einzufrieren) dot.NET

ldar

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Help! (Ich weiß nicht Deutsch)
Problem libnodave Multithreading, einzufrieren.
Code:
[COLOR=#0000FF]class[/COLOR] Program
    {
        [COLOR=#0000FF]public[/COLOR] [COLOR=#0000FF]static[/COLOR] [COLOR=#0000FF]int[/COLOR] Main([COLOR=#0000FF]string[/COLOR][COLOR=#008080][][/COLOR] args)
        {

            BBB c1 = [COLOR=#0000FF]new[/COLOR] BBB();
            BBB c2 = [COLOR=#0000FF]new[/COLOR] BBB();
            BBB c3 = [COLOR=#0000FF]new[/COLOR] BBB();
            BBB c4 = [COLOR=#0000FF]new[/COLOR] BBB();
            BBB c5 = [COLOR=#0000FF]new[/COLOR] BBB();
            Parallel.Invoke(c1.W, c2.W, c3.W, c4.W, c5.W);

            Console.ReadKey();
            [COLOR=#0000FF]return[/COLOR] [COLOR=#00008B]0[/COLOR];
        }
        [COLOR=#0000FF]class[/COLOR] BBB
        {
            libnodave.daveOSserialType fds;
            libnodave.daveInterface di;
            libnodave.daveConnection Connect;
            [COLOR=#0000FF]private[/COLOR] [COLOR=#0000FF]Object[/COLOR] thisLock = [COLOR=#0000FF]new[/COLOR] [COLOR=#0000FF]Object[/COLOR]();
           [COLOR=#0000FF]public[/COLOR] BBB()
           {
               Console.WriteLine([COLOR=#800000]"Сокет {0}"[/COLOR], Task.CurrentId);
               fds.rfd = libnodave.openSocket([COLOR=#00008B]102[/COLOR], [COLOR=#800000]"192.168.4.115"[/COLOR]);
               fds.wfd = fds.rfd;
               [COLOR=#0000FF]if[/COLOR] (fds.rfd > [COLOR=#00008B]0[/COLOR])
               {
                   di = [COLOR=#0000FF]new[/COLOR] libnodave.daveInterface(fds, [COLOR=#800000]"IF1"[/COLOR], [COLOR=#00008B]0[/COLOR], libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
                   di.setTimeout([COLOR=#00008B]1000[/COLOR]);
                   Connect = [COLOR=#0000FF]new[/COLOR] libnodave.daveConnection(di, [COLOR=#00008B]0[/COLOR], [COLOR=#00008B]0[/COLOR], [COLOR=#00008B]2[/COLOR]);
                   Connect.connectPLC();
               }
               [COLOR=#0000FF]else[/COLOR]
                   Console.WriteLine([COLOR=#800000]"Ошибка в потоке {0}"[/COLOR], Task.CurrentId);
           }
            [COLOR=#0000FF]public[/COLOR] [COLOR=#0000FF]void[/COLOR] W()
            {
                    [COLOR=#0000FF]for[/COLOR] ([COLOR=#0000FF]int[/COLOR] y = [COLOR=#00008B]0[/COLOR]; y < [COLOR=#00008B]1[/COLOR];y++ )
                    {
                        [COLOR=#0000FF]using[/COLOR] (libnodave.PDU p = Connect.prepareReadRequest())
                        {
                            p.addVarToReadRequest(libnodave.daveDB, [COLOR=#00008B]102[/COLOR], [COLOR=#00008B]2[/COLOR], [COLOR=#00008B]3[/COLOR]);
                            p.addVarToReadRequest(libnodave.daveDB, [COLOR=#00008B]102[/COLOR], [COLOR=#00008B]6[/COLOR], [COLOR=#00008B]3[/COLOR]);
                            [COLOR=#0000FF]using[/COLOR] (libnodave.resultSet rl = [COLOR=#0000FF]new[/COLOR] libnodave.resultSet())
                            {
                                    Connect.execReadRequest(p, rl);
                                    [COLOR=#0000FF]for[/COLOR] ([COLOR=#0000FF]int[/COLOR] x = [COLOR=#00008B]0[/COLOR]; x < [COLOR=#00008B]19[/COLOR]; x++)
                                    {
                                        [COLOR=#0000FF]if[/COLOR] (Connect.useResult(rl, x) == [COLOR=#00008B]0[/COLOR])
                                        {
                                            Console.WriteLine([COLOR=#800000]"Значение{0}|{1}:{2}|{3}|{4}"[/COLOR], [COLOR=#00008B]1[/COLOR], x + [COLOR=#00008B]1[/COLOR], Connect.getFloat(), DateTime.Now.ToString([COLOR=#800000]"mm:ss.fff"[/COLOR]), Task.CurrentId);
                                        }
                                        [COLOR=#0000FF]else[/COLOR]
                                            Console.WriteLine([COLOR=#800000]"Error"[/COLOR]);
                                    }
                                 
                                
                            }
                        }
                    }
                
            }
        }
    }
 
Yes, your project.Used ReadValues, performance 2000 tags type float = 800 ms...
 
Zuletzt bearbeitet:
Zurück
Oben