public async Task ReadStream()
    {
        serialPort = new SerialPort(Port);

        if (Verbose)
        {
            Console.WriteLine($"Port {Port}");
            Console.WriteLine($"Connection String {TableStorageConnectionString}");
            Console.WriteLine($"Table {TableStorageTable}");
            Console.WriteLine($"Sampling {Sampling} sec");
            Console.WriteLine($"Location name {LocationName}");
        }

        serialPort.ReadTimeout  = 1500;
        serialPort.WriteTimeout = 1500;
        serialPort.Open();

        if (Verbose)
        {
            Console.WriteLine($"Serial Port -{Port}- Opened successfully.");
        }
        int b;

        while (true)
        {
            // read data from PM sensor
            while ((b = serialPort.ReadByte()) != 0xAA)
            {
                ;
            }

            slice[0] = (byte)b;
            if ((b = serialPort.ReadByte()) != 0xC0)
            {
                break;
            }

            slice[1] = (byte)b;

            for (int i = 2; i < 10; i++)
            {
                slice[i] = (byte)serialPort.ReadByte();
            }

            // read data from temp/Hum sensor

            RunCmd c      = new RunCmd();
            var    output = c.Run("/usr/bin/python3", "DHT11-reader.py", "");

            // Text FORMAT - DHT11|Temp|22.0|C|UMID|69.0|%
            if (Verbose)
            {
                Console.WriteLine(output);
            }
            var array = output.Split('|');

            if (array[0] == "DHT11" && array[1] == "Temp" && array[4] == "UMID")
            {
                Humidity    = (int)Convert.ToDouble(array[5], numberProvider);
                Temperature = Convert.ToDouble(array[2], numberProvider);
            }
            else
            {
                Humidity    = -100;
                Temperature = -100;
                Console.WriteLine("Wrong DHT11 message format");
            }

            if (Verbose)
            {
                dump();
            }

            if (TableStorageConnectionString != null && TableStorageTable != null)
            {
                await WriteDataToCloud();
            }

            if (Verbose)
            {
                Console.WriteLine($"Waiting {Sampling}secs");
            }
            Thread.Sleep(1000 * Sampling);
        }

        // serialPort.Close();
    }
Exemple #2
0
 private void btn_run_Click(object sender, EventArgs e)
 {
     new Thread(() =>
     {
         try
         {
             setEnable(false);
             _setlog("源文件夹:" + tb_s.Text);
             _setlog("目标文件夹:" + tb_t.Text);
             var allfile = IOExtension.GetAllFiles(tb_s.Text);
             if (allfile == null || allfile.Count == 0)
             {
                 _setlog("源文件夹为空....,请重新选择");
                 setEnable(true);
                 return;
             }
             var allfilet = IOExtension.GetAllFiles(tb_t.Text);
             if (allfilet != null && allfilet.Count != 0)
             {
                 _setlog("目标文件夹必须为空....,请重新选择");
                 setEnable(true);
                 return;
             }
             _setlog($"获取到文件{allfile.Count}个,共计大小{ IOExtension.CountSize(allfile.Sum(a => a.Length)) }");
             _setlog("清除目标路径");
             IOExtension.DeleteFile(tb_t.Text);
             _setlog("开始复制文件");
             int i = copy(tb_s.Text.Trim(), tb_t.Text.Trim());
             if (i != 0)
             {
                 if (i == 1223)
                 {
                     IOExtension.DeleteFile(tb_t.Text);
                     _setlog("用户取消,删除目标文件夹文件");
                 }
                 else
                 {
                     _setlog(ShellFileOperation.GetErrorString(i));
                 }
                 setEnable(true);
                 return;
             }
             _setlog("复制完成,删除原始文件");
             IOExtension.DeleteFile(tb_s.Text);
             _setlog("开始设置目录");
             RunCmd cmd  = new RunCmd();
             cmd.Output += (str) =>
             {
                 if (str == "c:\\>")
                 {
                     _setlog($"完成,请通过\"{tb_s.Text}\"检查文件是否存在");
                     setEnable(true);
                 }
             };
             cmd.Run($"mklink /j \"{tb_s.Text}\" \"{tb_t.Text}\"");
         }
         catch (Exception ex)
         {
             _setlog(ex.Message);
             setEnable(true);
         }
     }).Start();
 }