软件平台:C# + WINCE6.0硬件平台:tiny6410界面设计:
设计思路:1.点击发送键则发送文本2.串口接收到数据包则启动一个事件,在事件中处理数据包
注意:1.接收事件中调用主线程的控件会导致不安全,所以用了托管的方式调用2.直接调用了C#中的串口控件,波特率等在属性页面中设置
源代码:[csharp] - using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- using System.IO.Ports;
- using System.Threading;
-
- namespace test_serialport
- {
- public partial class Form1 : Form
- {
- //接收数组
- Byte[] recv_bytes;
-
- public Form1()
- {
- InitializeComponent();
- //打开串口
- serialPort1.Open();
- //开启接收线程
- //Thread recv_udp = new Thread(new ThreadStart(recv_udp_func));
- //recv_udp.Start();
- //添加事件注册
- serialPort1.DataReceived += recv_udp_func;
- }
-
- //发送按键按下
- private void button1_Click(object sender, EventArgs e)
- {
- serialPort1.Write(textBox1.Text);
- }
-
- //接收事件
- void recv_udp_func(object sender, SerialDataReceivedEventArgs e)
- {
- //获取缓冲区字节数
- int n = serialPort1.BytesToRead;
- //声明一个临时数组存储当前来的串口数据
- byte[] buf = new byte[n];
- serialPort1.Read(buf, 0, n);//读取缓冲数据
- this.Invoke((EventHandler)delegate { this.textBox2.Text = Encoding.Default.GetString(buf, 0, n);});
- }
- }
- }