当前位置:首页 > C# > 正文内容

c# 串口发送接收数据

admin9年前 (2015-12-02)C#4781
/********************** 串口数据接收事件 *****************************/
        private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            UTF8Encoding uTF8Encoding = new UTF8Encoding();
            byte[] readBytes = new byte[this.SerialPort.BytesToRead];
            int num = this.SerialPort.Read(readBytes, 0, readBytes.Length);
            this.builder.Clear();//清空缓存
            this.received_count += (long)num;//加接收计数
            this.rxtextBox.Invoke((EventHandler)delegate
            {
                if (!this.rxcharSetup.Checked)//判断接收数据的格式
                {                   //获取字符长度
                    for (int i = 0; i < readBytes.Length; i++)
                    {
                        byte b = readBytes[i];//显示十六进制
                        this.builder.Append("0x" + b.ToString("X2") + " ");
                    }
                }
                else
                {   //显示字符格式
                    this.builder.Append(Encoding.GetEncoding("GB2312").GetString(readBytes));
                }
                this.rxtextBox.SelectionStart = this.rxtextBox.TextLength;
                this.rxtextBox.AppendText(this.builder.ToString());
                this.rxnumdata.Text = "Rx " + this.received_count.ToString();
                //更新发送计数
            });
        }
/********************** 发送按钮 *****************************/
        private void senddata_Click(object sender, EventArgs e)
        {
            if (!this.SerialPort.IsOpen)
            {
                MessageBox.Show("串口未打开!!!", "警告");
            }
            else
            {
                int num;
                if (this.txdataSetup.Checked)
                {
                    MatchCollection matchCollection = Regex.Matches(this.txtextBox.Text, "(?i)[\\da-f]{2}");
                    List<byte> list = new List<byte>();
                    foreach (Match match in matchCollection)
                    {
                        list.Add(byte.Parse(match.Value, NumberStyles.HexNumber));
                    }
                    this.SerialPort.Write(list.ToArray(), 0, list.Count);
                    num = list.Count;
                }
                else
                {
                    this.SerialPort.WriteLine(this.txtextBox.Text);
                    num = this.txtextBox.Text.Length + 2;
                }
                this.send_count += (long)num;
                this.txnumdata.Text = "Tx " + this.send_count.ToString();
                //更新接收计数
            }
        }


扫描二维码推送至手机访问。

版权声明:本文由视觉博客发布,如需转载请注明出处。

本文链接:https://feelsight.cn/post/9.html

标签: c#串口

“c# 串口发送接收数据” 的相关文章

UDP穿透NAT的原理与实现(UDP“打洞”原理)

NAT(The IP Network Address Translator) 的概念和意义是什么?NAT, 中文翻译为网络地址转换。具体的详细信息可以访问RFC 1631 - http://www.faqs.org/rfcs/rfc1631.html, 这是对于NAT的定义和解释的最权威的...

C#图片处理示例(裁剪,缩放,清晰度,水印)

using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Drawing; using System.Drawing.Drawing2D; usin...

C#实现邮件发送的功能

很多时候需要邮件发送功能,例如:监测应用,需要上报状态。   微软封装好的MailMessage类:主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)   微软封装好的SmtpClient类:主要处理用smt...

c# 全局鼠标事件

1.Win32Api public class Win32Api { [StructLayout(LayoutKind.Sequential)] public class POINT { publi...

C# 窗体间传值(Form与From之间互相传值)

C# 窗体间传值(Form与From之间互相传值)

1、委托   两个窗体,窗体很简单,只实现改变颜色功能,一看就会: 代码如下,只贴按钮事件代码: 打开Form2按钮事件 private void button1_Click(object s...

高恪路由器批量管理监控系统

高恪路由器批量管理监控系统

一、采用C# 编写,可以批量监控路由器是否正常 功能: 1.显示当前路由IP、名字、实时上行速度、实时下行速度、主机数量、连接数、CPU占用率、内存占用率、CPU温度、运行时间等 2.可以显示10分钟实时流量 3.可以显示历史2小时、...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。