C#下串口编程测试


软件平台:C# + WINCE6.0

硬件平台:tiny6410

界面设计:


设计思路:

1.点击发送键则发送文本

2.串口接收到数据包则启动一个事件,在事件中处理数据包

注意:

1.接收事件中调用主线程的控件会导致不安全,所以用了托管的方式调用

2.直接调用了C#中的串口控件,波特率等在属性页面中设置

源代码:

[csharp]
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8. using System.IO.Ports;  
  9. using System.Threading;  
  10.   
  11. namespace test_serialport  
  12. {  
  13.     public partial class Form1 : Form  
  14.     {  
  15.         //接收数组   
  16.         Byte[] recv_bytes;  
  17.   
  18.         public Form1()  
  19.         {  
  20.             InitializeComponent();  
  21.             //打开串口   
  22.             serialPort1.Open();  
  23.             //开启接收线程   
  24.             //Thread recv_udp = new Thread(new ThreadStart(recv_udp_func));   
  25.             //recv_udp.Start();   
  26.             //添加事件注册     
  27.             serialPort1.DataReceived += recv_udp_func;  
  28.         }  
  29.   
  30.         //发送按键按下   
  31.         private void button1_Click(object sender, EventArgs e)  
  32.         {  
  33.             serialPort1.Write(textBox1.Text);  
  34.         }  
  35.   
  36.         //接收事件   
  37.         void recv_udp_func(object sender, SerialDataReceivedEventArgs e)  
  38.         {  
  39.             //获取缓冲区字节数   
  40.             int n = serialPort1.BytesToRead;  
  41.             //声明一个临时数组存储当前来的串口数据   
  42.             byte[] buf = new byte[n];  
  43.             serialPort1.Read(buf, 0, n);//读取缓冲数据   
  44.             this.Invoke((EventHandler)delegate { this.textBox2.Text = Encoding.Default.GetString(buf, 0, n);});  
  45.         }  
  46.     }  
  47. }  

相关内容