我是要编一个串口的程序,实现收发和绘图的功能。我设置的是接收9位,可是为什么我收到的9位数和发送的顺序不一样呢?如我发“123456789”,我收到的可能是“456789123”。请问哪位高手知道这个问题出在哪里?
期待您的帮助。。。谢谢
具体程序如下:

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.IO;
using System.Threading;

namespace 数据流
{
    public partial class Form1 : Form
    {
        private List<double> dataList = new List<double>();
        private int pointsTotal = 0;
        Thread tt = null; //线程
        int sleepTime = 800;
        string fileAddress = null;
          
      public Form1()
        {
            InitializeComponent();
            serialPort1.Open();
            this.panel1.Enabled = false;
                   }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                
                SaveFileDialog saveFile = new SaveFileDialog();
                saveFile.Filter = "*.txt|*.txt";
                if (saveFile.ShowDialog() == DialogResult.OK)
                {
                    fileAddress= saveFile.FileName;
                }
                
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void writeToDisk(string address, string writeText)
        {
            StreamWriter wr = new StreamWriter(address, true);
            wr.Write(writeText);
            wr.Close();
        }


        private void DataEnt()
        {
            MethodInvoker mi = new MethodInvoker(this.DataInvoke);
            while (true)
            {
                this.BeginInvoke(mi);
                                Thread.Sleep(sleepTime);
            }
        }

        private void DataInvoke()
        {
                       byte[] receivedData = new byte[1024];
           
            serialPort1.Read(receivedData, 0, 9);
         
            string tempS = System.Text.Encoding.ASCII.GetString(receivedData);
                       
            writeToDisk(fileAddress, tempS);
            this.textBox1.Text += tempS;
      
           
        }

       
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                tt = new Thread(new ThreadStart(this.DataEnt));
                tt.Start();
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        private void button4_Click(object sender, EventArgs e)
        {
                        serialPort1.Write("1");
                    }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {

                tt.Abort();
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        private void button5_Click(object sender, EventArgs e)
        {
            int i = serialPort1.ReadByte();
            i -= 48;
            if (i == 0)
            {
                MessageBox.Show("水位不符合标准,不能启动", "警告");
            }

            else
            {
                MessageBox.Show("可以启动", "提示");
            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            serialPort1.Write("2");
        }

        private void button7_Click(object sender, EventArgs e)
        {
            serialPort1.Write("3");
        }

        private void button8_Click(object sender, EventArgs e)
        {
            serialPort1.Write("4");
        }

        private void button9_Click(object sender, EventArgs e)
        {
            serialPort1.Write("5");
        }

        private void button10_Click(object sender, EventArgs e)
        {
            serialPort1.Write("6");
        }



        private void HandleDataFromFile()
        {
            OpenFileDialog open = new OpenFileDialog();
            open.Filter = "*.txt|*.txt";
            if (open.ShowDialog() == DialogResult.OK)
            {
                StreamReader sr = new StreamReader(open.FileName);
                while (!sr.EndOfStream)
                {
                    string temp = sr.ReadLine();
                    double number = double.Parse(temp);
                    number = System.Math.Abs(number);
                    number = Math.Pow(number, 3);
                    dataList.Add(number);
                }
                pointsTotal = dataList.Count;
            }
        }

        private void button11_Click(object sender, EventArgs e)
        {
            this.HandleDataFromFile();
            panel1.Enabled = false;
            panel1.Enabled = true;
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics horizontal = e.Graphics;
            Pen pen1 = new Pen(Color.Blue);
            PointF[] points = new PointF[pointsTotal];
           
            for (int i = 0; i < dataList.Count; i++)
            {
                points[i].X = (float)i * 2;
                points[i].Y = (float)dataList[i];
            }
            try
            {
                horizontal.DrawLines(pen1, points);
            }
            catch (Exception ex)
            {

            }
        }
      
       
    }
}