用C#写的一个串口通信的问题

2020-02-05 09:27发布

今天用C#写了一个单片机串口的上位机,如图,单片机用跳线使串口的第2、3针连接,在本地计算机上实现串口通信

电脑发送数据很正常(提示发送成功),但是一点接收缓冲区的数据的时候电脑就没反应的,好像瘫痪了,不知道哪里出错了~~

菜鸟一只,忘高人相助

NSWEC[GT}K$J3_HM9GV@F.jpg (58.7 KB, 下载次数: 1) 下载附件 2012-5-8 13:54 上传
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO.Ports;

  10. namespace WindowsFormsApplication1
  11. {
  12.     public partial class t : Form
  13.     {
  14.         public t()
  15.         {
  16.             InitializeComponent();
  17.         }

  18.         private void t_Load(object sender, EventArgs e)
  19.         {
  20.             label1.Text = "端口";
  21.             button4.Enabled = false;
  22.             //get port names
  23.             comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
  24.         }

  25.         private void button1_Click(object sender, EventArgs e)
  26.         {
  27.             byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
  28.             string str = Convert.ToBase64String(data);
  29.             serialPort1.WriteLine(str);
  30.             MessageBox.Show("数据发送成功!", "系统提示");
  31.         }

  32.         private void button2_Click(object sender, EventArgs e)
  33.         {
  34.             byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
  35.             textBox2.Text = Encoding.Unicode.GetString(data);
  36.             //serialPort1.Close();
  37.             MessageBox.Show("数据接收成功!", "系统提示");
  38.         }

  39.         private void button3_Click(object sender, EventArgs e)
  40.         {
  41.             serialPort1.PortName = "COM4";
  42.             serialPort1.BaudRate = 9600;
  43.             serialPort1.Open();
  44.             button3.Enabled = false;
  45.             button4.Enabled = true;
  46.         }

  47.         private void button4_Click(object sender, EventArgs e)
  48.         {
  49.             serialPort1.Close();
  50.             button4.Enabled = false;
  51.             button3.Enabled = true;
  52.         }

  53.         private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
  54.         {
  55.             
  56.         }

  57.         private void label1_Click(object sender, EventArgs e)
  58.         {
  59.             
  60.         }
  61.     }
  62. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
hqwei_sz
1楼-- · 2020-02-05 11:42
线程有冲突
ijlc1314
2楼-- · 2020-02-05 16:52
private void button2_Click(object sender, EventArgs e)
        {
            byte[] data = new byte[serialPort1.BytesToRead];
            serialPort1.Read( data, 0, data.Lenght );
            textBox2.Text = Encoding.Unicode.GetString(data);
            //serialPort1.Close();
            MessageBox.Show("数据接收成功!", "系统提示");
        }

一周热门 更多>