SPCOMM的方法

本文详细介绍了SPCOMM串口通信组件的主要方法与事件处理机制。包括开始和停止通信端口的操作流程、发送数据到串口的具体实现、获取调制解调器状态的功能说明,以及多种事件处理器的作用和触发条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SPCOMM的方法

METHOD
======

    procedure StartComm

        Start a communication for this comm port.
        If failure, raise ECommsError exception and ECommsError.Message contain
        following string:
            'This serial port already opened'
            'Error opening serial port'
            'File handle is not a comm handle'
            'Cannot setup comm buffer'
            'Unable to create event'
            'Unable to create read thread'
            'Unable to create write thread'

    procedure StopComm

        Stop and end all communication threads for this comm port.
        No any return.

    function WriteCommData( pDataToWrite: PChar;
                            dwSizeofDataToWrite: Word ): Boolean

        Send a String to the Write Thread to be written to the Comm.
        This subroutine will return immediately. The send operation will
        do in background.
        Parameters:
            pszStringToWrite       - string to Write to Comm port.
            nSizeofStringToWrite - length of pszStringToWrite.
        Return:
            TRUE : if the PostMessage to write thread is successful.
            FALSE: if PostMessage fails or Write thread doesn't exist.

    function GetModemState : DWORD;

       Get and return the modem state right now. They are the state of modem
       input pin from MSR.
       The return value can be one or more of the following codes:

        Value         Meaning
        ----------    -----------------------------------------------------------
        MS_CTS_ON     The CTS (clear-to-send) signal is on.
        MS_DSR_ON     The DSR (data-set-ready) signal is on.
        MS_RING_ON    The ring indicator signal is on.
        MS_RLSD_ON    The RLSD (receive-line-signal-detect) signal is on.

        The function fails if the hardware does not support the
        control-register values.

EVENT HANDLER
=============

    OnReceiveData : procedure (Sender: TObject;
                               Buffer: Pointer;
                               BufferLength: Word) of object

        When
          1. The input buffer contains received data and
          2. more than a limit size or
          3. read time-out
        the event handler is called
        Sender : point to TComm object which raise this call
        Buffer : the buffer which contains received data
        BufferLength : the size of received data in Buffer

    OnReceiveError : procedure(Sender: TObject; EventMask : DWORD) of object

        When error happend during receiving, the event handler is called.
        Sender : point to TComm object which raise this call
        EventMask : the value get from ClearCommError in 'HandleCommEvent'
                    A 32-bit variable to be filled with a mask indicating the
                    type of error. This parameter can be one or more of the
                    following error codes:

        Value         Meaning
        ----------    -----------------------------------------------------------
        CE_BREAK      The hardware detected a break condition. (no support now)
        CE_DNS        Windows 95 only: A parallel device is not selected.
        CE_FRAME      The hardware detected a framing error.
        CE_IOE        An I/O error occurred during communications with the device.
        CE_MODE       The requested mode is not supported, or the hFile parameter
                    is invalid. If this value is specified, it is the only
                    valid error.
        CE_OOP        Windows 95 only: A parallel device signaled that it is out
                    of paper.
        CE_OVERRUN    A character-buffer overrun has occurred. The next character
                    is lost.
        CE_PTO        Windows 95 only: A time-out occurred on a parallel device.
        CE_RXOVER     An input buffer overflow has occurred. There is either no
                    room in the input buffer, or a character was received after
                    the end-of-file (EOF) character.
                    (second condition is impossible happened under Win32)
        CE_RXPARITY The hardware detected a parity error. (no support)
        CE_TXFULL     The application tried to transmit a character, but the
                    output buffer was full. (no support)


    OnRequestHangup: procedure(Sender: TObject) of object;

        When the program is terminated abnormally, the event handler is
        called.

    OnModemStateChange : procedure(Sender: TObject; ModemEvent : DWORD) of object

        When Modem's RLSD(CD) change state (HIGH<->LOW) or the ring indicator
        signal is detected, this event handler is
        called.
        Sender : point to TComm object which raise this call
        ModemEvent : A 32-bit variable to be filled with a mask indicating
                     what made this call. This parameter can be one or more
                     of the following codes:

        Value         Meaning
        ----------    -----------------------------------------------------------
        ME_CTS        The CTS (clear-to-send) signal has changed state.
                    (support in future, not support now)
        ME_DSR        The DSR (data-set-ready) signal has changed state.
                    (support in future, not support now)
        ME_RING       The ring indicator signal was detected.
        ME_RLSD       The RLSD (receive-line-signal-detect) signal has changed
                    state.

        Call GetModemState method to get the real state of modem state.

LEGALITIES
==========

This component is totally free (along with source code).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值