@andrey71
админю и учу C#, ASP.NET Core

Есть ли нюансы в работе с COM портом на c#?

Пытаюсь работать с двумя ком портами на c# WPF. Написал простенькое приложение, в котором читаю одновременно два ком порта. К одному COM3 подключено Arduino UNO, к другому COM6 - Arduino Pro Micro.
С Уно проблем нет.
С Микро - тишина. Менял местами - результат 0.
Если подключится к Микро с помощью putty, то видно что данные передаются.
Но в приложении их не видно.

Куда копать?

Мой код:
public partial class MainWindow : Window
    {
        private SerialPort serialPortCmd;
        private SerialPort serialPortData;
              
       

        public string Weigth { get; set; }

        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
            
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {             
            //ReadFromSerailPortC();
            ReadFromSerailPortD();
        }

        private void ReadFromSerailPortC()
        {            
            serialPortCmd = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
            serialPortCmd.DataReceived += new  SerialDataReceivedEventHandler(DataReceirvedCmd);
            serialPortCmd.Open();            
        }

        private void DataReceirvedCmd(object sender, SerialDataReceivedEventArgs e)
        {
            string _message = null;
            serialPortCmd = (SerialPort)sender;
            _message = serialPortCmd.ReadLine();
            System.Diagnostics.Debug.WriteLine(_message);
        }

        private void ReadFromSerailPortD()
        {
            serialPortData = new SerialPort("COM6", 9600, Parity.None, 8, StopBits.One);
            serialPortData.DataReceived += new SerialDataReceivedEventHandler(DataReceirvedDt);
            serialPortData.Open();
        }

        private void DataReceirvedDt(object sender, SerialDataReceivedEventArgs e)
        {
            string _message = null;
            serialPortData = (SerialPort)sender;
            _message = serialPortData.ReadLine();
            System.Diagnostics.Debug.WriteLine(_message);
        }
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
Зачем вы закоментили
ReadFromSerailPortC()
private void Window_Loaded(object sender, RoutedEventArgs e)
        {             
            //ReadFromSerailPortC();
            ReadFromSerailPortD();
        }
?
Также посоветую сделать так:
while(serialPortData.isOpen!=true){//открывать порт пока он не откроется
serialPortData.Open();
}

возможно, на плату не успеваит дойти сигнал с порта.
Ответ написан
Ваш ответ на вопрос

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

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