mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-02-22 17:29:07 +08:00
[Modbus] Update the code to the latest version.
This commit is contained in:
parent
5502558df9
commit
be18a1d0e7
@ -196,7 +196,7 @@ eMBMasterReqWriteCoil( UCHAR ucSndAddr, USHORT usCoilAddr, USHORT usCoilData, LO
|
|||||||
UCHAR *ucMBFrame;
|
UCHAR *ucMBFrame;
|
||||||
eMBMasterReqErrCode eErrStatus = MB_MRE_NO_ERR;
|
eMBMasterReqErrCode eErrStatus = MB_MRE_NO_ERR;
|
||||||
|
|
||||||
if ( usCoilAddr > MB_MASTER_TOTAL_SLAVE_NUM ) eErrStatus = MB_MRE_ILL_ARG;
|
if ( ucSndAddr > MB_MASTER_TOTAL_SLAVE_NUM ) eErrStatus = MB_MRE_ILL_ARG;
|
||||||
else if ( ( usCoilData != 0xFF00 ) && ( usCoilData != 0x0000 ) ) eErrStatus = MB_MRE_ILL_ARG;
|
else if ( ( usCoilData != 0xFF00 ) && ( usCoilData != 0x0000 ) ) eErrStatus = MB_MRE_ILL_ARG;
|
||||||
else if ( xMBMasterRunResTake( lTimeOut ) == FALSE ) eErrStatus = MB_MRE_MASTER_BUSY;
|
else if ( xMBMasterRunResTake( lTimeOut ) == FALSE ) eErrStatus = MB_MRE_MASTER_BUSY;
|
||||||
else
|
else
|
||||||
|
@ -183,7 +183,7 @@ eMBFuncReadHoldingRegister( UCHAR * pucFrame, USHORT * usLen )
|
|||||||
usRegAddress++;
|
usRegAddress++;
|
||||||
|
|
||||||
usRegCount = ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF] << 8 );
|
usRegCount = ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF] << 8 );
|
||||||
usRegCount = ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF + 1] );
|
usRegCount |= ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF + 1] );
|
||||||
|
|
||||||
/* Check if the number of registers to read is valid. If not
|
/* Check if the number of registers to read is valid. If not
|
||||||
* return Modbus illegal data value exception.
|
* return Modbus illegal data value exception.
|
||||||
|
@ -99,14 +99,14 @@ BOOL xMBPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits,
|
|||||||
serial->ops->configure(serial, &(serial->config));
|
serial->ops->configure(serial, &(serial->config));
|
||||||
|
|
||||||
/* open serial device */
|
/* open serial device */
|
||||||
if (!serial->parent.open(&serial->parent,
|
if (!rt_device_open(&serial->parent, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX)) {
|
||||||
RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX )) {
|
rt_device_set_rx_indicate(&serial->parent, serial_rx_ind);
|
||||||
serial->parent.rx_indicate = serial_rx_ind;
|
|
||||||
} else {
|
} else {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* software initialize */
|
/* software initialize */
|
||||||
|
rt_event_init(&event_serial, "slave event", RT_IPC_FLAG_PRIO);
|
||||||
rt_thread_init(&thread_serial_soft_trans_irq,
|
rt_thread_init(&thread_serial_soft_trans_irq,
|
||||||
"slave trans",
|
"slave trans",
|
||||||
serial_soft_trans_irq,
|
serial_soft_trans_irq,
|
||||||
@ -115,7 +115,6 @@ BOOL xMBPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits,
|
|||||||
sizeof(serial_soft_trans_irq_stack),
|
sizeof(serial_soft_trans_irq_stack),
|
||||||
10, 5);
|
10, 5);
|
||||||
rt_thread_startup(&thread_serial_soft_trans_irq);
|
rt_thread_startup(&thread_serial_soft_trans_irq);
|
||||||
rt_event_init(&event_serial, "slave event", RT_IPC_FLAG_PRIO);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ static rt_uint8_t serial_soft_trans_irq_stack[512];
|
|||||||
static struct rt_thread thread_serial_soft_trans_irq;
|
static struct rt_thread thread_serial_soft_trans_irq;
|
||||||
/* serial event */
|
/* serial event */
|
||||||
static struct rt_event event_serial;
|
static struct rt_event event_serial;
|
||||||
/* modbus slave serial device */
|
/* modbus master serial device */
|
||||||
static rt_serial_t *serial;
|
static rt_serial_t *serial;
|
||||||
|
|
||||||
/* ----------------------- Defines ------------------------------------------*/
|
/* ----------------------- Defines ------------------------------------------*/
|
||||||
@ -100,23 +100,22 @@ BOOL xMBMasterPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits,
|
|||||||
serial->ops->configure(serial, &(serial->config));
|
serial->ops->configure(serial, &(serial->config));
|
||||||
|
|
||||||
/* open serial device */
|
/* open serial device */
|
||||||
if (!serial->parent.open(&serial->parent,
|
if (!rt_device_open(&serial->parent, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX)) {
|
||||||
RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX )) {
|
rt_device_set_rx_indicate(&serial->parent, serial_rx_ind);
|
||||||
serial->parent.rx_indicate = serial_rx_ind;
|
|
||||||
} else {
|
} else {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* software initialize */
|
/* software initialize */
|
||||||
|
rt_event_init(&event_serial, "master event", RT_IPC_FLAG_PRIO);
|
||||||
rt_thread_init(&thread_serial_soft_trans_irq,
|
rt_thread_init(&thread_serial_soft_trans_irq,
|
||||||
"slave trans",
|
"master trans",
|
||||||
serial_soft_trans_irq,
|
serial_soft_trans_irq,
|
||||||
RT_NULL,
|
RT_NULL,
|
||||||
serial_soft_trans_irq_stack,
|
serial_soft_trans_irq_stack,
|
||||||
sizeof(serial_soft_trans_irq_stack),
|
sizeof(serial_soft_trans_irq_stack),
|
||||||
10, 5);
|
10, 5);
|
||||||
rt_thread_startup(&thread_serial_soft_trans_irq);
|
rt_thread_startup(&thread_serial_soft_trans_irq);
|
||||||
rt_event_init(&event_serial, "slave event", RT_IPC_FLAG_PRIO);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ BOOL xMBPortTimersInit(USHORT usTim1Timerout50us)
|
|||||||
rt_timer_init(&timer, "slave timer",
|
rt_timer_init(&timer, "slave timer",
|
||||||
timer_timeout_ind, /* bind timeout callback function */
|
timer_timeout_ind, /* bind timeout callback function */
|
||||||
RT_NULL,
|
RT_NULL,
|
||||||
(50*usTim1Timerout50us)/(1000*1000/RT_TICK_PER_SECOND),
|
(50 * usTim1Timerout50us) / (1000 * 1000 / RT_TICK_PER_SECOND) + 1,
|
||||||
RT_TIMER_FLAG_ONE_SHOT); /* one shot */
|
RT_TIMER_FLAG_ONE_SHOT); /* one shot */
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ BOOL xMBMasterPortTimersInit(USHORT usTimeOut50us)
|
|||||||
rt_timer_init(&timer, "master timer",
|
rt_timer_init(&timer, "master timer",
|
||||||
timer_timeout_ind, /* bind timeout callback function */
|
timer_timeout_ind, /* bind timeout callback function */
|
||||||
RT_NULL,
|
RT_NULL,
|
||||||
(50 * usT35TimeOut50us) / (1000 * 1000 / RT_TICK_PER_SECOND),
|
(50 * usT35TimeOut50us) / (1000 * 1000 / RT_TICK_PER_SECOND) + 1,
|
||||||
RT_TIMER_FLAG_ONE_SHOT); /* one shot */
|
RT_TIMER_FLAG_ONE_SHOT); /* one shot */
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user