Esempio n. 1
0
    /*  Funkcja: List<Int16> readPackets
     *
     * Przeznaczenie: Funkcja odczytująca bufor komunikacji z serwisem ThingGear Connector.
     *             Odczytany ciag znaków dzielony jest znakiem '\r' - CR.
     *             Następnie dla każdego ciągu znaków wywołwyana jest funkcja konwersji
     *             pakietu JSON. Wg instrukcji ThinkGear Connector informacje
     *             wysyłane są w formacie JSON, zagregowanych w pakiety oddzielone
     *             znakiem '\r'.
     *             Jeśli funkcja przetwarzająca pakiet zwróci wartość inną niż null,
     *             to zostaje ona dodana do listy eegValues, która zwracana jest na
     *             końcu funkcji.
     *
     * Argumenty funkcji: Stream s - sturmień komunikacji z serwisem ThinkGear Connector.
     *
     * Funkcja zwraca: List<Int16> eegValues - lista wartości EEG RAW odczytanych ze strumienia s.
     *
     * Zmienne globalne: brak
     *
     * Używane funkcje:
     *  - convertData - funkcja konwertująca pakiet JSON na obiekt eegObj.
     */
    private static List <Int16> readPackets(Stream s)
    {
        List <Int16> eegValues = new List <Int16>();

        if (s.CanRead)
        {
            int         bytesRead  = 0;
            const Int16 bufferSize = 2048;
            byte[]      buffer     = new byte[bufferSize];
            /* Odczyt bufora strumienia s */
            bytesRead = s.Read(buffer, 0, bufferSize);
            /* Podzielenie odczytanego ciągu znaków względem znaku CR ('\r') */
            string[] packets = Encoding.UTF8.GetString(buffer, 0, bytesRead).Split('\r');
            /* Konwersja odczytanych pakietów i aktualizacja bufora wartości EEG RAW */
            foreach (string data in packets)
            {
                eegObj value = convertData(data);
                if (null != value)
                {
                    eegValues.Add(value.rawEeg);
                }
            }
        }
        return(eegValues);
    }
Esempio n. 2
0
    /*  Funkcja: eegObj convertData
     *
     *  Przeznaczenie: Funkcja przetwarza pakiet jsonData odebrany od
     *  ThinkgGear Connector korzystając z biblioteki JSON.NET.
     *  Jeśli pakiet zawiera pole o nazwie rawEeg, to zwracany zostaje
     *  obiekt, zawierający tą wartość EEG RAW. Struktura pakietów JSON
     *  określona jest przez dokumentację ThinkGear Connector.
     *
     *  Argumenty funkcji: string jsonData - ciąg bajtów, odczytany ze strumienia
     *                     komunikacji z serwisem ThinkGear Connector
     *
     *  Funkcja zwraca: eegObj convertedData - obiekt z 1 polem eegRaw, określający
     *                  wartosć pomiaru EEG RAW, dokonanego przez opaskę MindWave
     *                  Mobile 2. Jeśli pakiet JSON nie zawiera wartośći EEG RAW,
     *                  to zwracana jest wartość null.
     *
     *  Zmienne globalne: brak
     *
     *  Używane funkcje:
     *      - JsonConvert.DeserializeObject<T> - funkcja mapująca pakiet JSON na obiekt T
     */
    private static eegObj convertData(string jsonData)
    {
        eegObj convertedData = null;

        try
        {
            convertedData = JsonConvert.DeserializeObject <eegObj>(jsonData);
            /* Wypisz dane w konsoli, jeśli pakiet zawiera dane eegRaw. */
            Console.WriteLine(convertedData?.rawEeg);
        }
        catch
        {
            /* Konwersja nieudana */
        }
        return(convertedData);
    }