linux: implemented cfset{i|o}speed without C function call
This commit is contained in:
@@ -191,8 +191,16 @@ func (port *linuxSerialPort) SetSpeed(speed int) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
C.cfsetispeed(settings, baudrate)
|
// revert old baudrate
|
||||||
C.cfsetospeed(settings, baudrate)
|
var BAUDMASK uint32 = 0
|
||||||
|
for _, rate := range baudrateMap {
|
||||||
|
BAUDMASK |= rate
|
||||||
|
}
|
||||||
|
settings.Cflag &= ^uint32(BAUDMASK)
|
||||||
|
// set new baudrate
|
||||||
|
settings.Cflag |= baudrate
|
||||||
|
settings.Ispeed = baudrate
|
||||||
|
settings.Ospeed = baudrate
|
||||||
return setTermSettings(port.Handle, settings)
|
return setTermSettings(port.Handle, settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user