最近在用 go 语言操作串口,遇到个问题。 在串口初始化时需要传入一个 COM 口值,例如: cfg := &serial.Config{Name: "COM43", Baud: 115200, ReadTimeout: 3 /毫秒/} 其中的 COM43 是我人工读取后敲进去的。 现在想让 go 程序自动获取电脑所有的 COM 口,选数值最大的那个作为目标口完成初始化,这个在 windows 和 linux 下分别怎么实现呀?
1
TypeErrorNone 2019-08-27 16:42:38 +08:00
啥叫串口?
|
2
rockyou12 2019-08-27 16:48:45 +08:00
linux 的话,直接 cd 进 /dev 看有几个 tty ?
|
3
binsys 2019-08-27 16:49:24 +08:00
Win:
参考 .NET SerialPort https://referencesource.microsoft.com/#System/sys/system/io/ports/SerialPort.cs,6e8f9abfa6f4bdef 读注册表 Linux: 列 /dev/目录,找所有文件名 tty 开头的,大概可能有 ttyS*,ttyGS*,ttyUSB*等。找到你需要的类型的文件,拿到 fd。 剩下的参考: https://github.com/tarm/serial |
5
CEBBCAT 2019-08-27 17:13:18 +08:00 via Android
@TypeErrorNone 串口这种东西又不是啥高深概念,一搜就有,阁下看帖就想水有点无聊吧
|
6
zjyl1994 2019-08-27 17:30:01 +08:00
linux 下 /dev/ttyS 多少或者 ttyUSB 多少,你只要关注一下就知道了( linux 开发板对吧,使用说明书会有的,没有的话去客服要一个,都会写明白的
|
7
qile1 2019-08-27 17:32:09 +08:00 via Android
我想问问楼主对应需要 ack 应答这些如何处理的,比如收到串口查询,应答结果给仪器,我用单纯的 if 有时候会卡住,时效性比较低!
|
10
TypeErrorNone 2019-08-27 17:40:42 +08:00
@cqcsdzmt 可以
|
12
Osk 2019-08-28 01:02:43 +08:00 via Android
搭车问一下:Windows 里面 COMx 和 \\.\COMx 是什么情况,同一个串口,前者需提权才能访问,后者不需提权
|
13
Pythondr 2019-08-28 02:20:55 +08:00 via Android
@TypeErrorNone 没玩过单片机?
|
14
binsys 2019-08-28 09:20:13 +08:00
@cqcsdzmt file io api,不需要 shell,当然 也支持 shell.
https://stackoverflow.com/questions/34229486/how-to-execute-a-shell-built-in-command 多动手 google 全都有的。 |
15
guanzhangzhang 2019-09-01 16:38:44 +08:00
你可以看看 gobot 的官网,有个 g 开头的 cli 你能扫描串口
|