Я написал код C#, который будет отправлять функции (1-9) на микроконтроллер, а контроллер будет отправлять данные обратно на мой компьютер через RS232 (ПОСЛЕДОВАТЕЛЬНЫЙ ПОРТ). Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь получить входящие данные и поместить их в отсортированный список. Ключом отсортированного списка будет дата/время, а значениями будут входящие данные. Я попытался добавить часть отсортированного списка в свой код, но безуспешно. Ошибки, которые я получаю:
Ошибка CS1503. Аргумент 2: невозможно преобразовать из «int» в «serialreadwrite.SMCValues».
CS0162 Обнаружен недостижимый код SMCData-
Мой код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using System.Timers;
using System.IO;
using System.Net;
using System.Threading;
namespace serialreadwrite
{
public class SMCValues
{
public string ArrayVoltage;
public string ArrayCurrent;
public string AutoMPPT;
public string MotorVoltage;
public string ArrayAmps;
public string MaxMotorVoltage;
public string MotorRPM;
public string SerialNumber;
public string SMCType;
class Program
{
static void Main(string[] args)
{
SerialPort _serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.ReadTimeout = 1000;
_serialPort.WriteTimeout = 1000;
_serialPort.RtsEnable = true;
_serialPort.DtrEnable = true;
_serialPort.Open();
for (int i = 0; i < 10; i++)
{
string c = Convert.ToString(i);
byte[] array_out = Encoding.ASCII.GetBytes(c); //convert i to the right variable type;
_serialPort.Write(array_out, 0, array_out.Length);
byte[] array_out2 = new byte[1];
array_out2[0] = 0xD;
_serialPort.Write(array_out2, 0, array_out2.Length);
//print what you receive
int k = 0;
int reader = 0;
string fullstring = "";
while (k < 23)
{
reader = _serialPort.ReadByte();
fullstring += Convert.ToChar(reader);
k++;
DateTime cur = DateTime.Now;
SortedList<DateTime, SMCValues> mySL1 = new SortedList<DateTime, SMCValues>();
Console.WriteLine(" (mySL1):");
while (true)
{
for (int j = 0; j < 10; j++)
{
string p = Convert.ToString(j);
cur = DateTime.Now;
mySL1.Add(cur, j); // j is throwing the errror
System.Threading.Thread.Sleep(1000);
}
foreach (KeyValuePair<DateTime, SMCValues> kvp in mySL1)
{
Console.WriteLine("my first key is = {0}, and my first value is = {1}", kvp.Key, kvp.Value);
}
Thread.Sleep(5000);
}
Console.WriteLine(fullstring);
_serialPort.DiscardInBuffer();
_serialPort.DiscardOutBuffer();
}
Console.ReadLine();
}
}
}
}
}