go-serial
go-serial copied to clipboard
VID/PID are strings?
I was pleasantly surprised the enumerator subpackage supports USB VID/PID numbers so it's possible to filter serial ports on them.
However, I found that VID and PID are stored as strings? That doesn't make a lot of sense to me, as these are 16-bit numbers and we have a Go type for this: uint16
. strconv.ParseUint
works, but requires extra error handling and in general seems less reliable. Example code:
for _, p := range portsList {
if !p.IsUSB {
continue
}
if p.VID != "" && p.PID != "" {
vid, vidErr := strconv.ParseUint(p.VID, 16, 16)
pid, pidErr := strconv.ParseUint(p.PID, 16, 16)
if vidErr == nil && pidErr == nil {
// check for VID/PID match
}
}
}
Maybe this ship has sailed already (because of API breakage) but in my opinion changing this to use uint16
would make the API easier to use.
For reference: https://github.com/tinygo-org/tinygo/pull/1956
Maybe this ship has sailed already (because of API breakage)
Yes, that's a big problem... maybe in a future major release we may change them, but in the meantime, it's a nice idea to use uint16
so I'll probably add the "integer" fields together with the already existing ones...
May you want to open a PR for that?