Document

C#_串口通信_SerialPort_一个最基础的串口程序

 

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

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