Fix Bug: Update RS485 baud rate configuration to use dlmstp_baud_rate(mstp_port) instead of shared data enum value (#1294)
This commit is contained in:
@@ -702,8 +702,8 @@ bool dlmstp_init(void *poPort, char *ifname)
|
|||||||
*/
|
*/
|
||||||
newtio.c_cflag =
|
newtio.c_cflag =
|
||||||
poSharedData->RS485MOD | CLOCAL | CREAD | BOTHER | (BOTHER << IBSHIFT);
|
poSharedData->RS485MOD | CLOCAL | CREAD | BOTHER | (BOTHER << IBSHIFT);
|
||||||
newtio.c_ispeed = poSharedData->RS485_Baud;
|
newtio.c_ispeed = dlmstp_baud_rate(mstp_port);
|
||||||
newtio.c_ospeed = poSharedData->RS485_Baud;
|
newtio.c_ospeed = dlmstp_baud_rate(mstp_port);
|
||||||
/* Raw input */
|
/* Raw input */
|
||||||
newtio.c_iflag = 0;
|
newtio.c_iflag = 0;
|
||||||
/* Raw output */
|
/* Raw output */
|
||||||
|
|||||||
+7
-1
@@ -206,7 +206,13 @@ void RS485_Send_Frame(
|
|||||||
|
|
||||||
if (mstp_port && mstp_port->UserData) {
|
if (mstp_port && mstp_port->UserData) {
|
||||||
poSharedData = (SHARED_MSTP_DATA *)mstp_port->UserData;
|
poSharedData = (SHARED_MSTP_DATA *)mstp_port->UserData;
|
||||||
baud = poSharedData->RS485_Baud;
|
/* poSharedData->RS485_Baud stores a termios B-constant (e.g.
|
||||||
|
* B38400=15), NOT the actual numeric baud rate. Using it directly in
|
||||||
|
* the turnaround delay formula (40,000,000 / baud) would produce ~2.7
|
||||||
|
* seconds instead of the correct ~1ms at 38400 baud. dlmstp_baud_rate()
|
||||||
|
* converts the termios constant to the real value.
|
||||||
|
*/
|
||||||
|
baud = dlmstp_baud_rate(mstp_port);
|
||||||
handle = poSharedData->RS485_Handle;
|
handle = poSharedData->RS485_Handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user