大家好:
     我用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)
        {        }
    }
}