搜索
bottom↓
回复: 2

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

[复制链接]

出0入0汤圆

发表于 2012-5-8 14:00:23 | 显示全部楼层 |阅读模式
今天用C#写了一个单片机串口的上位机,如图,单片机用跳线使串口的第2、3针连接,在本地计算机上实现串口通信

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

菜鸟一只,忘高人相助



  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. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-5-8 14:27:24 | 显示全部楼层
线程有冲突

出0入0汤圆

发表于 2012-5-8 14:54:19 | 显示全部楼层
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("数据接收成功!", "系统提示");
        }
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 02:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表