小弟刚开始学习serialport,首先看的是百度百科里的serialport介绍:http://baike.baidu.com/view/2910631.htm,按照那个写了一个完全一样的例子,但是在执行第二button的时候,就死在serialPort1.ReadLine()语句那了,也不报错,窗体就死住了,不知道什么原因,请各位牛人帮解答。实现过程
(1)新建一个项目,命名为Ex13_01,默认窗体为Form1。   
(2)在Form1窗体中,主要添加两个Button控件,分别用于执行发送数据和接受数据,添加两个TextBox控件,用于输入发送数据和显示接收数据。   
(3)主要程序代码。 
        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = "COM1";
            serialPort1.BaudRate = 9600;
            serialPort1.Open();            byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
            string str = Convert.ToBase64String(data);
            serialPort1.WriteLine(str);
                        MessageBox.Show("数据发送成功", "系统提示");
        }        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
                textBox2.Text = Encoding.Unicode.GetString(data);
                serialPort1.Close();                MessageBox.Show("数据接收成功", "系统提示");
            }
            catch (Exception err)
            {
                 MessageBox.Show(err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

解决方案 »

  1.   

    串口实际来的数据中不包含\r\n所以就会让ReadLine一直卡住等,直到收到\r\n,你检查一下你测试发送的地方,串口是不是没有发回车换行。
      

  2.   

    感谢wuyazhe,但是问题还是没有解决,serialPort1.WriteLine(str)写入的值是textBox1输入内容经过转换后的结果,我在textBox1中输入"www",然后输入回车,再点button1,或者直接输入"www\r\n",这样都不行,还是卡住了。另外ReadLine方法是不带参数的
      

  3.   

    文本框的多行模式选中了么?你可以不要用ReadLine,换用ReadExisting看是否有\r\n发过来。我可以肯定是没有\r\n,但至于如何操作导致的错误,无法推断。你自己检查测试方法中疏漏。
      

  4.   

    string s = serialPort1.ReadExisting()测试得到s值为"",真不知道serialPort1.WriteLine(str)把值写到哪去了……
      

  5.   

    6L的哥们说的很对,但是如果你用的是笔记本开发的话,你可能会看到一个串口,这个串口是可以自己发自己收的,你把你的serialPort1设为这个串口就行了。
      

  6.   

    楼主可以试试用VSPM来虚拟串口
      

  7.   

    你要是想在本机做测试,要安装虚拟串口,还要买个USB转串口的接头。
    这样在本机收发才能显示你要的。
      

  8.   

    感谢回复的各位,尤其是wuyazhe和tinghai88。主程序本身是没问题,使用VSPM新建虚拟串口后调试通过了,参考了http://blog.csdn.net/wydin/archive/2009/11/07/4782138.aspx