串口学习小总结(1)

本文详细介绍了在MSComm控件中,如何利用CommPort、RThreshold、CTSHolding和SThreshold属性来管理和监控串口通信事件。通过设置这些属性,可以实现对通信端口号的设定,接收和发送缓冲区的触发条件,以及CTS线路状态的查询,从而确保数据传输的准确性和及时性。

1.为什么有了CSerialPort类还要用MSComm串口控件?
      因为CSerialPort类的局限性(想要扩展、完善得自己写),其次因其非Modem应用,如果要对Modem进行控制还得自己对类进行改写。
      而MSComm控件因其为微软提供,功能相对完善,而且可以对中文进行操作处理。

2.MSComm串口控件编程的基本步骤:
    (1).在建立的工程中插入Microsoft Communication Control控件;
    (2).添加相关的MSComm控制变量(或对象);
    (3).对串口进行初始化,设置MSComm控件属性;
    (4).添加串口事件的消息处理函数OnComm()函数,在函数中根据应用需要,编写数据处理代码;
    (5).编写串口发送等其他代码;
    (6).关闭串口。(个人目前感觉没用)

3.MSComm控件通信功能的实现,也是通过间接调用Windows API编程的结果,只是先通过Comm.drv(系统库文件)解释,然后再传递给设备驱动程序进行的,它提供了一系列标准通信命令的使用接口,利用它可以建立串

口连接(关键是能通过串口连接到Modem),发出命令,交换数据以及监视和响应串行连接中发生的事件和错误。MSComm控件还可以用于创建电话拨号程序、串口通信程序和功能完善的终端程序。
      MSComm控件可提供了两种处理通信问题的方法:一.事件驱动(Event-Drive);二.查询。

4.MSComm控件属性
    属性列表:CommPort属性:设置并返回通信端口号。
        RThreshold属性:在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,设置并返回的要接收的字符数。
        CTSHolding属性:确定是否可通过查询Clear To Send(CTS)线的状态发送数据。Clear To Send是Moden发送到相连计算机的信号,指示传输可以进行。该属性在设计时无效,在运行时为只读。
        SThreshold属性:MSComm控件设置CommEvent属性为comEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字
        Handshaking属性:设置或返回硬件握手状态,即设定串口通信设备之间的流控制
        InputMode属性:设置或返回传输数据的类型
        CDHolding属性:通过查询Carrier Detect(CD)线的状态确定当前是否有传输
        DSRHolding属性:确定Data Set Ready(DSR)线的状态
        Settings属性:设置并返回波特率、奇偶校验、数据位、停止位参数
        InputLen属性:设置并返回InPut属性从接收缓冲区读取的字符数
        InBufferSize属性:设置输入缓冲区大小
        InBufferCount属性:设置或返回输入缓冲区内等待读取的字节个数
        OutBurrerSize属性:设置或返回发送缓冲区的大小
        OutBufferCount属性:返回发送缓冲区的字节数,或者清空发送缓冲区
        InPut属性:从接收缓冲区读出数据
        OutPut属性:向发送缓冲区写数据,或者返回发送缓冲区当前的数据
        PortOpen属性:用于打开或关闭串口,或者返回串口的开、关状态
        EOFEnable属性:确定在输入过程中MSComm控件是否寻找文件结尾(EOF)字符。如果找到EOF字符,将停止输入并激活OnComm事件,此时CommEvent属性设置为ComEvEOF
        DTREnable属性:设置或返回Data Terminal Rrady(DTR)线状态。确定在通信时是否使Data Teminal Ready(DTR)线有效。Data Terminal Ready是计算机发送到调制解调器的信号,指示计算机在

等待接收传输
        RTSEnable属性:确定是否使Request To Send(RTS)线有效。一般情况下,由计算机发送Request To Send信号到连接的调试解调器,以示允许发送数据
        Break属性:设置或清除中断信号的状态。
        CommID属性:返回一个说明通信设备的句柄。
        NullDiscard属性:确定Null字符是否从端口传送到接收缓冲区

        CommEvent属性:设置或返回无论何时当CommEvent属性的值变化时,就产生OnComm事件,标志发生了一个通信事件或一个错误


(1)CommPort属性
            功能:设置并返回通信端口号。
            语法: void CMSComm::SetCommPort(short nNewValue)//设置串口号
           short CMSComm::GetCommPort()//查询当前串口号
            说明:nNewValue可以设置>1 or<16的任何数(defult)。
    (2)RThreshold属性
            功能:在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,设置并返回的要接收的字符数。
            语法: void CMSComm::SetRthreshold(short nNewValue)
           short CMScomm::GetThershold()
            说明:接收缓冲区收到nNewValue个字符产生OnComm事件。例如nNewValue为1时,则接收缓冲区收到每一个字符都会使MSComm产生OnComm事件。
    (3)CTSHolding属性
            功能:确定是否可通过查询Clear To Send(CTS)线的状态发送数据。Clear To Send是Moden发送到相连计算机的信号,指示传输可以进行。该属性在设计时无效,在运行时为只读。
            语法:void CMSComm::SetCTSHolding(BOOL bNewValue)
          short CMSComm::GetCTSHolding()
            说明:如果Clear To Send线为低电平(CTSHolding = False)并且超时时,MSComm控件设置CommEvent属性为comEventCTSTO(Clear To Send Timeout),并产生OnComm事件。
          CTS线用于RTS/CTS(Request To Send/Clear To Send)硬件握手。如果需要确定CTS线的状态,则CTSHolding 属性给出一种手工查询方法。
    (4)SThreshold属性
            功能:MSComm控件设置CommEvent属性为comEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字符集数。
            语法:void CMSComm::SetThreshold(short nNewValue)
          short CMSComm::GetSThreshold()
            说明:STHreshold属性为0(defult),数据传输事件不会产生OnComm事件;
          STHreshold属性为1,当传输缓冲区完全空时,MSComm产生OnComm事件;
          STHreshold属性为


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值