完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ESM335x系列工控主板支持5路高速串口,其中COM2口支持硬件RTS/CTS流控功能,其RTS/CTS分别与ESM335x的GPOI1/GPIO0复用,应用程序可以独立设置是否使能RTS/CTS功能。 RTS(Request-To-Send)流量控制功能由串口参数结构体DCB的fRtsControl成员设置,该成员的可用值如下(针对ESM335x):
串口参数结构体DCB的fOutxCtsFlow成员用于指定CTS(Clear-To-Send)信号是否被监视并作为输出流量控制信号。如果此成员设置为TRUE且CTS管脚为高,则串口输出被挂起,直到CTS被拉低后重新输出。如果此成员设置为FALSE,对应管脚可作为GPIO使用。 RTS Handshake与OutxCtsFlow通常是同时使能或同时禁止的,下面是设置RTS/CTS的示例代码: BOOL CCESerial::SetHandshake( BOOL bSet ) { DCB dcb;
GetCommState( m_hSer, &dcb ); // Purge any pending characters in the serial port. PurgeComm(m_hSer, (PURGE_TXABORT|PURGE_RXABORT |PURGE_TXCLEAR | PURGE_RXCLEAR)); if( bSet ) { dcb.fRtsControl = RTS_CONTROL_HANDSHAKE; dcb.fOutxCtsFlow = TRUE; } else { dcb.fRtsControl = RTS_CONTROL_DISABLE; dcb.fOutxCtsFlow = FALSE; } return SetCommState(m_hSer, &dcb); } 除COM2口支持硬件流控外,ESM335x的所有串口(包括COM2)还支持 RTS Toggle功能,RTS Toggle主要用于RS485电路的数据收发方向控制,应用程序可以选择ESM335x 32位GPIO中的任意一位做为RTS信号线来实现RTS Toggle功能,下面是选择GPIO作为串口RTS信号并使能RTS_CONTROL_TOGGLE的示例代码: BOOL CCESerial::SetRTSToggle( DWORD dwRTSPin ) { DCB dcb; BOOL bRet;
bRet = DeviceIoControl(m_hSer, // file handle to the driver IOCTL_SET_UART_RTS_PIN, // I/O control code &dwRTSPin, // in buffer sizeof(DWORD), // in buffer size NULL, // out buffer 0, // out buffer size NULL, // pointer to number of bytes returned NULL); // ignored (=NULL) if( !bRet ) return FALSE;
GetCommState( m_hSer, &dcb ); // Purge any pending characters in the serial port. PurgeComm(m_hSer, (PURGE_TXABORT |PURGE_RXABORT |PURGE_TXCLEAR | PURGE_RXCLEAR)); dcb.fRtsControl = RTS_CONTROL_TOGGLE;
SetCommState(m_hSer, &dcb); return TRUE; } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 11:06 , Processed in 0.486555 second(s), Total 49, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号