GoForum🌐 V2EX

Windows 平台的上位机开发,需要用 CAN 通信,能用 go 吗?

TirionHo · 2026-05-21 14:13 · 0 次点赞 · 10 条回复

之前做互联网的,现在转到了搞嵌入式的公司做物联网相关工作,小公司要求啥都会,现在把服务器、小程序、APP 、上位机这些都交给我来做。 小程序、APP 这些有点经验都好说,但是现在要做上位机,功能是连接 BMS 进行数据监控和参数配置,需要使用 CAN 通信。 我一开始想的是用 electron 之类的,但是发现只对串口通信支持较好,做 CAN 通信很难。又调研了下,发现了 wails 这个东西,问了下 AI ,说 go 可以做底层开发,但是深入了解后发现还是需要用 cgo 之类的,感觉坑有点多,主要是之前没做过这方便,完全不知道可行性如何。不知道有没有大佬用 go 实现过类似的功能呢? 如果用 go 实现难度很大,要做上位机是不是从学习成本、开发效率这些来说,应该选择 avalonia ,这个相对来说能更快速的上手?

10 条回复
ljl024 · 2026-05-21 14:23
#1

UI 和 CAN 通信肯定不会跑在一个线程上,干脆把界面和通信拆开来做 electron 之类的做界面,负责 CAN 通信的部分单独起一个服务

gwkoooo · 2026-05-21 14:28
#2

上位机用 winform 或者 wpf 比较方便吧

TirionHo · 2026-05-21 14:33
#3

@ljl024 问题就是 CAN 通信用啥来写好,用 go 的话怕坑太深自己搞不定,求稳的话就只有 C#和 QT ,那就要新学了

opengps · 2026-05-21 14:33
#4

做上位机,依然优先推荐最原始的那套,因为硬件厂商提供的资料会丰富,甚至有些是 sdk 直接调用 除非纯粹通信,你有精力有文档能从头解析,否则不要用太新的语言,为了有车坐还要从其他地方移植一套生产线很不值

niboy · 2026-05-21 14:43
#5

主要是看你买的 USB‑CAN 支持哪些语言的 sdk ,一般来说,可能底层都是 C 库或者 dll ,其他语言封装了库,你做上位机来调

anthoy · 2026-05-21 14:43
#6

pyqt 会不会容易上手多一点

slowly · 2026-05-21 14:43
#7

建议使用 winform ,大部分提供的 sdk 选择都很少,上位机要么 c++ 要么 c#,上位机基本都是跑在 win 上面

supemaomao · 2026-05-21 14:43
#8

can 转网络模块,你直接用 TCP/UDP 通讯就行了。模块有个好处,自带滤波。不然数据大了,你处理不过来。

liuliuliuliu · 2026-05-21 14:43
#9

上位机下位机的话 C#是第一选择,至于 UI ,其实没必要 avalonia 这个是跨平台的,你也不需要,winform 和 wpf 就行,当然用 avalonia 也没问题

longaiwp · 2026-05-21 14:48
#10

不要考虑什么上手不上手,看看 SDK 用的什么,然后就选那个。

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: TirionHo
发布: 2026-05-21
点赞: 0
回复: 0