예제 #1
0
        void GPS_Packet(object sender, Phidgets.Events.PacketEventArgs e)
        {
            int i = 0;

            while ((i < 64) && ((byte)(sckbuf_write + 1) != sckbuf_read))
            {
                sckbuf[(byte)sckbuf_write++] = e.Packet[i];
                i++;
            }
            parse_GPS_packets();
        }
예제 #2
0
        void Bridge_Packet(object sender, Phidgets.Events.PacketEventArgs e)
        {
            int[]    strain   = new int[4];
            double[] oldValue = new double[4];
            int      x        = 1;
            int      y        = 2;
            int      z        = 3;

            if (e.Packet[0] == 1)
            {
                msCounter += 8;
            }
            dataCounter++;

            for (int i = 0; i < 4; i++)
            {
                strain[i] = ((e.Packet[x] << 16) + (e.Packet[y] << 8) + e.Packet[z]);
                x        += 3;
                y        += 3;
                z        += 3;
                //oldValue[i] = bridges[i].bridgeValue;
                if (bridges[i].enabled)
                {
                    valueSums[i] += (strain[i] - (int)(Math.Pow(2, 23))) / (int)gain / (Math.Pow(2, 23)) * 1000;
                }
                else
                {
                    valueSums[i] += 0;
                }

                //bridges[i].bridgeValue = (strain[i] - (int)(Math.Pow(2, 23))) / (int)gain / (Math.Pow(2, 23)) * 1000;

                if (msCounter >= dataRate)
                {
                    bridges[i].bridgeValue = valueSums[i] / dataCounter;
                    OnBridgeChange(new BridgeChangeEventArgs(i, bridges[i].bridgeValue));
                    msCounter    = 0;
                    valueSums[i] = 0;
                }
            }
        }
예제 #3
0
        void FrequencyCounter_Packet(object sender, Phidgets.Events.PacketEventArgs e)
        {
            int[] Count         = new int[2];
            int[] TimeLastEvent = new int[2];

            //Read the packet
            int n          = 0;
            int TimerCount = ((int)e.Packet[n++]) | ((int)e.Packet[n++] << 8);

            Count[0]         = (((int)e.Packet[n++]) | ((int)e.Packet[n++] << 8) | ((int)e.Packet[n++] << 16));
            TimeLastEvent[0] = ((int)e.Packet[n++]) | ((int)e.Packet[n++] << 8);
            Count[1]         = (((int)e.Packet[n++]) | ((int)e.Packet[n++] << 8) | ((int)e.Packet[n++] << 16));
            TimeLastEvent[1] = ((int)e.Packet[n++]) | ((int)e.Packet[n++] << 8);

            for (int i = 0; i < 2; i++)
            {
                long   lastCount = inputs[i].totalCount;
                double lastFreq  = inputs[i].frequency;
                inputs[i].totalCount += Count[i];
                inputs[i].totalTime  += TimerCount;


                if (Count[i] == 0)
                {
                    if (i == 0)
                    {
                        i = 0;
                    }
                    if (inputs[i].adjust != -1) //Do not accumulate if timed out
                    {
                        inputs[i].adjust += TimerCount;
                    }
                    if (inputs[i].adjust > inputs[i].timeOut * tickspersec)
                    {
                        inputs[i].adjust    = -1;
                        inputs[i].frequency = 0;
                        OnCountChange(new CountChangeEventArgs(i, (int)Count[i], (int)inputs[i].frequency, (int)TimerCount));
                    }
                }
                else if (Count[i] >= 1)
                {
                    if ((inputs[i].adjust == -1) && (Count[i] == 1))
                    {
                        inputs[i].adjust = TimerCount - TimeLastEvent[i];
                    }
                    else
                    {
                        if (inputs[i].adjust == -1)
                        {
                            inputs[i].adjust = 0;
                        }
                        inputs[i].frequency = (double)((double)Count[i] / (inputs[i].adjust + TimeLastEvent[i]) * tickspersec);
                        inputs[i].adjust    = TimerCount - TimeLastEvent[i];
                    }
                }

                if (lastCount != inputs[i].totalCount)
                {
                    OnCountChange(new CountChangeEventArgs(i, (int)Count[i], (double)inputs[i].frequency, (long)TimerCount));
                }
            }
        }
예제 #4
0
 void Analog_Packet(object sender, Phidgets.Events.PacketEventArgs e)
 {
 }