@@ -82,6 +82,18 @@ func NewSerialMonitor() *SerialMonitor {
82
82
Values : []string {"1" , "1.5" , "2" },
83
83
Selected : "1" ,
84
84
},
85
+ "rts" : {
86
+ Label : "RTS" ,
87
+ Type : "enum" ,
88
+ Values : []string {"On" , "Off" },
89
+ Selected : "On" ,
90
+ },
91
+ "dtr" : {
92
+ Label : "DTR" ,
93
+ Type : "enum" ,
94
+ Values : []string {"On" , "Off" },
95
+ Selected : "On" ,
96
+ },
85
97
},
86
98
},
87
99
openedPort : false ,
@@ -114,7 +126,17 @@ func (d *SerialMonitor) Configure(parameterName string, value string) error {
114
126
// Apply configuration to port
115
127
var configErr error
116
128
if d .openedPort {
117
- configErr = d .serialPort .SetMode (d .getMode ())
129
+ switch parameterName {
130
+ case "baudrate" , "parity" , "bits" , "stop_bits" :
131
+ configErr = d .serialPort .SetMode (d .getMode ())
132
+ case "dtr" :
133
+ configErr = d .serialPort .SetDTR (d .getDTR ())
134
+ case "rts" :
135
+ configErr = d .serialPort .SetRTS (d .getRTS ())
136
+ default :
137
+ // Should never happen
138
+ panic ("Invalid parameter: " + parameterName )
139
+ }
118
140
}
119
141
120
142
// If configuration failed, rollback settings
@@ -133,8 +155,9 @@ func (d *SerialMonitor) Open(boardPort string) (io.ReadWriter, error) {
133
155
serialPort , err := serial .Open (boardPort , d .getMode ())
134
156
if err != nil {
135
157
return nil , err
136
-
137
158
}
159
+ _ = serialPort .SetDTR (d .getDTR ())
160
+ _ = serialPort .SetRTS (d .getRTS ())
138
161
d .openedPort = true
139
162
d .serialPort = serialPort
140
163
return d .serialPort , nil
@@ -187,3 +210,11 @@ func (d *SerialMonitor) getMode() *serial.Mode {
187
210
}
188
211
return mode
189
212
}
213
+
214
+ func (d * SerialMonitor ) getDTR () bool {
215
+ return d .serialSettings .ConfigurationParameter ["dtr" ].Selected == "On"
216
+ }
217
+
218
+ func (d * SerialMonitor ) getRTS () bool {
219
+ return d .serialSettings .ConfigurationParameter ["rts" ].Selected == "On"
220
+ }
0 commit comments