大家好: 
    我用VS2005弄的串口程序,每次发18个数,我短路串口线后,测试时发现在ARM板WINCE下程序出错,如果每次发一个发送接收正常,每次发2个数就不行,但在PC机上运行时,每次发18个数,发送接收都正常.不知是怎么回事,希望大家指点一下.我也觉得是平台不同所致,但具体情况就不知道了.以下是代码: 
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; namespace clz 

    public partial class Form1 : Form 
    { 
        public Form1() 
        { 
            InitializeComponent(); 
        } 
        int a = 0; 
        int b = 0; 
        int c = 0; 
        int d = 0; 
        int sum2 = 0; 
        int clz = 0; 
        int clz1 = 0; 
        int count_timer = 18; 
        private void button1_Click(object sender, EventArgs e) 
        { 
            //start  send             timer2.Enabled = true; 
            timer1.Enabled = true;         }         private void button2_Click(object sender, EventArgs e) 
        { 
          //stop  send 
            timer2.Enabled = false; 
            timer1.Enabled = false; 
            textBox2.Text = "共发送" + d;             textBox1.Text = "共收到" + b; 
        } 
        private void textBox1_TextChanged(object sender, EventArgs e) 
        {         }         private void textBox2_TextChanged(object sender, EventArgs e) 
        {         }         private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) 
        { 
          
            
            int data = 0; 
            int sum3 = 0; 
            for (int i = 0; i < count_timer; i++) 
            { 
                data= serialPort1.ReadByte(); 
                sum3 = sum3+data-48;                 data = serialPort1.ReadByte(); 
            } 
            sum2 = sum3; ;             b = b + 1; 
            serialPort1.Close(); 
            
          }         private void timer1_Tick(object sender, EventArgs e) 
        { 
            textBox1.Text = " 收到" + sum2; 
        }         private void timer2_Tick(object sender, EventArgs e) 
        { 
            serialPort1.Open();// serialPort2.Open(); 
            int sum1 = 0;             for (int i = 0; i < count_timer; i++) 
          { 
                a = a + 1; if (a == 10) { a = 0; } 
                
                sum1 = sum1 + a; 
                serialPort1.WriteLine(a.ToString()); 
              
          } 
            d = d + 1; 
            textBox2.Text = " 发送" + sum1;             label1.Left -= 8; 
            if (label1.Right < 0) { label1.Left = this.Width; }         }         private void Form1_Load(object sender, EventArgs e) 
        {             serialPort1.PortName = "COM1"; 
            serialPort1.BaudRate = 19200; 
            serialPort1.ReadTimeout = 5000; 
            
            serialPort1.ReceivedBytesThreshold = 18; 
            serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived); 
        }         private void label1_ParentChanged(object sender, EventArgs e) 
        {         } 
    } 
}