@mgdj

С# работа с COM-портами, как работает принцип?

В ниже приведенном коде, осуществляется передача данных от одного COM-порта к другому, для этого нужно запустить два экземпляра программы, и выбрать в каждом разные ком-порты, например COM1 и COM2, знающие люди, прошу у вас помощи, я не могу понять как и где программа отправляет данные с одного ком-порта к другому

using System;
using System.Collections.Generic;
using System.Text;
using System.IO.Ports;
 
namespace SerialTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] names = SerialPort.GetPortNames();
            Console.WriteLine("Serial ports:");
            foreach (string name in names)
                Console.WriteLine(name);
            Console.Write("Choose one:");
            SerialPort p = new SerialPort(Console.ReadLine());
            p.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived);
            p.Open();
            string line;
            do
            {
                line = Console.ReadLine();
                p.Write(line);
            } while (line != "quit");
            p.Close();
        }
 
        static void p_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Console.WriteLine(
                (sender as SerialPort).ReadExisting());
        }
    }
}

что я здесь понимаю: то что p.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived); - добавляет обработчик события на получение данных с ком-порта, если они есть, то незамедлительно срабатывает вот это

static void p_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Console.WriteLine(
                (sender as SerialPort).ReadExisting());
        }

то есть, считываем то что есть в COM-порте, который мы ранее указали,
а здесь, открываем порт, передаем информацию в line, записываем информацию(line) в порт

p.Open();
            string line;
            do
            {
                line = Console.ReadLine();
                p.Write(line);
            } while (line != "quit");
            p.Close();


каким образом информация отправленная на один порт в одном экземпляре программы, ловится другим портом в другом экземпляре программы?
  • Вопрос задан
  • 1848 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vilgeforce
Раздолбай и программист
Информация, внезапно, передается через тот самый COM-порт. Если порты физически проводами не соединить - передачи информации между экземплярами программы не будет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы