C# Serial Communication не может получить текст

Я знаю, что есть другие темы о последовательной связи C#, но я действительно не могу найти ответ на свой вопрос. Так что мой Arduino печатает просто 1

Код Arduino:

void setup() {
    Serial.begin(9600);
}

void loop() {
    Serial.print('1');
    delay(200);
}

И я не могу получить сообщение правильно (я получил правильную ширину в бодах и все остальное), но я даже не получаю текст, который печатает Arduino, а также светодиод даже не мигает при отправке текста. Но это происходит, если я подключаюсь к COM-порту.

Код 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.Ports;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            getPorts();
        }

        void getPorts()
        {
            String[] ports = SerialPort.GetPortNames();
            cBPort.Items.AddRange(ports);
        }

        private void btnOpen_Click(object sender, EventArgs e)
        {
            try
            {
                if (cBPort.Text == "" || cBPort.Text == "")
                {
                    MessageBox.Show("pls select stuff", "");
                }
                else
                {
                    SerialPort1.PortName = cBPort.Text;
                    SerialPort1.BaudRate = Convert.ToInt32(cbRate.Text);
                    SerialPort1.Open();
                    btnRead.Enabled = true;
                    btnSend.Enabled = true;
                    btnOpen.Enabled = false;
                    btnClose.Enabled = true;
                    txtBSend.Enabled = true;
                }
            }
            catch(UnauthorizedAccessException)
            {
                MessageBox.Show("UnauthorizedAccessException", "idk");
            }
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            SerialPort1.Close();
            btnRead.Enabled = false;
            btnSend.Enabled = false;
            btnOpen.Enabled = true;
            btnClose.Enabled = false;
            txtBSend.Enabled = false;

            timer1.Stop();
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            SerialPort1.WriteLine(txtBSend.Text);
            txtBSend.Text = "";
        }

        private void btnRead_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (SerialPort1.IsOpen)
            {
                string R = SerialPort1.ReadExisting();
                txtBRead.Text = R;
            }
        }
    }
}

0 ответов

Другие вопросы по тегам