• 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.     } 
  • 相关阅读:
    Linux下多进程编程消息队列
    Linux下多线程编程之——线程专有数据
    Linux下多线程编程之——线程互斥
    Linux下多线程编程之——线程竞争
    Linux下多线程编程之——线程取消
    Linux下多线程编程之——线程分离
    Linux下多线程编程之——多线程委托模型
    Postman 提交测试的时候提示 Bad Request
    Confluence 6 其他页面操作和页面大小
    Confluence 6 页面的组织和移动概述
  • 原文地址:https://www.cnblogs.com/zxtceq/p/5482456.html
Copyright © 2020-2023  润新知