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.     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.     } 
posted @ 2016-05-11 16:44  从未被超越  阅读(2539)  评论(0编辑  收藏  举报