C#程序 可以同时获取很多个串口数据,显示在cartesianChart波形中,新增一个串口数据,增加一条波形数据,去掉一个串口数据,则波形不显示去掉的串口数据
时间: 2023-12-09 19:02:56 浏览: 112
你可以按照以下步骤来实现这个功能:
1. 在程序中添加串口对象,并设置好串口的参数(如波特率、数据位、停止位、校验位等)。
```
SerialPort serialPort1 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
```
2. 创建一个List对象,用于保存所有已连接的串口数据。
```
List<ChartValues<double>> chartDataList = new List<ChartValues<double>>();
```
3. 在串口对象的DataReceived事件中,将接收到的数据转换为数字,并添加到对应的ChartValues对象中。
```
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string data = serialPort1.ReadLine();
double value = double.Parse(data);
chartDataList[0].Add(value); // 将数据添加到第一个串口数据的ChartValues对象中
}
```
4. 在窗口的Loaded事件中,初始化所有串口数据的ChartValues对象,并将它们添加到chartDataList中。
```
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// 初始化第一个串口数据的ChartValues对象
ChartValues<double> chartData1 = new ChartValues<double>();
chartDataList.Add(chartData1);
// 初始化第二个串口数据的ChartValues对象
ChartValues<double> chartData2 = new ChartValues<double>();
chartDataList.Add(chartData2);
// 将所有ChartValues对象绑定到cartesianChart控件
cartesianChart1.Series = new SeriesCollection
{
new LineSeries
{
Title = "Serial Port 1",
Values = chartData1
},
new LineSeries
{
Title = "Serial Port 2",
Values = chartData2
}
};
}
```
5. 在程序中提供一些操作,可以动态添加或删除串口数据。例如,添加一个新的串口数据时,需要创建一个新的ChartValues对象,并将它添加到chartDataList中,并在cartesianChart控件中添加一条新的波形数据。
```
private void AddSerialPort()
{
// 创建一个新的ChartValues对象
ChartValues<double> chartData = new ChartValues<double>();
chartDataList.Add(chartData);
// 在cartesianChart控件中添加一条新的波形数据
cartesianChart1.Series.Add(new LineSeries
{
Title = "Serial Port " + chartDataList.Count,
Values = chartData
});
}
```
6. 当需要删除一个串口数据时,需要找到对应的ChartValues对象,并将它从chartDataList中删除,并在cartesianChart控件中移除对应的波形数据。
```
private void RemoveSerialPort(int index)
{
// 将对应的ChartValues对象从chartDataList中删除
chartDataList.RemoveAt(index);
// 在cartesianChart控件中移除对应的波形数据
cartesianChart1.Series.RemoveAt(index);
}
```
通过以上步骤,你可以动态地添加、删除串口数据,并在cartesianChart控件中实时显示所有已连接的串口数据。当删除一个串口数据时,对应的波形数据也会被移除,不会再显示在图表中。
阅读全文