Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#,通过串行端口获取一些随机数(错误值)_C#_.net_Linq_Event Handling_Serial Port - Fatal编程技术网

C#,通过串行端口获取一些随机数(错误值)

C#,通过串行端口获取一些随机数(错误值),c#,.net,linq,event-handling,serial-port,C#,.net,Linq,Event Handling,Serial Port,我想做的是,通过按下微控制器上的一个按钮,从微控制器上获取字符串数据,但我在c#程序上得到的是一些随机数(附图)。例如,我希望收到“5”,但收到的却是“650683”。 在mk端,一切正常,我用Emulator进行了检查。 谢谢你。 我看到两个明显的问题 串行端口需要很多设置 我使用串行端口已经有很长时间了,但我记得有很多设置无法自动协商,例如,是否使用奇偶校验位、是否使用停止位、是否等待CTS信号等。请检查手册并确保所有设置都正确 消息格式并不总是显而易见的 仅仅因为你写的代码上写着打印5,

我想做的是,通过按下微控制器上的一个按钮,从微控制器上获取字符串数据,但我在c#程序上得到的是一些随机数(附图)。例如,我希望收到“5”,但收到的却是“650683”。 在mk端,一切正常,我用Emulator进行了检查。 谢谢你。


我看到两个明显的问题

串行端口需要很多设置 我使用串行端口已经有很长时间了,但我记得有很多设置无法自动协商,例如,是否使用奇偶校验位、是否使用停止位、是否等待CTS信号等。请检查手册并确保所有设置都正确

消息格式并不总是显而易见的
仅仅因为你写的代码上写着打印5,并不意味着5通过电缆传输。您需要知道5是如何编码的,是否包含在任何元数据中,是否发送换行符或回车符,是否为ASCII或UTF8,等等。同样,请参阅文档。

数字不是随机的,而是周期性的。所以这是一件事。至于与微控制器的集成(不管是什么,有数千种不同的类型),如果没有更多的信息,我怀疑任何人都能帮助你。问题是我需要发送不同类型的数据,十六进制、十进制、字节和字符串。结果相同,我得到了这些数字,是的,它们是不同的,尽管问题在c代码中,期望我的EventHandler工作不正常,“ToString”操作呢?我将“5”作为字符串发送,但我没有得到该数字{textBox4.Text+=rs.ToString();}您是否应该将字节值5或Ascii字符5发送到设备?您是否有正在使用的接口规范?“我想收到5”是什么意思?谢谢你的耐心。现在,我正在尝试发送二进制文件“&B1010\U 0111”。当我发送时,我收到123。我想我需要让我的WFA程序接受字节。我这样做了,“byte A=255;textBox4.Text+=System.Text.Encoding.ASCII.GetString(new[]{A}”);”但是现在我没有收到任何东西,很确定它是错的,我不知道如何写它
  If Button_1 = 0 Then 
     Led_sent = Led_on 
     Print "5" ; 
     Bitwait Button_1 , Set 
     Led_sent = Led_off    





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();
        }
    }
}