Инкапсуляция методов и атрибутов для извлеченного измерения из омметра в c # - PullRequest
0 голосов
/ 19 сентября 2018

Прежде всего, я хотел бы извиниться за мой плохой английский.Не носитель языка.Я новичок в C # с небольшим опытом C / C ++.

Я учусь на электротехнику и прохожу стажировку в компании, производящей BMS (системы управления батареями)

Моя задача - перевестиизмеренные значения из омметра в мою программу на C #, оцените их и сохраните в csv-листе.

Мое устройство обменивается данными через SCPI и подключается через usb.

Я уже нашел пример кода на странице Micrsofot для связи через порт:

ExampleCode для программы чата сSerialPort-class

После небольшой корректировки кода я смог установить связь с моим устройством.

Вот код:

</p>

<code>using System;
using System.IO;
using System.IO.Ports;
using System.Threading;

public class PortChat
{
    static bool _continue;
    static SerialPort _serialPort;

    public static void Main()
    {
        string message;
        StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
        Thread readThread = new Thread(Read);

        // Create a new SerialPort object with default settings.
        _serialPort = new SerialPort();

        // Allow the user to set the appropriate properties.
        _serialPort.PortName = SetPortName(_serialPort.PortName); //"com9"
        _serialPort.BaudRate = 115200;
        _serialPort.Parity = Parity.None;
        _serialPort.DataBits = 8;
        _serialPort.StopBits = StopBits.One; 
        _serialPort.Handshake = Handshake.None;

        // Set the read/write timeouts
        _serialPort.ReadTimeout = 500;
        _serialPort.WriteTimeout = 500;

        _serialPort.Open();
        _continue = true;
        readThread.Start();

        Console.WriteLine("Type QUIT to exit");

        while (_continue)
        {
            message = Console.ReadLine();

            if (stringComparer.Equals("quit", message))
            {
                _continue = false;
            }
            else
            {
                _serialPort.WriteLine(message);
            }
        }
        readThread.Join();
        _serialPort.Close();
    }

    public static void Read()
    {
        while (_continue)
        {
            try
            {
                string message = _serialPort.ReadLine();
                Console.WriteLine(message);

            }
            catch (TimeoutException) { }
        }
    }

    public static string SetPortName(string defaultPortName)
    {
        string portName;

        Console.WriteLine("Available Ports:");
        foreach (string s in SerialPort.GetPortNames())
        {
            Console.WriteLine("   {0}", s);
        }

        Console.Write("Enter COM port value (Default: {0}): ", defaultPortName);
        portName = Console.ReadLine();

        if (portName == "" || !(portName.ToLower()).StartsWith("com"))
        {
            portName = defaultPortName;
        }
        return portName;
    }
}
</code>

Значения ascii, которые я получаю от устройства, сохраняются в переменную «message».

Я хотел бы создать класс SCPI для всех функций «связь с устройством».Но я запутался, потому что здесь уже есть главное.Как я могу инкапсулировать эти функции в класс?Я понимаю, что это очень тривиальный вопрос.Но мне действительно тяжело с объектно-ориентированным программированием.

Заранее спасибо, ребята.

Привет из Германии

Джо

...