C# 串口接收等待的两种方式

第一种,绑定串口的接收事件

using System.IO.Ports;

//声明串口
SerialPort mySerialPort = new SerialPort("COM1");
        
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
            
//绑定串口接收事件
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceive_Method);

//打开串口
mySerialPort.Open();

//定义事件
private void DataReceive_Method(object sender, SerialDataReceivedEventArgs e)
{
    MessageBox.Show(mySerialPort.ReadExisting());
}
       

第二种,发送后循环判断接收缓存区的字节数

//获取接收缓冲区中数据的字节数
if (mySerialPort.BytesToRead > 0)
private bool SendAndReceive(byte[] send, ref byte[] response)
{
    try
    {
        MyCom.Write(send, 0, send.Length);
        byte[] buffer = new byte[1024];

        MemoryStream ms = new MemoryStream();
        DateTime start = DateTime.Now;
        //串口的接收事件:
        while (true)
        {
            if (MyCom.BytesToRead > 0)
            {
                int count = MyCom.Read(buffer, 0, buffer.Length);
                ms.Write(buffer, 0, count);
            }
            else
            {
                if ((DateTime.Now - start).TotalMilliseconds > this.RcvTimeOut)
                {
                    ms.Dispose();
                    return false;
                }
                else if (ms.Length > 0)
                {
                    break;
                }
            }
        }
        response = ms.ToArray();
        return true;
    }
    catch
    {
        return false;
    }
}




 byte[] response = null;

 int byteLength = iLength * 2;
 if (SendAndReceive(sendCommand.ToArray(), ref response))
 {
     //验证报文
     if (response.Length == 5 + byteLength)
     {
         if (response[0] == iDevAddr && response[1] == 0x04 && response[2] == byteLength && CheckCRC(response))
         {
             return GetByteArray(response, 3, response.Length - 5);
         }
     }
 }
 else
 {
     return null;
 }

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: c是英文字母表中的第三个字母,也是键盘上位于X和V之间的按键。在数学中,C代表着圆周长的常数π(pi)的两倍,即2π。π是一个无理数,大约等于3.14159,它是数学中非常重要的一个常数,与圆形和圆周相关。 在计算机科学中,C是一种程序设计语言,它由美国计算机科学家丹尼斯·里奇在20世纪70年代创建。C是一种通用的高级编程语言,可用于开发各种类型的应用程序和系统软件。许多操作系统、编译器、数据库和网络软件都是用C语言开发的。C语言被认为是一种强大而灵活的编程语言,因其性能高、易于理解和运行速度快而备受程序员的青睐。 除此之外,在音乐中,C代表着音乐的一个音符,也是音阶的第一个音符。音乐理论中,C被赋予了特殊的地位,它在调式音阶和和弦中有着重要的作用。 总而言之,C在不同领域有着不同的含义和作用。它既是字母表中的一个字母,也是数学、计算机科学和音乐领域的重要符号。无论在哪个领域,C都扮演着独特和重要的角色,并为我们带来了无尽的想象和创造力的空间。 ### 回答2: c 是英语字母表中的第三个字母。它的发音是 /siː/,类似于汉语拼音中的“西”。c 在字母表中的位置相对较靠前,代表了一种重要的意义。 在数学中,c 通常代表着常数。常数是一个固定的数值,与变量相对应。常数在数学运算和方程中起到重要的作用,它们可以用来描述某个固定的数量。 在计算机科学中,c 是一种编程语言的名称。C 是一种通用的高级编程语言,由贝尔实验室的丹尼斯·里奇于1972年创造。C 语言非常流行,被广泛用于系统编程、嵌入式系统以及应用程序的开发。众多的操作系统,包括类Unix系统和微软的Windows操作系统,都是使用 C 语言编写的。 此外,c 还有其他多种意义。在化学中,c 是碳的符号,碳是一种常见的化学元素,存在于地球上的大多数有机化合物中。在音乐领域,c 代表着中央C音,是一个特定的音高。在体育中,c 通常表示着冠军(champion),代表着最高荣誉和胜利。 总之,c 是一个多义性的字母,有很多不同的含义和用法。无论是在数字、计算机、科学还是艺术方面,c 都扮演着重要的角色,帮助我们更好地理解和描述世界的不同方面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值