博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 串口发送接收数据
阅读量:6864 次
发布时间:2019-06-26

本文共 2555 字,大约阅读时间需要 8 分钟。

/********************** 串口数据接收事件 *****************************/        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
list = new List
(); 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://www.cnblogs.com/mrqiang/p/4348721.html

你可能感兴趣的文章