private void frmMain_Load(object sender, EventArgs e) { ReadConfigSetting(); CreateMenuReport(); /* Создаем объект порт */ cPort = new SPort(); try { cPort.Open(); } catch { MessageBox.Show("Нет доступа к порту!", "Ошибка запуска.", MessageBoxButtons.OK, MessageBoxIcon.Error); } try { Config cConf = new Config(); intervalNewData = cConf.getPeriod() * 1000; //StartStopProcess(TermStart); } catch (Exception err) { StartStopProcess(Convert.ToBoolean(TerminalAct.Stop)); MessageBox.Show(err.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Stop); lblInfo.Text = "Ошибка в работе системы!"; } //cPort.CurrentDataMode = SPort.DataMode.Hex; //cPort.SendData("2f3f210D0A"); //cPort.SendData("8D0AAF3F218D0A1001101F1D10020930093030330C1003C515"); //string retdata = cPort.ReturnData(); }
private void SPortRead(object sender, SerialDataReceivedEventArgs e) { while (_continue) { try { if (SPort.IsOpen) { byte[] buffer = new byte[SPort.ReadBufferSize]; int bytesRead = SPort.Read(buffer, 0, buffer.Length); _tString += Encoding.ASCII.GetString(buffer, 0, bytesRead); if (_tString.IndexOf((char)_char) > -1) { string workingString = _tString.Substring(0, _tString.IndexOf((char)_char)); _tString = _tString.Substring(_tString.IndexOf((char)_char)); Program.ConsoleForm.Invoke(СonsoleDelegate, new Object[] { workingString, Color.Blue }); if (workingString.StartsWith("OK")) { OldCurrentAzimuth = CurrentAzimuth; OldCurrentElevation = CurrentElevation; CurrentAzimuth = float.Parse(workingString.Replace("OK", string.Empty).Replace('.', ',').Split(' ')[0]); CurrentElevation = float.Parse(workingString.Replace("OK", string.Empty).Replace('.', ',').Split(' ')[1]); } _tString = string.Empty; } } } catch (Exception) { } } GC.WaitForPendingFinalizers(); GC.Collect(); }
void Serial() { while (true) { lblMostra.Text += SPort.ReadLine(); lblMostra.Text += "\r\n"; } }
public bool SendSerialPortMessage(string jsonOrientation) { Data = System.Text.Encoding.ASCII.GetBytes(jsonOrientation); Thread.Sleep(10); SPort.Write(Data, 0, Data.Length); Thread.Sleep(10); logger.Info("Message sent to Arduino"); return(true); }
/// <summary> /// Gets a message from the specified serial port in SPort. /// </summary> /// <returns> Returns a string that was read from the serial port. </returns> public string GetSerialPortMessage() { Message = string.Empty; // Read all existing bytes in the stream. Message = SPort.ReadExisting(); logger.Info("Message received from Arduino."); return(Message); }
public void Init(String Port) { SPort.PortName = Port; SPort.BaudRate = 9600; SPort.Open(); Thread.Sleep(100); PinMode(22, INPUT); PinMode(PinDefs.MotorLR, OUTPUT); //LR PinMode(PinDefs.MotorLF, OUTPUT); //LF PinMode(PinDefs.MotorRR, OUTPUT); //RR PinMode(PinDefs.MotorRF, OUTPUT); //RF }
private void findPort() { for (int i = 0; i <= 20; i++) { try { SPort.PortName = "COM" + i; SPort.Open(); ComboPorta.Text = "COM" + i; if (SPort.IsOpen) { break; } } catch (System.IO.IOException) { } } }
private void sendData(string data) { transformingDataToString(data); SPort.WriteLine(data); }
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { SPort.Close(); readSerial.Abort(); buttonReader.Abort(); }
private void SPortWrite(string message) { message = message.Replace(',', '.') + "\r"; SPort.Write(message.ToCharArray(), 0, message.Length); }
private void StartProgram() { try { if (!IsProgramRunning) { LogDateTimeStart = DateTime.Now; PropertiesToolStripMenuItem.Enabled = false; SPort.PortName = PortName; SPort.Open(); _continue = true; TimeLeft = 0; TimeLeftTextBox.Text = ((TimerSetting - TimeLeft) / 1000) + @" сек."; // Включаем таймер обновления времени и даты. DateTimeUpdateTimer.Enabled = true; RotateTimer.Interval = TimerSetting; RotateTimer.Enabled = true; ErrorEmailSendTimer.Interval = (2 * TimerSetting + 1000 * 60 * 10); ErrorEmailSendTimer.Enabled = true; // Считаем угол азимута и элевации. CalculateCurrentAngles(false); DrawAzimuth((int)Math.Round(_SPAData.Azimuth, 0)); DrawElevation((int)Math.Round(90 - _SPAData.Zenith, 0)); AzimuthTextBox.Text = Math.Round(_SPAData.Azimuth, 1) + @"°"; ElevationTextBox.Text = Math.Round(90 - _SPAData.Zenith, 1) + @"°"; ToggleProgramStatus(true); Program.ConsoleForm.Show(); Program.ConsoleForm.Invoke(СonsoleDelegate, new Object[] { "Программа запущена (" + $"Широта: {AreaLatitude}, " + $"Долгота: {AreaLongitude}, " + $"Часовой пояс: {(TimeZone > 0 ? "+" + TimeZone : TimeZone.ToString())} (GTM), " + $"Уставка по времени: {$"{(TimerSetting) / 1000 / 60 / 60 % 24} ч. {(TimerSetting) / 1000 / 60 % 60} м. {(TimerSetting) / 1000 % 60} с."}, " + $"Порт: {PortName}, " + $"Драйвер трекера: {DriverPath.Split('\\').Last()}).", Color.Red }); CalculateCurrentAngles(true); // Если солнце не зашло, то поворачиваемся. if (90 - _SPAData.Zenith > 0) { SPortWrite((string)DriverMethod.Invoke(null, new object[] { Math.Round(_SPAData.Azimuth, 1), Math.Round(_SPAData.Zenith, 1) })); Program.ConsoleForm.Invoke(СonsoleDelegate, new Object[] { $"Производится поворот на угол по азимуту: {Math.Round(_SPAData.Azimuth, 1)}°, по элевации: {Math.Round(90 - _SPAData.Zenith, 1)}° (команда: {(string)DriverMethod.Invoke(null, new object[] { Math.Round(_SPAData.Azimuth, 1), Math.Round(_SPAData.Zenith, 1) })}).", Color.Green }); } else { Program.ConsoleForm.Invoke(СonsoleDelegate, new Object[] { $"Солнце зашло (расчетная элевация {Math.Round(90 - _SPAData.Zenith, 1)}°). Поворот не требуется.", Color.Green }); } } else { ToggleProgramStatus(false); Program.ConsoleForm.Invoke(СonsoleDelegate, new Object[] { "Программа остановлена.", Color.Red }); SPort.Close(); } } catch (Exception ex) { ToggleProgramStatus(false); CalculateCurrentAngles(false); Program.ConsoleForm.Invoke(СonsoleDelegate, new Object[] { "Программа остановлена.", Color.Red }); SPort.Close(); Program.ConsoleForm.Invoke(СonsoleDelegate, new Object[] { $"В ходе запуска программы возникла ошибка: {ex}. \n\nПожалуйста, проверьте настройки программы.", Color.Red }); } }
//*** These methods will be for the arduino scale model. ***// /// <summary> /// Closes the serial port that was opened in SPort. /// </summary> public void CloseSerialPort() { SPort.Close(); logger.Info("Serial port has been closed."); }