Я пытался создать приложение для чтения данных из последовательного порта (скорость передачи данных 9600) и записи в текстовое поле, а затем записи тех же данных в график, но это не сработало. оно либо ничего не делает, либо приложение зависает до тех пор, пока у меня не закончится оперативная память, и, как я вижу, в тот момент, когда я подключаюсь к своему Arduino (я проверил с помощью arduino IDE, оно отправляет данные правильно), использование моей оперативной памяти увеличивается с 32-50 до 1 ГБ и в Интернете нет решения, я даже не смог найти ту же проблему
вот мой код
Эта часть вообще не должна содержать комментариев. для тестирования я решил их прокомментировать
также я считаю, что именно этот блок кода вызывает ошибку, поскольку эта часть должна записывать данные в textBox и т. д.
я не могу указать ошибку, так как я турок, и основная ошибка выдается на турецком языке
Я пытался изменить скорость передачи данных, но это не сработало, и поскольку это была всего лишь идея, я застрял
Я пытался создать приложение для чтения данных из последовательного порта (скорость передачи данных 9600) и записи в текстовое поле, а затем записи тех же данных в график, но это не сработало. оно либо ничего не делает, либо приложение зависает до тех пор, пока у меня не закончится оперативная память, и, как я вижу, в тот момент, когда я подключаюсь к своему Arduino (я проверил с помощью arduino IDE, оно отправляет данные правильно), использование моей оперативной памяти увеличивается с 32-50 до 1 ГБ и в Интернете нет решения, я даже не смог найти ту же проблему вот мой код [code]`using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; using System.Security.Cryptography.X509Certificates; using System.Data.Common; using System.Windows.Forms.DataVisualization.Charting; using System.Web.UI.DataVisualization.Charting;
namespace ArduinoSerial_Teknofest_ { public partial class ArduinoSerial : Form {
#region public veriables public class Globals { public static Boolean Connected = false; public static Boolean İfDisconnected = false; }
/// To write information to console public void WriteToConsole(string messege, string TextColor) { ConsoleLogs.SelectionColor = Color.FromName(TextColor); ConsoleLogs.SelectedText += "/// " + messege + Environment.NewLine; }
#endregion
public ArduinoSerial() { InitializeComponent(); // Get a list of serial port names.
private void ArduinoSerial_Load(object sender, EventArgs e) { /* //Get the resulation of screen System.Drawing.Rectangle ScreenResulation = Screen.PrimaryScreen.WorkingArea;
//Set size of form to 50% of screen size this.Size = new System.Drawing.Size(Convert.ToInt32(0.5 * ScreenResulation.Width),Convert.ToInt32(0.5 * ScreenResulation.Height));
this.Location = new System.Drawing.Point(10, 10); */ }
public void Scan_click(object sender, EventArgs e) { // Get a list of serial port names. string[] ports = SerialPort.GetPortNames();
PortsCB.Items.Clear(); PortsCB.Items.AddRange(ports); WriteToConsole("Found PORTS = ", "Green"); foreach (string port in ports) { WriteToConsole(port, "Green"); } } public void ConnectButton_Click(object sender, EventArgs e) { string SelectedBaudRate = BaudRateCB.Text; string SelectedPort = PortsCB.Text; if (Device.IsOpen == false) { ///Try to open the port if cant give an error try { ///Get user info Device.BaudRate = int.Parse(SelectedBaudRate); Device.PortName = SelectedPort; Device.Open(); ///Check if the port open, if it is disable user input bloccks if (Device.IsOpen == true) { ConnectButton.Text = "Disconnect"; BaudRateCB.Enabled = false; PortsCB.Enabled = false; DataMenu.Enabled = true; WriteToConsole("Connected", "green"); Device.Write("get/device/info");
} } catch (System.IO.IOException) { WriteToConsole("Something went wrong", "red"); } ///if post is used by other program output a error catch (System.UnauthorizedAccessException) { WriteToConsole("port busy", "red"); Device.Close(); } ///if port is allready open output an error catch (System.InvalidOperationException) { WriteToConsole("Port is already open", "red"); Device.Close(); } catch (System.ArgumentNullException) { if (PortsCB.Text == "" && BaudRateCB.Text == "") { WriteToConsole("Please select a port and baudrate", "red"); } else if (PortsCB.Text == "") { WriteToConsole("Please select a port", "red"); } else if (BaudRateCB.Text == "") { WriteToConsole("Please select a baudrate", "red"); } } catch (System.ArgumentException) { if (PortsCB.Text == "" && BaudRateCB.Text == "") { WriteToConsole("Please select a port and baudrate", "red"); } else if (PortsCB.Text == "") { WriteToConsole("Please select a port", "red"); } else if (BaudRateCB.Text == "") { WriteToConsole("Please select a baudrate", "red"); } } catch (System.FormatException) { if (PortsCB.Text == "" && BaudRateCB.Text == "") { WriteToConsole("Please select a port and baudrate", "red"); } else if (PortsCB.Text == "") { WriteToConsole("Please select a port", "red"); } else if (BaudRateCB.Text == "") { WriteToConsole("Please select a baudrate", "red"); } } } else if (Device.IsOpen == true) { WriteToConsole("Disconnected!!", "green"); Device.Close(); ConnectButton.Text = "Connect"; BaudRateCB.Enabled = true; ; PortsCB.Enabled = true; DataMenu.Enabled = false; ConsoleLogs.Clear(); PositionGraph.Series["gyroX"].Points.Clear(); PositionGraph.Series["gyroY"].Points.Clear(); ChartCounter = 0; } }
string recivedData;
//List time = new List(); void Parachute_Status(string data) { int intData = int.Parse(data); switch (intData) { case 1: parachute1_Status.Text = "Not triggered"; parachute2_Status.Text = "Not triggered"; break; case 2: parachute1_Status.Text = "Triggered"; parachute2_Status.Text = "Not triggered"; break; case 3: parachute1_Status.Text = "Not triggered"; parachute2_Status.Text = "Triggered"; break; case 4: parachute1_Status.Text = "Triggered"; parachute2_Status.Text = "Triggered"; break; } }
[/code] Эта часть вообще не должна содержать комментариев. для тестирования я решил их прокомментировать также я считаю, что именно этот блок кода вызывает ошибку, поскольку эта часть должна записывать данные в textBox и т. д. я не могу указать ошибку, так как я турок, и основная ошибка выдается на турецком языке Я пытался изменить скорость передачи данных, но это не сработало, и поскольку это была всего лишь идея, я застрял