一个最最基础的 串口通信 程序!!!

最近正在学c#_还不是很熟悉_只是有点java的基础

SerialPort类 的介绍 

http://msdn.microsoft.com/zh-cn/library/system.io.ports.serialport(v=vs.80).aspx

 

这个例子网上有,哎....我一直以为 serailport 不是一个控件呢!

我现在疑问?_难道 所有的再c#可以引用的类,都对应一个控件吗?

 

还有c#的添加监听器的方法,该如何添加呢?

如果是控件的话,直接双击控件就可以添加上监听器,但是对于一般的对象的话就得

用+=这个方法添加....还没怎么看c#,慢慢来

 

关于这个程序是有bug的,而且我也没有修正,因为串口对象的 readline是个阻塞方法,所以当你运行到这个语句的时候,如果读不到数据的话就会导致整个程序假死,只能强制终止 这个程序了

 

 

  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.  
  11.  
  12. namespace 串口控制 
  13.     public partial class Form1 : Form 
  14.     { 
  15.         //我用了控件,所以不用初始化对象了!! 
  16.         //SerialPort sPort;//声明一个串口类对象,该对象的初始化我放到了 
  17.          
  18.  
  19.         public Form1() 
  20.         { 
  21.             InitializeComponent(); 
  22.  
  23.              
  24.         } 
  25.  
  26.         //发送按钮的响应时间 
  27.         private void button1_Click(object sender, EventArgs e) 
  28.         { 
  29.  
  30.             //对于中文的话,要先对其进行编码,将其转换成 _Base64String ,否则你得不到中文字符串的 
  31.             byte[] data = Encoding.Unicode.GetBytes(textBox1.Text); 
  32.             string str = Convert.ToBase64String(data); 
  33.             sPort.WriteLine(str); 
  34.             MessageBox.Show("数据发送成功","系统提示"); 
  35.             
  36.         } 
  37.  
  38.         private void button2_Click(object sender, EventArgs e) 
  39.         { 
  40.  
  41.             //解码然后将字符串赋值给 文本框的 文本区 
  42.             byte[] data = Convert.FromBase64String(sPort.ReadLine()); 
  43.             textBox2.Text = Encoding.Unicode.GetString(data); 
  44.              
  45.         } 
  46.  
  47.         private void Form1_Load(object sender, EventArgs e) 
  48.         { 
  49.              
  50.             sPort.PortName = "com3";//串口的portname 
  51.             sPort.BaudRate = 9600;//串口的波特率 
  52.             sPort.Open(); 
  53.         } 
  54.  
  55.         private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
  56.         { 
  57.            //关闭串口 
  58.             sPort.Close(); 
  59.         } 
  60.  
  61.  
  62.     }