亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C#串口通信—傳輸文件測試

2019-11-17 02:43:33
字體:
來源:轉載
供稿:網友

C#串口通信—傳輸文件測試

說明:該程序可能不具備實用性,僅測試用。

一、使用虛擬串口工具VSPD虛擬兩個串口COM1和COM2

二、約定

占一個字節,代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace COMClient{    /// <summary>    /// 約定    /// </summary>    public enum PRotocol    {        Client端發送文件名 = 0,        Client端發送數據塊 = 1,        Client端發送最后一個數據塊 = 2,        Server端本次接收完畢 = 3,        Server端結束 = 4    }}
View Code

三、功能說明:

COMClient程序監聽COM1串口,COMServer程序監聽COM2串口。COMClient先擇文件,發送,COMServer接收文件。數據分多次發送,每次發送的數據,通過第一個字節判斷發送的這段數據是干啥的,后面的字節是數據本身。

四、COMClient端發送文件

代碼:

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.IO;using System.Threading;namespace COMClient{    public partial class Form1 : Form    {        #region 變量        /// <summary>        /// 串口資源        /// </summary>        private static SerialPort serialPort = null;        /// <summary>        /// 文件        /// </summary>        private static FileStream fs = null;        private static long index = 0;        private static long blockCount;        private static int size = 4095;        private static DateTime dt;        #endregion        #region Form1        public Form1()        {            InitializeComponent();        }        #endregion        #region Form1_Load        private void Form1_Load(object sender, EventArgs e)        {            serialPort = new SerialPort("COM1");            serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);            serialPort.Open();        }        #endregion        #region btnConn_Click        private void btnConn_Click(object sender, EventArgs e)        {            if (openFileDialog1.ShowDialog() == DialogResult.OK)            {                dt = DateTime.Now;                fs = new FileStream(openFileDialog1.FileName, FileMode.Open, Fileaccess.Read);                blockCount = (fs.Length - 1) / size + 1;                List<byte> bList = new List<byte>();                bList.Add((int)Protocol.Client端發送文件名);                bList.AddRange(ASCIIEncoding.UTF8.GetBytes(openFileDialog1.FileName));                byte[] bArr = bList.ToArray();                serialPort.Write(bArr, 0, bArr.Length);            }        }        #endregion        /// <summary>        /// 接收串口數據事件        /// </summary>        public void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)        {            if (serialPort.BytesToRead == 0) return;            int bt = serialPort.ReadByte();            switch (bt)            {                case (int)Protocol.Server端本次接收完畢:                    if (index != blockCount - 1)                    {                        byte[] bArr = new byte[size + 1];                        bArr[0] = (int)Protocol.Client端發送數據塊;                        fs.Read(bArr, 1, size);                        index++;                        Thread.Sleep(1);                        serialPort.Write(bArr, 0, bArr.Length);                    }                    else                    {                        byte[] bArr = new byte[fs.Length - (size * index) + 1];                        bArr[0] = (int)Protocol.Client端發送最后一個數據塊;                        fs.Read(bArr, 1, bArr.Length - 1);                        index++;                        serialPort.Write(bArr, 0, bArr.Length);                    }                    break;                case (int)Protocol.Server端結束:                    index = 0;                    double totalSeconds = DateTime.Now.Subtract(dt).TotalSeconds;                    MessageBox.Show("完成,耗時" + totalSeconds + "秒,速度" + (fs.Length / 1024.0 / totalSeconds).ToString("#.0") + "KB/S");                    fs.Close();                    fs.Dispose();                    break;            }        }    }}
View Code

五、COMServer端接收文件

代碼:

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.IO;namespace COMServer{    public partial class Form1 : Form    {        #region 變量        /// <summary>        /// 串口資源        /// </summary>        private static SerialPort serialPort = null;        /// <summary>        /// 文件        /// </summary>        private static FileStream fs = null;        #endregion        #region Form1        public Form1()        {            InitializeComponent();        }        #endregion        #region Form1_Load        private void Form1_Load(object sender, EventArgs e)        {            serialPort = new SerialPort("COM2");            serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);            serialPort.Open();        }        #endregion        /// <summary>        /// 接收串口數據事件        /// </summary>        public void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)        {            if (serialPort.BytesToRead == 0) return;            #region 接收數據            int bt = serialPort.ReadByte();            List<byte> bList = new List<byte>();            while (serialPort.BytesToRead > 0)            {                byte[] bArr = new byte[serialPort.BytesToRead];                serialPort.Read(bArr, 0, bArr.Length);                bList.AddRange(bArr);            }            byte[] receiveData = bList.ToArray();            #endregion            switch (bt)            {                case (int)Protocol.Client端發送文件名:                    string path = ASCIIEncoding.UTF8.GetString(receiveData);                    string fileName = Path.GetFileName(path);                    fs = new FileStream(@"d:/_臨時文件/COM測試" + fileName, FileMode.Create, FileAccess.Write);                    byte[] bArr = new byte[1];                    bArr[0] = (int)Protocol.Server端本次接收完畢;                    serialPort.Write(bArr, 0, bArr.Length);                    break;                case (int)Protocol.Client端發送數據塊:                    fs.Write(receiveData, 0, receiveData.Length);                    fs.Flush();                    bArr = new byte[1];                    bArr[0] = (int)Protocol.Server端本次接收完畢;                    serialPort.Write(bArr, 0, bArr.Length);                    break;                case (int)Protocol.Client端發送最后一個數據塊:                    fs.Write(receiveData, 0, receiveData.Length);                    fs.Flush();                    bArr = new byte[1];                    bArr[0] = (int)Protocol.Server端結束;                    serialPort.Write(bArr, 0, bArr.Length);                    fs.Close();
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
红桃av永久久久| 色噜噜狠狠色综合网图区| 国产成人免费91av在线| 国产精品毛片a∨一区二区三区|国| 欧美在线视频网站| 国内精品久久久久久久| 欧美日韩在线一区| 亚洲国产欧美日韩精品| 亚洲va欧美va国产综合剧情| 久久精品视频中文字幕| 黑人极品videos精品欧美裸| 成人激情av在线| 国产91精品久久久久久| 亚洲视频777| 欧美日韩国产二区| 精品亚洲一区二区三区在线观看| 久久伊人精品一区二区三区| 亚洲第一福利在线观看| 成人自拍性视频| 国产精品狠色婷| 欧美亚洲国产日本| 九九热在线精品视频| 国产精品一区av| 久久夜色精品国产欧美乱| 欧美午夜激情小视频| 欧美日韩福利电影| 欧美日韩国产精品一区二区三区四区| 日韩经典中文字幕| 亚洲精品一区二三区不卡| 久久天天躁狠狠躁夜夜躁2014| 懂色av影视一区二区三区| zzjj国产精品一区二区| 国产日韩欧美中文在线播放| 亚洲精品小视频在线观看| 欧美成人精品激情在线观看| 裸体女人亚洲精品一区| 久久久久久久亚洲精品| 亚洲国产高清高潮精品美女| 91国产高清在线| 亚洲性av网站| 久久久国产精彩视频美女艺术照福利| 日韩网站免费观看高清| 国产成人精彩在线视频九色| 午夜精品一区二区三区在线视频| 日韩在线资源网| 红桃视频成人在线观看| 久久精品国产精品亚洲| 国产精品久久99久久| 欧美人与性动交| 午夜美女久久久久爽久久| 日韩国产精品亚洲а∨天堂免| 成人情趣片在线观看免费| yw.139尤物在线精品视频| 国产午夜精品美女视频明星a级| 国产视频久久网| 欧美一级免费视频| 亚洲成人性视频| 亚洲自拍小视频| 亚洲国产精品va在线观看黑人| 亚洲图片制服诱惑| 国内精品久久久久影院优| 亚洲新声在线观看| 亚洲国产又黄又爽女人高潮的| 欧美与黑人午夜性猛交久久久| 亚洲成色777777在线观看影院| 欧美在线视频观看免费网站| 亚洲精品久久视频| 欧美在线亚洲一区| 久久久精品免费| 欧美专区在线观看| 91po在线观看91精品国产性色| 欧美久久精品一级黑人c片| 亚洲日韩中文字幕| 精品偷拍一区二区三区在线看| 亚洲黄色在线观看| 日韩暖暖在线视频| 国产精品高清在线观看| 亚洲小视频在线观看| 亚洲www视频| 色综合伊人色综合网| 欧美成人合集magnet| 亚洲自拍小视频| 国产精品久久激情| 精品av在线播放| 欧美一级电影免费在线观看| 久久99热这里只有精品国产| 国产999精品久久久影片官网| 精品人伦一区二区三区蜜桃免费| 国产在线a不卡| 国产成人久久久精品一区| 日韩av电影中文字幕| 成人黄色免费看| **欧美日韩vr在线| 清纯唯美亚洲激情| 亚洲午夜av电影| 欧美日韩国产在线看| 日韩成人免费视频| 欧美夜福利tv在线| 色先锋资源久久综合5566| 91av网站在线播放| 麻豆国产精品va在线观看不卡| 中文字幕精品av| 91wwwcom在线观看| www.亚洲男人天堂| 亚洲欧美日韩久久久久久| 国产精品视频精品| 欧美成人手机在线| 亚洲影院在线看| 亚洲电影天堂av| 欧美性videos高清精品| 国产精品激情av在线播放| 欧美成人一区二区三区电影| 亚洲国产精品系列| 热久久视久久精品18亚洲精品| 成人久久18免费网站图片| 中文字幕亚洲欧美| 国模精品一区二区三区色天香| 国产精品国模在线| 欧美日韩高清在线观看| 亚洲精品在线视频| 欧美大人香蕉在线| 国产精品亚洲美女av网站| 国产美女扒开尿口久久久| 91九色综合久久| 国产精品日本精品| 91九色视频在线| 欧美韩国理论所午夜片917电影| 欧美日韩亚洲一区二区三区| 国产成一区二区| 欧美网站在线观看| 狠狠躁夜夜躁人人爽超碰91| 欧美日产国产成人免费图片| 黑人狂躁日本妞一区二区三区| 亚洲精品按摩视频| www亚洲欧美| 78m国产成人精品视频| 欧美黑人狂野猛交老妇| 91久久夜色精品国产网站| 欧美极品欧美精品欧美视频| 午夜精品久久久久久久久久久久久| 岛国av一区二区在线在线观看| 成人信息集中地欧美| 国产欧美一区二区白浆黑人| 亚洲综合社区网| 亚洲天堂第二页| 精品视频在线播放色网色视频| 国产精品久久久久国产a级| 亚洲va欧美va国产综合剧情| 亚洲国产日韩欧美在线动漫| 国产精品自产拍在线观看| 亚洲成人三级在线| 欧美激情喷水视频| 亚洲无线码在线一区观看| 成人做爰www免费看视频网站| 亚洲成人黄色网址| 一级做a爰片久久毛片美女图片| 日韩免费在线电影| 91亚洲精品一区| 久久综合伊人77777尤物| 久久久精品国产一区二区| 久久久久久久久亚洲| 亚洲视频免费一区| 一本色道久久88精品综合| 中文字幕亚洲一区二区三区五十路|