COM-port(SerialPort) связь с прибором - C#

Узнай цену своей работы

Формулировка задачи:

Что мы имеем? а имеем следующее
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
using System.Threading;

namespace PMT_69L
{
    public partial class Form1 : Form
    {
       public static string KSUM(string S)   // подсчет контрольной суммы
        {
            int KS = 65535;
            for (int i = 1; i < S.Length; i++)
            {
                KS ^= S[i];
                for (int l = 1; l < 8; l++)
                    if ((KS % 2) * 2 != KS)
                        KS = (KS % 2) ^ 40961;
                    else
                        KS = (KS % 2);
            }
            return KS.ToString();
        }

        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            System.IO.Ports.SerialPort serialPort1 = new System.IO.Ports.SerialPort();
            serialPort1.PortName = "COM4"; //Настройки порта
            serialPort1.BaudRate = 9600; 
            serialPort1.DataBits = 8; 
            serialPort1.Parity = System.IO.Ports.Parity.None; 
            serialPort1.StopBits = System.IO.Ports.StopBits.One; 
            serialPort1.DtrEnable = true;
            serialPort1.RtsEnable = false;
            serialPort1.ReadTimeout = (1000);
            serialPort1.WriteTimeout = (1000);
            serialPort1.Open();   // открываем порт          
            string st = (":1;1;1;"); // формируем формат сообщения где :1;1;1; - адресс прибора ; комманда(считывание данных); канал прибора;
            string St= ("!1;Data;");// такой формат данных ожидаем в буффере чтоб с него считать

            label1.Text = st.ToString();  // отображаем данные
            label2.Text = St.ToString(); //отображаем данные

        }

        private void button2_Click(object sender, EventArgs e) // закрываем порт
        {
            serialPort1.Close();
            label1.Text = "";
            label2.Text = "";
            
        }
    }
}
А вот дальше возникает вопрос : как получить данные с прибора и как их отобразить типом string в 1-м из лейблов??? Буду раб любому ответу (даже критике), т.к. написание тких программ для меня ново. Зарание всем благодарен!!!!!
string st = (":1;1;1;");
к сообщинию также прибовляеться контрольная сумма и конечный формат такой:
st = st + KSUM(st) +(char)13;

Решение задачи: «COM-port(SerialPort) связь с прибором»

textual
Листинг программы
string s=BitConverter.ToString(messByte)

ИИ поможет Вам:


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

Оцени полезность:

14   голосов , оценка 4 из 5