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(); }
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(); }