老土农民 2021-02-08 14:38 采纳率: 0%
浏览 118

c#串口发送一个长度的字符,为啥接收到的字符为空?发送多个字符的时候,接收时第一个字符丢失了?

我将串口2脚和3脚短接,发送一个字符信息时,用事件接收数据时为空。望各位帮忙解决下

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;

namespace SeriPort
{
    public partial class Form1 : Form
    {
        private delegate void DispStrMSGDelegate(string MSG);
        string SendString = "1";
        List<string> reStringList = new List<string>();
        byte[] ReByteArray;
        StringBuilder stringBuilder = new StringBuilder();
        public Form1()
        {
            InitializeComponent();
            PortInit();
        }
        void PortInit()
        {
            sp.PortName = "COM3";
            sp.BaudRate = 9600;
            sp.DataBits = 8;
            sp.StopBits = System.IO.Ports.StopBits.One;
            sp.Parity = System.IO.Ports.Parity.None;
            sp.ReceivedBytesThreshold = 1;
            sp.ReadTimeout = 1;
            
            //sp.DiscardNull = true;
            sp.DataReceived += Sp_DataReceived;
            sp.Open();


        }

        private void Sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            string a;
            int ByteLenth = 0;
            byte[] readData;

                ByteLenth = sp.ReadByte();
                readData = new byte[ByteLenth];
            a= sp.ReadExisting();
            DispStrMSGDelegate ShowTextDe = new DispStrMSGDelegate(ShowString);
            this.BeginInvoke(ShowTextDe, new object[] { a });
        }
        private void SendData()
        {


            sp.Write(SendString);
            
        }
        private void SendComd_Click(object sender, EventArgs e)
        {
            SendData();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            sp.Close();
        }
        private void ShowString(string str)
        {


                stringBuilder.Append(str.ToString());



            RText.Text = stringBuilder.ToString();
        }


    }
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-07 15:51
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画