使用SerialPort传输图片文件的实验

来源:互联网 发布:腾讯云ubuntu图形界面 编辑:程序博客网 时间:2024/06/03 21:00

    

         学习C Sharp主要的目的就是为了给项目做一个PC端的界面,并且通过串口和所用的CC2430之间通信。

C#里面的串口类非常好用,这里就不详细说了。。

         下面是接收端的事件

           private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
                {
            FileStream Save = new FileStream(@"E:/received.dat", FileMode.Append, FileAccess.Write);
            Byte[] array = new byte[1024];
            int count = serialPort1.BytesToRead;
            serialPort1.Read(array, 0, count);
            Save.Write(array, 0, count);
            Save.Close();
            }

             这里所有的操作都是同步的,异步的我还没研究过。。

        下面是发送端的代码:

 

private void button1_Click(object sender, EventArgs e)
        {
            Byte[] arry = new Byte[100];

            try
            {
                serialPort1.Open();
             //   serialPort2.Open();
                //  if (serialPort1.IsOpen) MessageBox.Show("Serial 1 opened");
            }
            catch
            {
                MessageBox.Show("Port one open Failed");

            }

            FileInfo file = new FileInfo(@"E:/test.BMP");
            FileStream Send = new FileStream(@"E:/test.BMP", FileMode.Open, FileAccess.ReadWrite);

            for (int i = 0; i < Send.Length/100; i++)
            {
                Send.Read(arry, 0, 100);
                //线程挂起250mS
              //  System.Threading.Thread.SpinWait(250);

                //Thread.sleep(int)也能使程序挂起。。不过容易让人感觉程序失去响应


                serialPort1.Write(arry, 0, 100);
            } //每次向串口发送100个字节,最后再把不足100字节的结尾给发送过去
            Send.Read(arry, 0,(int) (Send.Length%100));
            serialPort1.Write(arry, 0, (int)(Send.Length % 100));
           
            serialPort1.Close();
            Send.Close();

        }