Как построить график реального времени visual basic
я могу построить график в реальном времени с данными из последовательного порта
но шкала времени по оси X была такой же
например, 5sec и 30sec строят график одинаковой ширины.
любая помощь будет очень признательна
Imports System.Windows.Forms.DataVisualization.Charting Public Class Form1 Dim portdata As String Dim vArray As Array Dim time As String Dim engChart As New Series Dim pwrChart As New Series Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Chart1.Series.Clear() Chart1.Titles.Add("Wireless energy meter chart") engChart.Name = "Energy" pwrChart.Name = "Power" engChart.ChartType = SeriesChartType.Line pwrChart.ChartType = SeriesChartType.Line Chart1.Series.Add(engChart) 'Chart1.Series.Add(pwrChart) If SerialPort1.IsOpen Then ' check if serial port is open SerialPort1.Close() 'close serial port of is open End If SerialPort1.PortName = "COM1" SerialPort1.BaudRate = 9600 SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.DataBits = 8 SerialPort1.StopBits = IO.Ports.StopBits.One SerialPort1.RtsEnable = True SerialPort1.Open() End Sub Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived System.Threading.Thread.Sleep(500) portdata = SerialPort1.ReadExisting vArray = Split(portdata, ",") Me.Invoke(New EventHandler(AddressOf DoUpdate)) 'My.Computer.FileSystem.WriteAllText("C:\TestFolder1\123.txt", Now, True) My.Computer.FileSystem.WriteAllText("C:\TestFolder1\123.txt", portdata, True) End Sub Public Sub DoUpdate() lblEnergyDsp.Text = vArray(0) lblPowerDsp.Text = vArray(1) engChart.Points.AddXY(time, vArray(0)) pwrChart.Points.AddXY(time, vArray(1)) End Sub Private Sub Form1_FormClosed(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.FormClosedEventArgs) _ Handles MyBase.FormClosed ' Close the Serial Port SerialPort1.Close() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick time = TimeOfDay End Sub End Class
Thava Rajan
пожалуйста, покажите ваши данные порта
S Houghtelin
+5 за показ вашего кода и за использование форматирования. Вам нужно прочитать о правильном использовании serialport, я вижу ряд проблем и потенциал для блокировки приложения.