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

被折叠的 条评论
为什么被折叠?



