You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(( eSndState == STATE_M_TX_XFWR ) || ( eSndState == STATE_M_TX_IDLE )) has assert failed at xMBMasterRTUTimerExpired.
此断言发生在软定时器回调中
xMBMasterRTUTimerExpired(void){
...
switch (eSndState)
{
/* A frame was send finish and convert delay or respond timeout expired.
* If the frame is broadcast,The master will idle,and if the frame is not
* broadcast.Notify the listener process error.*/
case STATE_M_TX_XFWR:
if ( xFrameIsBroadcast == FALSE ) {
vMBMasterSetErrorType(EV_ERROR_RESPOND_TIMEOUT);
xNeedPoll = xMBMasterPortEventPost(EV_MASTER_ERROR_PROCESS);
}
break;
/* Function called in an illegal state. */
default:
CMB_ASSERT(
( eSndState == STATE_M_TX_XFWR ) || ( eSndState == STATE_M_TX_IDLE ));
break;
}
...
}
typedefenum
{
STATE_M_TX_IDLE, /*!< Transmitter is in idle state. */STATE_M_TX_XMIT, /*!< Transmitter is in transfer state. */STATE_M_TX_XFWR, /*!< Transmitter is in transfer finish and wait receive state. */
} eMBMasterSndState;
The text was updated successfully, but these errors were encountered:
freemodbus主机代码经过几小时测试触发定时器断言
此断言发生在软定时器回调中
接收到软定时器回调时处于 STATE_M_TX_IDLE 状态 此时处理switch (eSndState)就会进入断言
相反这时候应该是STATE_M_TX_XMIT状态才正常
The text was updated successfully, but these errors were encountered: