JeezyWonder Ответов: 1

C#, получение неправильного значения через последовательный порт


То, что я пытаюсь сделать, - это получить строковые данные из моего МК, нажав на него кнопку, но то, что я получаю в своей программе c#, это некоторые случайные числа(картинка прилагается).
http://imgur.com/a/79Pbm

Что я уже пробовал:

Например, я хочу получить "5", но вместо него получаю" 650683". На стороне mk все работает, я проверил это с помощью эмулятора, так что проблема в коде c#. Спасибо и дальше.
using System;    
using System.Collections.Generic;    
using System.ComponentModel;    
using System.Data;    
using System.Drawing;    
using System.Linq;     
using System.Text;    
using System.Threading.Tasks;     
using System.Windows.Forms;    
using System.IO.Ports;    

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

         private void button1_Click(object sender, EventArgs e)   // Here i send a byte to MK
         {
             var dataByte = new byte[] { 0x00 };
             serialPort1.Write(dataByte, 0, 1);
         }

         private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)  // choosing a right com port
        {
            serialPort1.PortName = textBox1.Text;
            serialPort1.BaudRate = Convert.ToInt32(textBox2.Text);

        }
        int rs;
        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) // Data Receive Handler
        {
            try
            {
                rs = serialPort1.ReadByte();
                this.Invoke(new EventHandler(type));
            }
            catch (System.TimeoutException) { }
        }
        void type(object s,EventArgs e)              // receive data
        {
            textBox4.Text += rs.ToString(); 
        }

        private void button3_Click(object sender, EventArgs e)   // OPen port
        {
            serialPort1.Open();
        }

        private void button4_Click(object sender, EventArgs e)  // Close port
        {
            serialPort1.Close();
        }
    }
}

[no name]

Как вы подтверждаете правильность бодрейта и других настроек?
1. я бы проверил, что вы получаете данные, как вы ожидаете, на конце ПК с помощью шпатлевки http://www.chiark.greenend.org.uk/~sgtatham / шпатлевка/
2. Когда вы получите 1. working, убедитесь, что вы установили последовательный порт точно на те же настройки в своем коде c#. Отладчик поможет.

1 Ответов

Рейтинг:
2

NewPast

вы могли бы взглянуть на
Контроллер Машины[^]
Речь идет о последовательном и параллельном порте в VB, но может использоваться как DLL через C# или даже преобразован в C#