Ejemplo n.º 1
0
        private void LoadMouseData()
        {
            byte[] data = null;

            while (true)
            {
                if (SDMemoryCard.IsCardInserted && SDMemoryCard.IsCardMounted)
                {
                    data = SDMemoryCard.ReadFile("MouseData");
                    break;
                }

                Thread.Sleep(2000);
            }

            if (data != null)
            {
                String   mouseData  = new String(Encoding.UTF8.GetChars(data));
                String[] cordinates = mouseData.Split(new char[] { ' ' }, 2);
                Debug.Print("Lette X -> " + cordinates[0] + "  Y -> " + cordinates[1]);

                if (mouse != null)
                {
                    lastWrittenX = Int32.Parse(cordinates[0]);
                    lastWrittenY = Int32.Parse(cordinates[1]);
                    mouse.SetPosition(lastWrittenX, lastWrittenY);
                }
            }

            mouseFirstConnect = false;
        }
Ejemplo n.º 2
0
        void writingTimer_Tick(GT.Timer timer)
        {
            // Check if Sdcard is present
            if (!SDMemoryCard.CheckSdCard())
            {
                return;
            }

            bool[] toForce = new bool[5];
            bool   toSend  = false;

            // Check what measures have to be forced
            for (int i = 0; i < 5; i++)
            {
                if (measuresNotChanged[i] == 14)
                {
                    toForce[i] = true;
                }
            }

            // Get measurements from sensors handler
            SensorsHandler.Measurements m = sensors.GetMeasurements(toForce);

            // Update measuresNotChanged values
            for (int i = 0; i < 5; i++)
            {
                if (!m.changed[i])
                {
                    measuresNotChanged[i]++;
                }
                else
                {
                    measuresNotChanged[i] = 0;
                    toSend = true;
                }
            }

            // Produce JSON and write it on a file
            if (toSend)
            {
                byte[] data          = Json.CreateJsonMeasurements(m.x, m.y, m.temperature, m.pressure, m.humidity);
                long   numberOfTicks = Json.measureTimeTicks;
                string fileName      = new DateTime(numberOfTicks).ToString("yyyyMMddTHHmmss");

                if (!Time.IsTimeSynchronized)
                {
                    fileName += "_" + numberOfTicks;
                }

                if (SDMemoryCard.WriteFile(fileName, data))
                {
                    Debug.Print("The file: " + fileName + " has been written");
                }
                else
                {
                    Debug.Print("ERROR: the file " + fileName + " has not been written");
                }
            }
        }
Ejemplo n.º 3
0
        void mqttClient_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
        {
            String fileName = new String(Encoding.UTF8.GetChars(e.Message));

            // Delete correctly sent message (measurements set)
            SDMemoryCard.DeleteFile(fileName, true);
            waitingAmazonAckFiles.Remove(fileName);
            Debug.Print("Message \"" + fileName + "\" correctly saved on Amazon S3");
        }
Ejemplo n.º 4
0
        private void CreateFileQueue()
        {
            string[] fileList = SDMemoryCard.GetFileList();

            if (fileList != null)
            {
                foreach (string fileName in fileList)
                {
                    fileQueue.Enqueue(fileName);
                }
            }
        }
Ejemplo n.º 5
0
        void ProgramStarted()
        {
            Debug.Print("Program Started");

            // Setup sdcard
            SDMemoryCard.SetSDcard(sdCard);

            // Setup display
            Display.SetDisplay(displayTE35);

            // Setup sensor
            sensors = new SensorsHandler(usbHost, button);

            // Setup network
            network = new Network(ethernetJ11D);

            // Setup reader
            reader = new Reader(sensors);

            // MqttHandler
            mqttHandler = new MqttHandler();
        }
Ejemplo n.º 6
0
        void persistenceTimer_Tick(GT.Timer timer)
        {
            if (mouse != null)
            {
                int x = Mouse.X;
                int y = Mouse.Y;

                if (x != lastWrittenX || y != lastWrittenY)
                {
                    String mouseData = x + " " + y;

                    if (!SDMemoryCard.WriteFile("MouseData", Encoding.UTF8.GetBytes(mouseData), true))
                    {
                        Debug.Print("ERROR while saving MouseData!");
                    }
                    else
                    {
                        lastWrittenX = x;
                        lastWrittenY = y;
                    }
                }
            }
        }
Ejemplo n.º 7
0
        private void SenderWorker()
        {
            fileQueue              = new Queue();
            messageIdToFileMap     = new Hashtable();
            waitingGatewayAckFiles = new ArrayList();
            waitingAmazonAckFiles  = new ArrayList();

            while (!SDMemoryCard.IsInitialized)
            {
                Thread.Sleep(3000);
            }

            while (true)
            {
                Thread.Sleep(4500);

                if (fileQueue.Count == 0)
                {
                    Thread.Sleep(30000);
                    CreateFileQueue();
                    continue;
                }

                String fileName = (String)fileQueue.Dequeue();

                // Check if current file is "MouseData"
                if (fileName.Length == 9)
                {
                    continue;
                }

                if (fileName.IndexOf("_") != -1)
                {
                    String newFileName = SDMemoryCard.RenameUnsynchedFile(fileName);
                    if (newFileName != null)
                    {
                        fileQueue.Enqueue(newFileName);
                    }
                    else
                    {
                        fileQueue.Enqueue(fileName);
                    }

                    Thread.Sleep(200);
                    continue;
                }

                if (waitingAmazonAckFiles.Contains(fileName) || waitingGatewayAckFiles.Contains(fileName))
                {
                    Thread.Sleep(100);
                    continue;
                }

                byte[] fileData = SDMemoryCard.ReadFile(fileName);

                Thread.Sleep(200);

                if (fileData != null)
                {
                    ushort messageId = PublishMessage(fileData);

                    if (messageId == 0)
                    {
                        fileQueue.Enqueue(fileName);
                    }
                    else
                    {
                        messageIdToFileMap.Add(messageId, fileName);
                        waitingGatewayAckFiles.Add(fileName);
                    }
                }
            }
        }