VSport.dll虚拟串口,创建太慢

.Net技术 码拜 9年前 (2016-05-09) 2268次浏览
使用Eltima公司的VSort.dll COM控件创建虚拟串口速度太慢了。平均创建一个串口需要2s。由于客户需要多个虚拟串口(10个以上)。那需要的时间也太长了吧。哪位用过VSPOT,帮忙指导下。下面是代码:

  public partial class Form1 : Form
    {
        private Stopwatch stopwatch = new Stopwatch();
        private VSPortAxClass[] vports = new VSPortAxClass[10];   //10个虚拟串口
        IntPtr handle = IntPtr.Zero;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //添加全部串口
            ComListcomboBox.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
            //新建
            for (int i = 0; i < 10; i++)
            {
                vports[i] = new VSPortAxClass();
                vports[i].DeleteOnExit = false; 
            }
        }
        //创建虚拟虚拟串口
        private void button1_Click(object sender, EventArgs e)
        {
            int i=50;
            stopwatch.Restart();
            foreach (var vp in vports)
            {
                if (!ComListcomboBox.Items.Contains(string.Format("COM{0}", i)))
                {
                    if (!vp.CreatePort(string.Format("COM{0}", i++)))
                    {
                        MessageBox.Show(string.Format("COM{0}创建不成功", i - 1));
                        break;
                    }
                }
                else
                {
                    if ( !vp.Attach(string.Format("COM{0}", i++)))
                    {
                        MessageBox.Show(string.Format("COM{0}适配不成功", i - 1));
                        break;
                    }
                }
            }
            stopwatch.Stop();
            MessageBox.Show(string.Format("共消耗时间:{0}MS", stopwatch.ElapsedMilliseconds));        
            ComListcomboBox.Items.Clear();
            ComListcomboBox.Items.AddRange(SerialPort.GetPortNames());
        }
       //删除串口
        private void button2_Click(object sender, EventArgs e)
        {
            int i = 50;
            stopwatch.Restart();
            foreach (var vp in vports)
            {
                if (!vp.Delete())
                {
                    MessageBox.Show(string.Format("COM{0}删除不成功", i++));
                    break;
                }
            }
            stopwatch.Stop();
            MessageBox.Show(string.Format("共消耗时间:{0}MS", stopwatch.ElapsedMilliseconds));
            ComListcomboBox.Items.Clear();
            ComListcomboBox.Items.AddRange(SerialPort.GetPortNames());
        }
}
解决方案

20

不知道  用的  vc2012

20

虚拟串口的创建速度不管你怎么优化.都不会有太大提升,假如不信你可以多实验比较成熟的几家软件.
当然也不是没有解决办法,虚拟串口的功能本质是将tcp/ip协议透明传输com.你直接用socket直连串口服务器等等硬件.假如是tcp client 单台服务器带几千台,作为server端时,带个2,3k设备问题也大.

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明VSport.dll虚拟串口,创建太慢
喜欢 (0)
[1034331897@qq.com]
分享 (0)