精华内容
下载资源
问答
  • 串口控件串口控件串口串口控串口控件串口控件
  • VC串口控件编程 VC串口控件编程 VC串口控件编程 VC串口控件编程 VC串口控件编程 VC串口控件编程 VC串口控件编程 VC串口控件编程
  • VS2010/2008/2005 MSCOMM串口控件

    千次下载 热门讨论 2011-04-29 19:00:11
    VS2010MFC没有串口控件,此压缩包里包含了串口控件相关的3个文件。mscomm32.ocx MSCOMM32.oca MSCOMM32.DEP MSCOMM.SRG 将这几个文件拷贝到一个固定的目录下然后注册就可以在MFC里正常使用串口控件了。 注册:开始->...
  • 串口控件注册

    2018-05-16 16:44:02
    串口控件注册,用于解决MFC程序在由于使用了串口控件在电脑上无法运行以及缺少MSCOMM32.OCX文件的问题
  • 串口控件代码.rar

    2019-09-09 11:21:28
    串口控件代码 串口控件代码.rar 串口控件代码
  • MSCOMM串口控件

    2017-10-24 15:33:02
    VS2010MFC没有串口控件,此压缩包里包含了串口控件相关的3个文件。mscomm32.ocx MSCOMM32.oca MSCOMM32.DEP MSCOMM.SRG 将这几个文件拷贝到一个固定的目录下然后注册就可以在MFC里正常使用串口控件了。 注册:开始->...
  • MFC,串口控件,MScoom,MFC,串口控件,MScoomMFC,串口控件,MScoomMFC,串口控件,MScoomMFC,串口控件,MScoomMFC,串口控件,MScoomMFC,串口控件,MScoom
  • bcb 串口控件

    2018-10-06 14:38:00
    bcb 串口控件 victor简单实用,已经实际使用,无问题bcb 串口控件 victor简单实用,已经实际使用,无问题
  • 顺便附赠一个串口通讯的例子,通过这个...串口控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。串口控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数。直接调用其中的函数即可。
  • delphi 串口控件

    2016-03-16 11:44:53
    delphi 串口控件 D7 - D2010支持
  • VS 串口控件

    2018-08-25 11:10:22
    VS2010-VS2017 MFC开发串口代码没有控件,这个压缩包里包含了mscomm32.ocx MSCOMM32.oca MSCOMM32.DEP MSCOMM.SRG串口控件相关的4个文件。,请将这几个文件拷贝到C盘下 Windows/SysWOW64下, 注册有两种方式,第一种...
  • C#自制用户控件——串口控件的二次开发  C# 是一个简单的、现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的。其开发工具(IDE)Visual Studio是及其强大,用过该IDE的朋友都知道其控件库中自带...

    C#自制用户控件

    ——串口控件的二次开发



        C# 是一个简单的、现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的。其开发工具(IDE)Visual Studio是及其强大,用过该IDE的朋友都知道其控件库中自带一个名称为 SerialPort 的控件(截图如下),它主要是用来进行串口工具开发,很多.NET平台下的串口工具都少不了他的身影。下面就简单介绍一下如何利用C#进行用户控件开发,然后再在自带串口控件的基础上,重新开发一个可视化串口控件(截图如下)。
    SerialPort

    最终展示效果图

    1.准备工作

        以下是博主的开发环境,版本的不同可能有所差异:

    • Windows 10
    • Visual Studio 2017

        在对串口控件进行二次开发之前,推荐大家可以看一下下面这篇博文,介绍的是用户自定义控件中的属性、事件和其他一下特性的总结。
        【C#中的自定义控件中的属性、事件及一些相关特性的总结】
        在上面这篇博文中我们知道了我们所使用的控件中的属性、事件是如何定义的,然后我们就可以在其基础上进行控件的二次开发了。

    2.详细步骤

    1.新建项目

        打开VS2017,新建项目选择类库,名称改为MySerial(名称根据各自的习惯修改就行)。
    这里写图片描述

    2. 添加用户控件
        项目创建完成后,在项目里会有一个名称为Class1的文件,这里直接删除就行,接下来右键项目添加用户控件,名称改为“MySerial”,大小改为(245, 66),为了美观,字体改为微软雅黑
    这里写图片描述
    这里写图片描述

    3. 添加相关控件
        从工具栏中分别拖动 一个SerialPort(Name为Serial)、两个Label、一个Comobox(Name为cbx_Port和cbx_BaudRate)、一个PictureBox(Name为pic_Stat,Size为(25,25))、一个Button(Name为btn_Con,Text为连接),在cbx_BaudRate的Items中添加以下几种常见的波特率,同时布局如下:
    这里写图片描述

    添加素材,素材命名如下(自己可以找其他素材替换):
    这里写图片描述
    这里写图片描述

    4. 添加操作类
        在项目里新建文件夹,名称为Class_Serial,添加Serial_Info.csSerial_Set.cs两个类。
    Serial_Info.cs(保存单个串口信息):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace MySerial.Class_Serial
    {
        public class Serial_Info
        {
            /// <summary>
            /// 串口号
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// 描述
            /// </summary>
            public string Des { get; set; }
    
            /// <summary>
            /// 方法覆盖,返回串口相关信息字符串
            /// </summary>
            /// <returns></returns>
            public override string ToString()
            {
                return Name + " - " + Des;
            }
        }
    }
    

    Serial_Set.cs(获取本机符合条件的串口):

    using System;
    using System.Collections.Generic;
    using System.IO.Ports;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Management;
    
    namespace MySerial.Class_Serial
    {
        public class Serial_Set
        {
            /// <summary>
            /// 获取串口号
            /// </summary>
            /// <returns>串口类型组</returns>
            public static List<Serial_Info> GetPorts()
            {
                List<Serial_Info> back = new List<Serial_Info>();
                using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity")) //调用WMI,获取Win32_PnPEntity,即所有设备
                {
                    var hardInfos = searcher.Get();
                    foreach (var hardInfo in hardInfos)
                    {
                        if ((hardInfo.Properties["Name"].Value != null) &&
                            (hardInfo.Properties["Name"].Value.ToString().Contains("COM")) &&
                            (hardInfo.Properties["Name"].Value.ToString().ToUpper().Contains("USB"))) //筛选出名称中包含COM的
                        {
                            Serial_Info temp = new Serial_Info();
                            string s = hardInfo.Properties["Name"].Value.ToString(); //获取名称
                            int p = s.IndexOf('(');
                            temp.Des = s.Substring(0, p); //截取描述(名称)
                            temp.Name = s.Substring(p + 1, s.Length - p - 2); //截取串口号
                            back.Add(temp);
                        }
                    }
                    searcher.Dispose();
                }
                return back;
            }
    
        }
    }
    


        【注意】:如果出现如下错误,原因是没有添加对应引用文件,只需要右键项目中的引用,点击添加引用,选择程序集,在搜索中搜索Manage,找到如图项,勾选后点击确定就行:
    这里写图片描述

    这里写图片描述

    5. 控件相关代码添加

    • 在串口的Load事件中添加以下代码,设置默认波特率。
    if (cbx_BaudRate.Items.Count > 0)
        cbx_BaudRate.SelectedIndex = 5;   //默认波特率 9600
    • 在准备工作里已经知道如何设置用户自定义的属性以及方法,所以不再作详细介绍。
    • 添加两个方法,用户刷新串口列表和调用控件中的SerialPort发送数据:
    #region 方法
    /// <summary>
    /// 刷新串口列表
    /// </summary>
    /// <returns>返回可用串口数</returns>
    public int Serial_Refresh()
    {
         cbx_Port.Items.Clear();
         foreach (Class_Serial.Serial_Info csi in Class_Serial.Serial_Set.GetPorts())
         {
              cbx_Port.Items.Add(csi.ToString());
         }
         if (cbx_Port.Items.Count > 0)
              cbx_Port.SelectedIndex = 0;
         return cbx_Port.Items.Count;
    }
    
    /// <summary>
    /// 向串口写数据指令
    /// </summary>
    /// <param name="buffer"></param>
    /// <param name="offset"></param>
    /// <param name="count"></param>
    public bool Serial_Write(string _str)
    {
          try
          {
               byte[] buffer = System.Text.Encoding.Default.GetBytes(_str);        //字符串转换为字节数组
               if (Serial.IsOpen)
               {
                   Serial.Write(buffer, 0, buffer.Length);
                   return true;
               }
               else
                   return false;
          }
          catch
          {
               return false;
          }
    }
    #endregion
    • 添加pic_Stat的Click单击事件,用于刷新串口列表。
    /// <summary>
    /// 图片单击事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void pbx_Stat_Click(object sender, EventArgs e)
    {
          Serial_Refresh();
    }
    • 添加两个变量,用于表示串口开关状态和存放串口消息,添加本控件的串口消息接收事件和串口状态改变事件,添加控件串口状态只读属性。
    bool _b_Serial_Sta = false;             //串口状态
    private StringBuilder Builder = new StringBuilder();        //消息存放变量
    [Browsable(true), Description("串口接收消息事件")]
    /// <summary>
    /// 串口接收消息事件
    /// </summary>
    public event EventHandler Serial_Received;
    [Browsable(true), Description("串口状态改变事件")]
    /// <summary>
    /// 串口状态改变时间
    /// </summary>
    public event EventHandler Serial_StataChange;
    
    #region //控件属性
    [Browsable(true), Description("串口状态")]
    /// <summary>
    /// 串口状态
    /// </summary>
    public bool IsOpen
    {
         get { return Serial.IsOpen; }
    }
    #endregion
    • 在本控件的Serial控件添加消息接收事件,用户转发消息。
    /// <summary>
    /// 本控件中的串口控件消息接收事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void Serial_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
          if (Serial.IsOpen)
          {
               byte[] Buffer_Get = null;
               try
               {
                   int N = this.Serial.BytesToRead;
                   Buffer_Get = new byte[N];
                   this.Serial.Read(Buffer_Get, 0, N);
                   Builder.Clear();            //清空
                   Builder.Append(System.Text.Encoding.Default.GetString(Buffer_Get));  //转换为字符串
                   if (Serial_Received != null && Builder.ToString().Trim() != "")
                   {
                        //调用本串口事件转发消息
                        Serial_Received(Builder, e);
                   }
               }
               finally
               {
    
              }
        }
    }
    • 然后就是添加连接按钮单击事件,用于打开串口,当串口打开时,图片变为绿色小勾,未打开时为红色原点,串口被占用或者无法打开时为红色感叹号。
    /// <summary>
    /// 打开关闭串口
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void btn_Con_Click(object sender, EventArgs e)
    {
          try
          {
               if (!_b_Serial_Sta)
               {
                   if (cbx_Port.Text == "" || cbx_BaudRate.Text == "")
                   {
                       MessageBox.Show("请选择对应串口和波特率后继续!", "提示");
                       return;
                   }
                   Serial.PortName = cbx_Port.Text.Split('-')[0];
                   Serial.BaudRate = int.Parse(cbx_BaudRate.Text);
                   Serial.Open();
                   btn_Con.Text = "断开";
                   cbx_Port.Enabled = false;
                   cbx_BaudRate.Enabled = false;
                   pbx_Stat.Enabled = false;
                   pbx_Stat.Image = Properties.Resources.open;
                   _b_Serial_Sta = true;
               }
               else
               {
                   if (Serial.IsOpen)
                   {
                        Serial.Close();
                   }
                   btn_Con.Text = "连接";
                   cbx_Port.Enabled = true;
                   cbx_BaudRate.Enabled = true;
                   pbx_Stat.Enabled = true;
                   pbx_Stat.Image = Properties.Resources.lost;
                   _b_Serial_Sta = false;
               }
               if (Serial_StataChange != null)//触发串口状态改变事件
                   Serial_StataChange(_b_Serial_Sta, null);
           }
           catch
           {
               pbx_Stat.Image = Properties.Resources.lost1;
               MessageBox.Show("请检查串口号是否正确或串口是否被占用!", "打开失败");
           }
    }
    • 添加默认事件,我们使用Button按钮时,双击控件就会直接添加一个单击事件,这个单击事件就是默认控件,我们只需要在public partial class MySerial : UserControl上面添加以下代码,就可以实现双击添加串口消息接收事件。
    [DefaultEvent("Serial_Received")]
    • 最后一步,右键项目,点击生成,在我们的项目Debug文件夹就会有一个MySerial.dll文件,在其他项目可以调用该文件从而添加该控件。
      这里写图片描述

    3.控件测试

    • 右键本项目解决方案,选择添加>添加新项目,选择Windows窗体应用,名称为Demo。
      这里写图片描述

    • 项目创建完成后,由于是同一个解决方案,我们在工具栏中将会看见一个MySerial组件,我们将该项下的MySerial拖动到窗体,就能看到我们自制的控件,同时,点击该控件的属性,就会看见如图的两个我们添加的只读属性和事件。
      这里写图片描述

      这里写图片描述

      这里写图片描述

    • 以此添加两个TextBox控件、两个Label控件和一个Button控件,用于创建一个简单的串口助手,布局如下 。
      这里写图片描述

    • 双击我们自制的控件,添加消息接收事件操作代码,然后双击发送按钮,添加发送消息相关代码,在发送的时候可以调用我们添加的串口状态属性来判断串口是否打开。

    /// <summary>
    /// 串口消息接收事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void mySerial1_Serial_Received(object sender, EventArgs e)
    {
         Invoke((Action)delegate ()          //委托显示消息
         {
              textBox1.Text = sender.ToString();
         });
    }
    
    
    /// <summary>
    /// 发送按钮事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1_Click(object sender, EventArgs e)
    {
          if (mySerial1.IsOpen)  //调用属性判断串口是否打开,打开则发送,否则提示串口未打开
          {
               mySerial1.Serial_Write(textBox2.Text);
          }
          else
          {
               MessageBox.Show("串口未打开!","提示");
          }
    }


    • 右键Demo项目,点击设为启动项目,编译运行,点击红色原点图片刷新串口列表,选择串口,点击连接,连接成功后发送消息,效果如下。
    • 这里写图片描述

      • 不知道大家有没有记得,我们一共添加了两个事件,一个是消息接收事件,一个是串口状态改变事件,接下来测试串口状态改变事件点击控件,从事件窗体中添加串口状态改变事件添加以下处理代码,运行效果如下。
    /// <summary>
    /// 串口状态改变事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void mySerial1_Serial_StataChange(object sender, EventArgs e)
    {
         MessageBox.Show("串口状态:"+mySerial1.IsOpen.ToString(),"提示");
    }


    这里写图片描述
    这里写图片描述

    4.源码

        到此,控件就制作完成,感兴趣的可以将其拓展为功能强大的串口可视化控件。
        项目下载地址:可视化串口控件MySerial

        以下是基于该控件写的串口调试助手截图。
    这里写图片描述
    这里写图片描述

    展开全文
  • 串口控件.rar

    2019-08-17 08:28:16
    串口控件.rar
  • vc 串口控件 ocx注册

    2018-10-07 12:02:15
    vc 串口控件 ocx注册
  • VC串口使用串口控件收发,使用控件收发数据
  • BCB串口控件

    2012-08-30 16:52:59
    非常好用的BCB串口控件,支持C++builder2007
  • Delphi SPComm串口控件

    2016-09-16 22:57:03
    Delphi SPComm串口控件安装,Delphi7下安装成功!
  • 串口控件程序

    2012-10-16 20:36:04
    详细的串口控件信息、源码,希望对需要的同学有所帮助!自己感觉好不错哦!
  • 串口控件包 spcom 学习保存一下。很好使用的一个串口控件
  • 串口控件发送数据初始化设置:   1,打开串口按钮初始化设置 void CSerialPortDlg::OnBnClickedButtonOpen() //发送按钮程序初始化 {  //TODO: 在此添加控件通知处理程序代码  if(m_mscomm.get_PortOpen())  ...

    串口控件发送数据初始化设置:

     

    1,打开串口按钮初始化设置

    void CSerialPortDlg::OnBnClickedButtonOpen()      //发送按钮程序初始化

    {

           //TODO:  在此添加控件通知处理程序代码

           if(m_mscomm.get_PortOpen())    //r如果串口是打开的,则关闭串口

           {

                  m_mscomm.put_PortOpen(FALSE);

           }

           m_mscomm.put_CommPort(1);        //选择COM1

           m_mscomm.put_InBufferSize(1024);     //接收缓冲区

           m_mscomm.put_OutBufferSize(1024);       //发送缓冲区

           m_mscomm.put_InputLen(0); //设置当前接收区数据长度为0,表示全部读取

           m_mscomm.put_InputMode(1);       //以二进制方式读写数据

           m_mscomm.put_RThreshold(1);      //缓冲区有1个及1个以上字符时,将引发接收数据OnComm事件

           m_mscomm.put_Settings(_T("9600,n,8,1"));     //波特率为9600无检验位,8个数据位,1个停止位

           if(!m_mscomm.get_PortOpen())  //如果串口1没有打开成功,则打开串口

           {

                  m_mscomm.put_PortOpen(TRUE);

                  AfxMessageBox(_T("串口1打开成功"));

           }

           Else  //

           {

                  m_mscomm.put_OutBufferCount(0);  //串口1打开失败,则输出缓冲区计数为0

                  AfxMessageBox(_T("串口1打开失败"));

           }

    }

     

    2,关闭串口控件初始化

    void CSerialPortDlg::OnBnClickedButtonClose()

    {

           //TODO:  在此添加控件通知处理程序代码

           m_mscomm.put_PortOpen(FALSE); //关闭串口1

           AfxMessageBox(_T("关闭串口"));

    }

     

     

    3,控件消息事件处理程序

    void CSerialPortDlg::OnCommMscomm()    //串口控件事件处理程序

    {

           //TODO:  在此处添加消息处理程序代码

           staticunsignedintcnt = 0;

           VARIANT variant_inp;

           COleSafeArray safearray_inp;

           longlen, k;

           unsignedintdata[1024] = { 0 };

           byte rxdata[1024];    //设置BYTE数组

           CString strtemp;

           if(m_mscomm.get_CommEvent() == 2)     //值为2,表示接收缓冲区内有字符

           {

                  cnt++;

                  variant_inp= m_mscomm.get_Input(); //读缓冲区消息

                  safearray_inp= variant_inp;    //变量转换

                  len= safearray_inp.GetOneDimSize();  //得到有效的数据长度

                  for(k = 0; k < len; k++)

                  {

                         safearray_inp.GetElement(&k,rxdata + k); //转换为字节型数组

                  }

                  for(k = 0; k < len; k++)   //将数组转换为CString变量

                  {

                         strtemp.Format(_T("%x"),*rxdata + k);

                         m_EditReceive+= strtemp;     //将采集到的数据加入接收编辑框变量

                         CString temp =_T("\r\n");      //换行

                         m_EditReceive+= temp;  //加入接收编辑框原有字符串

                  }

           }

           UpdateData(FALSE);

     

    }

     

    4,发送按钮程序初始化

    //发送数据函数调用很简单,关键是类中发送函数的定义

    void CSerialPortDlg::OnBnClickedButtonSend()

    {

           //TODO:  在此添加控件通知处理程序代码

           UpdateData(TRUE); //读取编辑框内容

           m_mscomm.put_Output(COleVariant(m_EditSend));    //发送数据

           m_EditSend.Empty();         //发送后清空数据框

           UpdateData(FALSE);       //更新编辑框内容

    }

     

    5,


    注意:写串口通信时,总共有四步骤:

    1,打开串口  一个open()函数搞定

    2,设置串口(串口初始化:波特率9600,数据位8,停止位1,奇偶校验位0),可以在程序初始化中添加程序,也可以发送按钮中添加程序

    3,接收数据(读取数据),一般在串口控件消息触发事件函数中添加程序。比如串口缓冲区接收到一个字符消息,则触发串口控件消息触发函数。

    4,发送数据 一个函数搞定

     

     

    现场辅助测试接口

    1,直接调用源程序的open()函数,然后转到定义里,将相关的程序申明和定义复制到一个单独程序文件中

    2,将设置串口的初始化定义在open()函数中

    3,然后在串口触发事件中,从缓冲区读取数据read

    4,写数据函数write

    5,关闭串口close

     

    20170619笔记

    调用一个类中的成员函数

    1,首先建立一个类PPI

    2,然后建立一个PPI类的变量 PPI P01

    3,接着PPI类的变量就可以调用PPI类中的成员函数:P01.open()

     

    将控件的关联变量变为全局变量方法之一:

    首先将关联变量值m_mo传给全局变量m_glbmo然后经过全局变量m_glbmo处理完后,再传给关联变量

     

    遇到的问题1:之前不知道怎么从一个类移出,放在另外一个单独文件的类中

    原因:我的基础知识不够扎实,或者说对程序的应用不够。其实这个问题很简单,利用的是类的定义。相当于在另外一个文件夹中定义一个新的类,只要将原来文件的类读懂,然后将相应的头文件,源文件复制到另一个新的类中,然后看看提示,就可以解决问题了。

    比如在类头文件.h申明,在类源文件.cpp定义

    // *************头文件申明类******************

    #pragma once

    class ppi02

    {

    public:

           ppi02();

           ~ppi02();

           intt;

           voidclose(bool a);

    };

     

     

    //***************源文件定义类**********

    #include "stdafx.h"

    #include "ppi02.h"

     

     

    ppi02::ppi02()

    {

    }

     

     

    ppi02::~ppi02()

    {

    }

     

    void ppi02::close(boolt)

    {

           AfxMessageBox(_T("this is a message!"));

    }

     

    //***************在DelG文件调用类*********

    //***************只需在开头加一个头文件就行*********

     

    void CSerialPort3Dlg::OnBnClickedButton2()

    {

           //TODO:  在此添加控件通知处理程序代码

           ppi02 p02;

           boolC = 1;

           p02.close(C);

    }

    编译后的结果(单击按钮2,弹出如下信息)

     

     

     

    展开全文
  • Delphi SCOMM串口控件

    2016-09-16 22:59:15
    Delphi SCOMM串口控件安装,Delphi7在安装成功,内带安装方法!
  • 串口控件的MFC程序,更换电脑后,源代码会出现编译通过,运行后报错的现象;执行程序双击运行也一样报错。这是因为串口控件MSCOMM没有注册,按下面的方法注册后,即可正常运行。 自己使用心得: 第一种注册...

    带串口控件的MFC程序,更换电脑后,源代码会出现编译通过,运行后报错的现象;执行程序双击运行也一样报错。这是因为串口控件MSCOMM没有注册,按下面的方法注册后,即可正常运行。


    自己使用心得:

    第一种注册方法:

    取出https://pan.baidu.com/s/1bpdfCKJ中的压缩文件。

    本地地址D:\Yifei\Download\VC++\控件\V2010串口控件

    本地地址中有两个压缩包,都可以尝试使用。

    解压后,右键点击.bat文件,用管理员身份运行即可完成注册。


    第二种注册方法:

    把mscomm32.ocx文件放到D盘,然后用管理员身份运行注册

    1.开始--〉附件--〉命令提示符(右击“以管理员运行”);

    2.把MSCOMM32.ocx放到D盘下,在CMD下输入Regsvr32  D:\MSCOMM32.ocx-----〉注册成功!

    参考:http://blog.csdn.net/phenixyf/article/details/78907288



    原理如下:

    使用MSCOMM串口控件编程虽然方便,但发布时不非常不方便了,因为MSCOMM控件是基于Activex的控件,许多用户机器上默认是没有安装这个控件,MSCOMM控件在安装时是需要注册的,下面介绍几种注册方法:

    一、手工注册的方法如下:

    1、把MSCOMM32.OCX拷贝到system32下
    2、在“开始”菜单的“运行”里输入以下内容后点确定
      regsvr32 MSCOMM32.OCX

    这时就成功注册MSCOMM串口控件了,如下所示:


    mscomm控件注册

    但是这个方法对用户来说复杂了,总不能叫用户手工来注册控件吧,下面的方法比较智能化,也规范一点。

    二、使用安装包制作程序自动注册MSCOMM串口控件

      一般的安装包制作程序都有自动注册控件的功能,比较常用的是install shiled,具体过程我就不介绍了。

    三、利用WINRAR制作自解压包,在解压后自动注册MSCOMM串口控件

    1、做一个注册的bat文件,
    2、用rar做一个自解压的安装程序
    3、解压完自动运行那个注册的bat文件即可

    bat内容


    @echo off
    copy .\MSCOMM32.OCX %SYSTEMROOT%\system32
    regsvr32 MSCOMM32.OCX

    把MSCOMM32.OCX 文件和bat放在一个文件夹下


    转自:http://zcj331.blog.163.com/blog/static/17562525520137194115355/






    展开全文
  • mscomm32串口控件

    2018-02-02 18:48:36
    mscomm32串口控件,内含注册文件,可以一键注册就可以使用,本人亲测可用。
  • SpComm2.5串口控件

    2017-04-14 10:45:10
    delphi下 的SpComm2.5串口控件,,打开delphi选择下拉菜单Component的第二项Install Component 。软后找到控件,安装
  • MSCOMM串口控件.7z

    2019-10-24 09:50:30
    MSCOMM串口控件,VS2010没有自带MSCOMM控件,下载本控件,下载完毕后,把包里的所有文件拷贝到系统目录c:\windows\syswow64下(win 7系统);c:\windows\systom32(XP系统)。找到C:\Windows\systom32下的CMD.exe,...
  • xe10 c++builder 串口控件

    2016-03-01 22:29:40
    xe10 c++builder 串口控件
  • vc串口控件例子源码

    2011-11-10 20:41:59
    vc串口控件例子源码vc串口控件例子源码
  • spcomm delphi XE2 串口控件

    热门讨论 2012-09-11 18:36:41
    spcomm delphi XE2 串口控件
  • DELPHI XE4串口控件

    2017-11-21 14:11:03
    DELPHI XE4串口控件,Spcomm Comm32.pas is a simple Communications VC for Borland Delphi 2.0 which demonstrates the Win32 Communications functions and the new Delphi 'TThread' class. It is implemented ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,079
精华内容 5,631
关键字:

串口控件