go 语言操作串口

2019-08-27 16:32:01 +08:00
 cqcsdzmt

最近在用 go 语言操作串口,遇到个问题。 在串口初始化时需要传入一个 COM 口值,例如: cfg := &serial.Config{Name: "COM43", Baud: 115200, ReadTimeout: 3 /毫秒/} 其中的 COM43 是我人工读取后敲进去的。 现在想让 go 程序自动获取电脑所有的 COM 口,选数值最大的那个作为目标口完成初始化,这个在 windows 和 linux 下分别怎么实现呀?

5023 次点击
所在节点    Go 编程语言
15 条回复
TypeErrorNone
2019-08-27 16:42:38 +08:00
啥叫串口?
rockyou12
2019-08-27 16:48:45 +08:00
linux 的话,直接 cd 进 /dev 看有几个 tty ?
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
binsys
2019-08-27 16:50:51 +08:00
@binsys 编辑器自动加的链接有问题 应该包括逗号后面的文字
CEBBCAT
2019-08-27 17:13:18 +08:00
@TypeErrorNone 串口这种东西又不是啥高深概念,一搜就有,阁下看帖就想水有点无聊吧
zjyl1994
2019-08-27 17:30:01 +08:00
linux 下 /dev/ttyS 多少或者 ttyUSB 多少,你只要关注一下就知道了( linux 开发板对吧,使用说明书会有的,没有的话去客服要一个,都会写明白的
qile1
2019-08-27 17:32:09 +08:00
我想问问楼主对应需要 ack 应答这些如何处理的,比如收到串口查询,应答结果给仪器,我用单纯的 if 有时候会卡住,时效性比较低!
cqcsdzmt
2019-08-27 17:36:38 +08:00
@qile1 ack 应答这些倒不用,go 语言的的串口目前接收的话只有个 read 方法。
cqcsdzmt
2019-08-27 17:37:55 +08:00
@binsys linux 中,go 语言可以调用 shell 语句吗?
TypeErrorNone
2019-08-27 17:40:42 +08:00
@cqcsdzmt 可以
mengzhuo
2019-08-27 22:30:12 +08:00
@cqcsdzmt 还有 USB HID 驱动呢
Osk
2019-08-28 01:02:43 +08:00
搭车问一下:Windows 里面 COMx 和 \\.\COMx 是什么情况,同一个串口,前者需提权才能访问,后者不需提权
Pythondr
2019-08-28 02:20:55 +08:00
@TypeErrorNone 没玩过单片机?
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 全都有的。
guanzhangzhang
2019-09-01 16:38:44 +08:00
你可以看看 gobot 的官网,有个 g 开头的 cli 你能扫描串口

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/595576

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX