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; }
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"); } } }
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"); }
private void CreateFileQueue() { string[] fileList = SDMemoryCard.GetFileList(); if (fileList != null) { foreach (string fileName in fileList) { fileQueue.Enqueue(fileName); } } }
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(); }
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; } } } }
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); } } } }