我开发的程序是windows CE平台上面的。需要一个C#  串口发送接收的程序。我在网上看了很久,写了一些代码,但是还是不行。using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;namespace WindowsFormsApplication21
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
            //更改参数
            serialPort1.PortName = "COM17";
            serialPort1.BaudRate = 9600;
            serialPort1.StopBits = System.IO.Ports.StopBits.One;//停止位
            serialPort1.Parity = System.IO.Ports.Parity.None;///校验位            serialPort1.Open();            SendStringData(serialPort1);
            //也可用字节的形式发送数据            //开启接收数据线程
            ReceiveData(serialPort1);   
        }        private void SendStringData(SerialPort serialPort)
        {
            serialPort.Write(txtSend.Text );
     
        }        /// <summary>
        /// 开启接受数据线程
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// 
        private void ReceiveData(SerialPort serialPort)
        { 
            //同步阻塞接受数据线程
            Thread threadReceive = new Thread(new ParameterizedThreadStart(SynReceiveData));
            threadReceive.Start(serialPort );
        }        private void SendBytesData(SerialPort serialPort)
        {
            byte[] bytesSend = System.Text.Encoding.Default.GetBytes(txtSend.Text );
            serialPort.Write(bytesSend,0,bytesSend .Length );
        }
       
        // 同步阻塞读取
        private void SynReceiveData(object serialPortobj)
        {
            //SerialPort serialPort = (SerialPort)serialPortobj;
            
            serialPort1.ReadTimeout = 1200;
            System.Threading.Thread.Sleep(1000);            
            try
            {
                byte firstByte = Convert.ToByte(serialPort1.ReadByte());
                 
                int bytesRead = serialPort1.BytesToRead; 
                byte[] bytesData = new byte[bytesRead + 1];
                bytesData[0] = firstByte;
                for (int i = 1; i <= bytesRead; i++)
                    bytesData[i] = Convert.ToByte(serialPort1.ReadByte());
                MessageBox.Show("for循环执行!");
                txtReceive.Text = System.Text.Encoding.Default.GetString(bytesData);            }
            
           
            catch (Exception ex)
            {
                MessageBox.Show("catch SynReceiveData:"+ex.Message );
                //处理错误
            }
            serialPort1.Close();
        }
       
        //异步读取
        private void AsyReceiveData(object serialPortobj)
        {            SerialPort serialPort = (SerialPort)serialPortobj;
            System.Threading.Thread.Sleep(500);
            try
            {
                txtReceive.Text = serialPort.ReadExisting();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                //处理错误
            }
            serialPort.Close();
        }        private void Form1_Load(object sender, EventArgs e)
        {        }
    }
}上面这个程序是用来连接两台电脑进行测试的。下面这个是在本机上面进行测试的。把串口的第二第三两针短路就可以了。 private void btnSend_Click(object sender, EventArgs e)
        {
            SerialPort serialport1 = new SerialPort();
            serialPort1.PortName = "COM17";
            serialPort1.BaudRate = 9600;
            serialPort1.StopBits = System.IO.Ports.StopBits.One;//停止位
            serialPort1.Parity = System.IO.Ports.Parity.None;///校验位            serialPort1.Open();
            byte[] data = Encoding.Unicode.GetBytes(txtSend.Text);
            string str = Convert.ToBase64String(data );
            serialPort1.Write(str );
            MessageBox.Show("发送成功","系统提示");
            byte[] data1 = Convert.FromBase64String(serialPort1.ReadLine()); 程序不能执行这一步
            textBox2.Text = Encoding.Unicode.GetString(data1);
            serialPort1.Close();
            MessageBox.Show("数据发送成功", "系统提示");            
        }不知道错在哪里,另外,如果可能的话,请写一个串口测试程序看看,本人QQ191970570