搜索
bottom↓
回复: 138

请教下用go语言,写程序的大神们一些问题,谢谢。

  [复制链接]

出0入36汤圆

发表于 2020-2-9 19:08:54 | 显示全部楼层 |阅读模式
1、用go语言写amr9上的程序,比如操作gpio  串口 网口 声卡啥的,go语言应该要调用c程序的接口,有没有啥不好搞的地方?
2、go语言写的程序,是不是和Python一样,特别费ram和rom。
3、go语言入门,看啥视频好?go编程基础?我一直用C在搞东西。
4、go语言做PC端的测试小工具,可以做界面么?

谢谢大家。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出235入235汤圆

发表于 2020-2-9 19:12:27 | 显示全部楼层
go是编译语言,但需要根据目标系统编译。
bilibili.com有视频教程。

出0入36汤圆

 楼主| 发表于 2020-2-9 19:15:31 | 显示全部楼层
lyping1987 发表于 2020-2-9 19:12
go是编译语言,但需要根据目标系统编译。
bilibili.com有视频教程。

嗯,https://www.bilibili.com/video/a ... 3246893447461575512
我找了个视频,正在看。

出0入20汤圆

发表于 2020-2-9 19:28:45 来自手机 | 显示全部楼层
redworlf007 发表于 2020-2-9 19:15
嗯,https://www.bilibili.com/video/av20395345?from=search&seid=13246893447461575512
我找了个视频, ...

我正在学,准备搞到openwrt上

出0入0汤圆

发表于 2020-2-9 19:31:54 | 显示全部楼层
嵌放式用GO的几乎没有吧

出0入36汤圆

 楼主| 发表于 2020-2-9 19:38:05 | 显示全部楼层
wenming 发表于 2020-2-9 19:28
我正在学,准备搞到openwrt上

我看有人在openwrt上用,但是据说内存消耗比较严重。

出0入36汤圆

 楼主| 发表于 2020-2-9 19:38:27 | 显示全部楼层
hell-prototypes 发表于 2020-2-9 19:31
嵌放式用GO的几乎没有吧

我搜了坛子里有大虾在用。

出0入0汤圆

发表于 2020-2-9 19:40:53 | 显示全部楼层
redworlf007 发表于 2020-2-9 19:38
我搜了坛子里有大虾在用。

那也是自己玩的,真要走偏门建议上Rust,Rust的在嵌入式的应用潜力比Go强太多

出0入0汤圆

发表于 2020-2-9 19:41:23 | 显示全部楼层
同样觉得没有必要在嵌入式用go

出0入0汤圆

发表于 2020-2-9 19:43:01 | 显示全部楼层
hell-prototypes 发表于 2020-2-9 19:40
那也是自己玩的,真要走偏门建议上Rust,Rust的在嵌入式的应用潜力比Go强太多 ...

支持,在学习rust中。

出0入36汤圆

 楼主| 发表于 2020-2-9 19:43:18 | 显示全部楼层
chengluoran 发表于 2020-2-9 19:41
同样觉得没有必要在嵌入式用go

那写PC上的测试工具,用go做,咋样?嵌入式貌似还是C最好用了。

出0入0汤圆

发表于 2020-2-9 19:46:46 | 显示全部楼层
测试工具 是否 python 比较流行些。

出0入228汤圆

发表于 2020-2-9 19:49:38 来自手机 | 显示全部楼层
相同场合.go比python绝对爽

出0入36汤圆

 楼主| 发表于 2020-2-9 19:51:13 | 显示全部楼层
wxws 发表于 2020-2-9 19:49
相同场合.go比python绝对爽

Python我在arm9+linux上用了,Python的解释器就要占40M的空间,还有的Python的有的库,还要占空间,每次py的程序,启动的时候非常慢。

出0入0汤圆

发表于 2020-2-9 20:04:03 | 显示全部楼层
redworlf007 发表于 2020-2-9 19:51
Python我在arm9+linux上用了,Python的解释器就要占40M的空间,还有的Python的有的库,还要占空间,每次p ...

micropython了解下。
自己用的测试工具用python爽飞,网上资料大把,比GO多多了

出0入36汤圆

 楼主| 发表于 2020-2-9 20:08:11 | 显示全部楼层
hell-prototypes 发表于 2020-2-9 20:04
micropython了解下。
自己用的测试工具用python爽飞,网上资料大把,比GO多多了 ...

micropython上是不是很多Python上库没有?micropython上的库,要用到嵌入式上,要交叉编译么?

出0入0汤圆

发表于 2020-2-9 20:11:45 | 显示全部楼层
go后续潜力应该也是比较大的,特别是网络方面,后续嵌入式系统的资源会比较充裕,比如树莓派上go应该就不错

出0入0汤圆

发表于 2020-2-9 20:22:44 | 显示全部楼层
arm9跑go完全没问题,驱动接口都是基于文件的,根本不用调用c接口。ram和rom肯定大一些,但是开发效率快的飞起,pc界面可以做,我有个正式项目在用

出0入0汤圆

发表于 2020-2-9 20:27:47 | 显示全部楼层
redworlf007 发表于 2020-2-9 20:08
micropython上是不是很多Python上库没有?micropython上的库,要用到嵌入式上,要交叉编译么? ...

要移植的。
库肯定没有PC上的那么全,可以上官网上看下文档

出0入0汤圆

发表于 2020-2-9 20:37:37 | 显示全部楼层
.net core 默默飘过

出0入20汤圆

发表于 2020-2-9 20:38:47 来自手机 | 显示全部楼层
hell-prototypes 发表于 2020-2-9 20:04
micropython了解下。
自己用的测试工具用python爽飞,网上资料大把,比GO多多了 ...

不是一个级别的东西,没有可比性

出0入0汤圆

发表于 2020-2-9 20:42:39 | 显示全部楼层
1、go里面可以直接嵌入C语言。2、go编译完毕之后比python节约资源。3、有C的基础,基本不用看太多的视频,看看菜鸟教程基本上就够了。4、go的GUI不完善,有可以用的,命令行的居多,不过可以搭配go的WEB功能做WEB界面

出0入36汤圆

 楼主| 发表于 2020-2-9 20:46:39 | 显示全部楼层
hell-prototypes 发表于 2020-2-9 20:27
要移植的。
库肯定没有PC上的那么全,可以上官网上看下文档

那个网嵌入式上移植Python的库,貌似是个比较费时的事情。

出0入36汤圆

 楼主| 发表于 2020-2-9 20:47:10 | 显示全部楼层
zhd1021 发表于 2020-2-9 20:42
1、go里面可以直接嵌入C语言。2、go编译完毕之后比python节约资源。3、有C的基础,基本不用看太多的视频, ...

现在的测试工具,用浏览器打开当界面,我感觉也不错。

出0入36汤圆

 楼主| 发表于 2020-2-9 20:49:12 | 显示全部楼层
FireBrain 发表于 2020-2-9 20:22
arm9跑go完全没问题,驱动接口都是基于文件的,根本不用调用c接口。ram和rom肯定大一些,但是开发效率快的 ...

我打算用Nuc980做串口服务器,300M主频,跑Linux,64M的ddr,128M 256M 或者512M的flash,8串转一个网口,用go写,资源应该足够吧?

出0入0汤圆

发表于 2020-2-9 21:22:23 | 显示全部楼层
redworlf007 发表于 2020-2-9 20:49
我打算用Nuc980做串口服务器,300M主频,跑Linux,64M的ddr,128M 256M 或者512M的flash,8串转一个网口 ...

绰绰有余

出0入0汤圆

发表于 2020-2-9 21:24:11 | 显示全部楼层
redworlf007 发表于 2020-2-9 19:43
那写PC上的测试工具,用go做,咋样?嵌入式貌似还是C最好用了。

pc上有gui的就qt或者microsoft那一套。无gui用go很方便,python也行。

出0入0汤圆

发表于 2020-2-9 21:28:45 | 显示全部楼层
1.没用过2.go在pc上很省内存的,毕竟是编译型的。3。go买本入门书看看就行了,入门随便一本就行,go语言本身很简单。4,go可以做界面,有个界面库的,但是很简陋。  另外:go最好用的地方时,做web后台和高并发的应用。别的优势感觉不明显。

出0入33汤圆

发表于 2020-2-9 21:38:42 来自手机 | 显示全部楼层
redworlf007 发表于 2020-2-9 19:38
我看有人在openwrt上用,但是据说内存消耗比较严重。

我有在openwrt上用,ram还好,主要是rom占用相对openwrt来说还是比较大的,随便编译一个都有好几兆。

出0入148汤圆

发表于 2020-2-9 22:00:07 来自手机 | 显示全部楼层
同样也觉得rust潜力大点,毕竟没有运行时,gc,并且stm32都可以直接跑

出0入0汤圆

发表于 2020-2-9 23:06:07 | 显示全部楼层
go最大的优势是只依赖glibc,这样部署起来很方便,但是程序肯定会变大。go还有一个优势是goroutine,开多了内存自然耗的大。
go和C基本可以无缝衔接,用来调用C接口完全没问题。
go用来做web界面还可以,做其他界面还是算了吧。

出0入0汤圆

发表于 2020-2-9 23:15:56 | 显示全部楼层
Python也叫费?你用过java就知道什么叫费内存了。

出0入36汤圆

 楼主| 发表于 2020-2-10 01:30:24 | 显示全部楼层
FireBrain 发表于 2020-2-9 20:22
arm9跑go完全没问题,驱动接口都是基于文件的,根本不用调用c接口。ram和rom肯定大一些,但是开发效率快的 ...

你在PC上咋做界面的?web么?

出0入36汤圆

 楼主| 发表于 2020-2-10 01:41:30 来自手机 | 显示全部楼层
dou_yuyu 发表于 2020-2-9 21:28
1.没用过2.go在pc上很省内存的,毕竟是编译型的。3。go买本入门书看看就行了,入门随便一本就行,go语言本 ...

好的,谢谢了。

出0入0汤圆

发表于 2020-2-10 09:07:04 | 显示全部楼层
redworlf007 发表于 2020-2-10 01:30
你在PC上咋做界面的?web么?

go+h5做的上位机软件

出0入0汤圆

发表于 2020-2-10 11:32:23 | 显示全部楼层
redworlf007 发表于 2020-2-9 20:49
我打算用Nuc980做串口服务器,300M主频,跑Linux,64M的ddr,128M 256M 或者512M的flash,8串转一个网口 ...

我们公司也在用nuc980,使用Qt来做的,web配置,资源消耗还可以

出0入36汤圆

 楼主| 发表于 2020-2-10 11:36:35 来自手机 | 显示全部楼层
Baldwin 发表于 2020-2-10 11:32
我们公司也在用nuc980,使用Qt来做的,web配置,资源消耗还可以

qt c++不费资源,但是c++复杂,开发效率低,每次新塘升级内核和编译工具,qt和qt的库都要重新移植、编译一次,感觉比较麻烦。

出0入0汤圆

发表于 2020-2-10 20:47:53 | 显示全部楼层
redworlf007 发表于 2020-2-10 11:36
qt c++不费资源,但是c++复杂,开发效率低,每次新塘升级内核和编译工具,qt和qt的库都要重新移植、编译 ...

内核经常升它干嘛呢,稳定就行,我们一般都是选一个长期支持版本如4.14,基本上没有重大问题就不会去升内核了。而且照理说内核没有啥和QT相关的重大变化,应该不需要重新编译啊?

出0入0汤圆

发表于 2020-2-10 23:29:42 | 显示全部楼层
我正好就是用go在嵌入式开发,技术栈就是golang+vue全家桶, 什么gpio串口什么的,按linux哲学来,皆文件. 目前来说,rom大约在10M,即使再怎么增加功能,我也超不过20M, 由于功能少,ram大约在15M左右.  优势在于一键移植,极少依赖(仅glibc),语法简单. 你会c,简直是为这部份人量身定做.

出0入0汤圆

发表于 2020-2-10 23:45:59 | 显示全部楼层
go在高端嵌入式上应该跟计算机上没啥区别吧?

出0入36汤圆

 楼主| 发表于 2020-2-11 00:01:38 | 显示全部楼层
jameszxj 发表于 2020-2-10 20:47
内核经常升它干嘛呢,稳定就行,我们一般都是选一个长期支持版本如4.14,基本上没有重大问题就不会去升内 ...

新塘的buildroot里面东西更新了,他会把编译器版本更新,编译器版本更新了,以前移植的qt就得重新编译,会出现有的编译不过的情况。

出0入36汤圆

 楼主| 发表于 2020-2-11 00:03:27 | 显示全部楼层
slzm40 发表于 2020-2-10 23:29
我正好就是用go在嵌入式开发,技术栈就是golang+vue全家桶, 什么gpio串口什么的,按linux哲学来,皆文件. 目前 ...

这个glibc是Linux自带的吧?

出0入0汤圆

发表于 2020-2-11 08:47:12 | 显示全部楼层
本帖最后由 slzm40 于 2020-2-11 08:49 编辑
redworlf007 发表于 2020-2-11 00:03
这个glibc是Linux自带的吧?


是linux都带,这个c标准库... 总的来说,我是没遇到过需要解决环境一类的问题. 目前用于openwrt和arm系列.  openwrt缺点就是rom有点小(只有32M).

我有发过golang的资料集,我是两年前学的,那时都没这么多教程视频,看无闻大神的视频入的门,看官方推荐的书开始慢慢实践起来的.

出0入36汤圆

 楼主| 发表于 2020-2-11 09:40:57 | 显示全部楼层
slzm40 发表于 2020-2-11 08:47
是linux都带,这个c标准库... 总的来说,我是没遇到过需要解决环境一类的问题. 目前用于openwrt和arm系列.  ...

rom你可以换大的片子吧?

出0入0汤圆

发表于 2020-2-11 10:09:25 | 显示全部楼层
redworlf007 发表于 2020-2-11 09:40
rom你可以换大的片子吧?

可以,但我不会,哈哈. 听说需要改驱动,不过Openwrt用的少,目前主要用的是arm5,ram和rom都是64M

出0入36汤圆

 楼主| 发表于 2020-2-11 10:10:42 来自手机 | 显示全部楼层
slzm40 发表于 2020-2-11 10:09
可以,但我不会,哈哈. 听说需要改驱动,不过Openwrt用的少,目前主要用的是arm5,ram和rom都是64M ...

arm5?啥芯片?

出0入0汤圆

发表于 2020-2-11 13:49:47 | 显示全部楼层
redworlf007 发表于 2020-2-10 11:36
qt c++不费资源,但是c++复杂,开发效率低,每次新塘升级内核和编译工具,qt和qt的库都要重新移植、编译 ...

能否介绍一下用go开发嵌入式应用的话,有哪些优势呢?用Qt这个框架好处是很多c++库都有,特别是嵌入式里常用的串口、网络、IO等

出0入71汤圆

发表于 2020-2-11 14:40:05 | 显示全部楼层
用VB.NET,开发起来快得吓死人,几个按钮曲线什么的分分钟搞定。

出0入0汤圆

发表于 2020-2-11 14:49:28 | 显示全部楼层
go就用来做服务器,其它用法不是不可以,都是偏门,社会需求不大,不赚钱,支持少,浪费时间。 要做测试小工具,labview,QT不是很好?

出0入0汤圆

发表于 2020-2-11 15:00:13 | 显示全部楼层
go的初衷确实是为了解决分布式大数据中c++的缺点发明的,但也是可以用在其他方面的。民间高手很多在探索go在嵌入式方面的应用,其中tinygo做的很不错,已经支持很多架构芯片,最近据说也得到了google的支持。

出0入0汤圆

发表于 2020-2-11 15:31:00 | 显示全部楼层
之前有了解过觉得做中间件与服务多些,一般企业运用还是JAVA成熟

出0入36汤圆

 楼主| 发表于 2020-2-11 19:22:51 | 显示全部楼层
Baldwin 发表于 2020-2-11 13:49
能否介绍一下用go开发嵌入式应用的话,有哪些优势呢?用Qt这个框架好处是很多c++库都有,特别是嵌入式里 ...

我感觉C++比较复杂,开发起来费事而且效率低,我看我们软件搞个串口还要调用啥库,串口收发还只能同步,搞不成异步,每次发送了,然后等待一段时间接受,无法忍受那种程序,还调用的qt的啥线程库,cpu占用率120%。。。

出0入36汤圆

 楼主| 发表于 2020-2-11 19:24:28 | 显示全部楼层
相由心生 发表于 2020-2-11 14:49
go就用来做服务器,其它用法不是不可以,都是偏门,社会需求不大,不赚钱,支持少,浪费时间。 要做测试小 ...

现在用的新塘nuc970系列的芯片,基本干的事情,就是n多个串口采集数据,然后通过一个网口发走,算是网关,应该也算类似服务器的东西吧?

出0入0汤圆

发表于 2020-2-11 19:39:26 | 显示全部楼层
redworlf007 发表于 2020-2-11 19:24
现在用的新塘nuc970系列的芯片,基本干的事情,就是n多个串口采集数据,然后通过一个网口发走,算是网关 ...

如果有10000个串口以上,就算。
但显然,不是

出0入0汤圆

发表于 2020-2-11 19:50:16 | 显示全部楼层
redworlf007 发表于 2020-2-11 19:22
我感觉C++比较复杂,开发起来费事而且效率低,我看我们软件搞个串口还要调用啥库,串口收发还只能同步, ...

串口操作个人感觉就是原子操作,发送然后定时一段时间,接收正确解析报文,接收超时作判断;qt可以用定时器的槽函数,也不用cpu等待的;用go难道不是这样处理吗?有其他更好的处理方式吗?

出0入36汤圆

 楼主| 发表于 2020-2-11 20:19:24 来自手机 | 显示全部楼层
Baldwin 发表于 2020-2-11 19:50
串口操作个人感觉就是原子操作,发送然后定时一段时间,接收正确解析报文,接收超时作判断;qt可以用定时 ...

go我还在学,Linux  C语言,我是专门有一个线程,每10ms运行一次,检查发送队列不空,就发走,同时select从串口缓存接收数据到接收队列,其他的线程要发东西,就给发送队列里面扔,解析的线程检查接收队列不空就解析,这样发送和接收就是异步了。

出0入36汤圆

 楼主| 发表于 2020-2-11 20:20:28 来自手机 | 显示全部楼层
相由心生 发表于 2020-2-11 19:39
如果有10000个串口以上,就算。
但显然,不是

我想在嵌入式上go替代C,是不是开发速度回快一些。

出0入0汤圆

发表于 2020-2-11 20:21:17 | 显示全部楼层
Baldwin 发表于 2020-2-11 19:50
串口操作个人感觉就是原子操作,发送然后定时一段时间,接收正确解析报文,接收超时作判断;qt可以用定时 ...

各有优缺点,我有一朋友是专用qt的,带ui比较重. 功能和我一样. qt写资源较紧张的场合,太占资源.所以我和我朋友在一些成本较敏感的场合会用go重构.
用go做嵌入式,我主要是为了代替c而用于快速开发的,个人感觉c++有些复杂,可能是我用不好的原因.
市场的确比较少,算不上主流. 但是在某些场合有用武之地,比如像我这样需要统一网关和服务器端语言,以及某些框架. 就选择了go而已.
我见过有个公司统一网关和服务器语言几乎采用js的.
其实个人来讲,用go做嵌入式因为没有ui,需要h5的知识体系,会涉及很多技术栈. 比如我这样需要vue全家桶来做web配置界面.
总得来说,自己看情况使用和选择

出0入0汤圆

发表于 2020-2-11 20:23:52 | 显示全部楼层


没仔细关注,因为我用arm5编译就能跑, 只知道主频是300M,4串口,单网口,1个wifi,几个gpio,几个灯,还有个usb和可配置的4G

出0入0汤圆

发表于 2020-2-11 20:25:38 | 显示全部楼层
本帖最后由 slzm40 于 2020-2-11 20:32 编辑
redworlf007 发表于 2020-2-11 20:20
我想在嵌入式上go替代C,是不是开发速度回快一些。


代替c要看场合,太接近硬件级的,不适合.
目前本人就是用来代替c做linux系统上的应用开发.
这么说吧,说点简单我最近在做的,用于代替c而开发出来的项目或相关涉及的东西
modbus规约转换网关
iec104规约转换网关,
串口服务器
阿里云mqtt设备接入网关
物联网设备接入网关

大的不涉及网关的可能就是物联网后台了,这个比较大,是公司的项目.

做为过来人,楼主先学着,你会发现真香!!! 到时你再回看,不会后悔的

出0入36汤圆

 楼主| 发表于 2020-2-11 20:33:10 | 显示全部楼层
slzm40 发表于 2020-2-11 20:25
代替c要看场合,太接近硬件级的,不适合.
目前本人就是用来代替c做linux系统上的应用开发.
这么说吧,说点 ...

我也是做Linux上的开发,我用的是新塘那个nuc972  980  300m主频的,几个串口 几个网口,我感觉C开发太慢了,qt c++太复杂,Python我用了太耗资源了。。。一路摸索到go了。

请教一下,我如果用go语言在Linux上做网关,go有啥好用的框架么?因为我在nuc972上用总线扩展了16个9针的串口,接16个串口设备,做数据交换。

出0入0汤圆

发表于 2020-2-11 20:36:41 | 显示全部楼层
redworlf007 发表于 2020-2-11 20:33
我也是做Linux上的开发,我用的是新塘那个nuc972  980  300m主频的,几个串口 几个网口,我感觉C开发太慢 ...


因为我不会c在linux开发,所以确切的说我不算是做Linux上的开发. 我做物联网相关的.
可以说说需要涉及哪些东西. 哪些协议. 用web做ui么, 串口主要做什么. 然后我好推荐.

出0入36汤圆

 楼主| 发表于 2020-2-11 20:43:58 | 显示全部楼层
slzm40 发表于 2020-2-11 20:36
可以说说需要涉及哪些东西. 哪些协议. 用web做ui么, 串口主要做什么. 然后我好推荐  ...

我要干的事情:
1、比如16个串口,接16个串口设备,16种不同设备,通讯协议不同;
2、通过网络配置这16串口,每个串口跑哪一种设备通讯协议;
3、通过网络配置,这个16个设备中,哪2个,或者哪几个设备之间可以数据转发,就是A设备的数据来了,我解析后,再按B设备的协议打包,发给B设备。
4、可以通过网页登录这个设备配置一些信息,或者通过网络协议配置。
5、其他的就是控制几个io口,控制声卡啥的播语音。

这个功能用C开发,要做好,还是蛮费时间的。

出0入0汤圆

发表于 2020-2-11 20:56:57 | 显示全部楼层
本帖最后由 slzm40 于 2020-2-11 21:03 编辑
redworlf007 发表于 2020-2-11 20:43
我要干的事情:
1、比如16个串口,接16个串口设备,16种不同设备,通讯协议不同;
2、通过网络配置这16串 ...


说简单的就是 规约转换器,你是电力行业的?

嵌入式web服务方面用 < github.com/go-chi/chi > 这个库,此库兼容标准库,编译后体积最小, 如果是服务器后台用gin, 如果吃力的话,初学可以考虑beego入门.
登录授权采用jwt 用<github.com/go-chi/jwtauth>
跨域问题采用github.com/go-chi/cors 这个主要是前后端分离不同域
INI配置文件用 < github.com/go-ini/ini >
YAML配置文件用 < gopkg.in/yaml >
嵌入式里 json库建议用标准库, 服务端考虑速度快的 < github.com/json-iterator/go >
数据校验方面采用 < github.com/go-playground/validator >
如果是数据库采用sqlite3建议用gorm < github.com/jinzhu/gorm >,当然xorm那个库也不错,
modbus库可以考虑下我写的用于生产的 < github.com/thinkgos/gomodbus  >
串口库可以看下< github.com/goburrow/serial > 还有几个串口库也行,这里不找出来了.
如果是前后端分离,建议采用swagger标准,可以看下<github.com/swaggo/swag> < github.com/swaggo/http-swagger >
前后端分离像html,js,静态文件采用<github.com/rakyll/statik >进行打包到二进制里 ,现在官方打算出静态文件绑定,这个以后会出在标准库里.
网络相关部份用标准库就行了.
其它相关标准库都能解决. 暂时就想到这些.

h5做ui配置界面,目前我是用vue全家桶,在探索时我用过bootstrap+ jquery实现了一个版本. 不符合工程哲学,放弃了.  这个自己选个擅长的.
因为我是前后端完全分离,所以用什么做ui与我用go写并不相关,我只写好API接口





出0入36汤圆

 楼主| 发表于 2020-2-11 21:01:44 | 显示全部楼层
slzm40 发表于 2020-2-11 20:56
说简单的就是 规约转换器,你是电力行业的?

嵌入式web服务方面用 < github.com/go-chi/chi > 这个库,此库 ...

不是电力,给政府做的,特殊行业定制,各种协议转换,我先看看你说的这些库,谢谢了。

出0入0汤圆

发表于 2020-2-11 21:07:24 | 显示全部楼层
redworlf007 发表于 2020-2-11 21:01
不是电力,给政府做的,特殊行业定制,各种协议转换,我先看看你说的这些库,谢谢了。 ...

  我是给电力做的,主要也是规约协议转换, 很多定制的. 具体协议层面还是得自己实现啊.
你这个主要就是规约转发,工作量都在如何配置,如何进行转发.  其它都是小事情.

出0入36汤圆

 楼主| 发表于 2020-2-11 21:09:15 | 显示全部楼层
slzm40 发表于 2020-2-11 21:07
我是给电力做的,主要也是规约协议转换, 很多定制的. 具体协议层面还是得自己实现啊.
你这个 ...

你们应该用的也是新塘的片子吧,看你的那个参数描述。
新塘的片子在电力网关上大把的用。

出0入0汤圆

发表于 2020-2-11 21:15:50 | 显示全部楼层
本帖最后由 slzm40 于 2020-2-11 21:18 编辑
redworlf007 发表于 2020-2-11 21:09
你们应该用的也是新塘的片子吧,看你的那个参数描述。
新塘的片子在电力网关上大把的用。 ...


虽然是我在网上找的现成的,确实不知道什么片子,只知道300M主频,64M ROM,64M RAM. 这应该已经是能用的最低配了吧. 如果不考虑使用网页升级程序,双32M都够我用了.
写linux上应用级的,并不在乎用什么片子.资源够用就行了.  
然后go对交叉编译比较方便,只要你没用C库,直接交叉编译就行了. 需要c库的话,就得配一下交叉编译链.

出0入36汤圆

 楼主| 发表于 2020-2-11 21:19:02 | 显示全部楼层
slzm40 发表于 2020-2-11 21:15
虽然是我在网上找的现成的,确实不知道什么片子,只知道300M主频,64M ROM,64M RAM.
写linux上应用级的,并 ...

好的,我先继续看视频,先把基础部分看完。

出0入0汤圆

发表于 2020-2-11 22:03:13 | 显示全部楼层
slzm40 发表于 2020-2-11 21:15
虽然是我在网上找的现成的,确实不知道什么片子,只知道300M主频,64M ROM,64M RAM. 这应该已经是能用的最低 ...

你好,能帮我推荐一下go的库吗?我的需求是这样的,1~2个串口通信,主要是串口定时采集数据,然后按照协议定时上报,或者接收服务器的命令,然后串口发送命令给设备
1、串口通信,modbus协议或自定义协议
2、网络通信,mqtt协议或modbus-tcp协议
3、json解析
4、sqlite数据存储
5、支持脚本,比如lua或者其他
6、http协议,主要解析api,处理get或者post请求,
7、静态web,需要跨域请求

谢谢!
目前已经用qt框架打通了1,2,3,6,7;考虑后期应用,还想试试go框架

出0入0汤圆

发表于 2020-2-12 09:29:36 | 显示全部楼层
本帖最后由 slzm40 于 2020-2-12 09:33 编辑
Baldwin 发表于 2020-2-11 22:03
你好,能帮我推荐一下go的库吗?我的需求是这样的,1~2个串口通信,主要是串口定时采集数据,然后按照协 ...


你说的那些,除了5没在用,其它都在用了

1、串口通信,modbus可以看下<github.com/goburrow/modbus> 不过它不建议生产使用,可以考虑下我写的用于生产的<github.com/thinkgos/gomodbus > 串口库可以看下 <github.com/goburrow/serial> ,其它要自己找下,我主用两个串口库.
2、网络通信,mqtt协议客户端用的是<github.com/eclipse/paho.mqtt.golang>, 服务端有一个叫gomqtt <地址不找了,你搜一下>, modbus-tcp 上面我写的库实现了客户端和服务端,其它基本网络通用直接标准库.
3、json解析,建议直接标准库,缩小代码尺寸, 求解析速度快可以用< github.com/json-iterator/go >
4、sqlite数据存储 , 库用< github.com/mattn/go-sqlite3 >,不想拼接sql,考虑用orm,gorm用< github.com/jinzhu/gorm >,当然xorm那个库也不错,
5、支持脚本,lua脚本看下<github.com/yuin/gopher-lua>, js脚本看下<github.com/robertkrimen/otto>,我也在考虑支持脚本,打算是用js,还没开始使用.
6、http协议,这个是客户端?? 用标准库即可.
7、静态web(要跨域), 这具是sever吧,如果你熟悉cgi,标准库有实现fastcgi,cgi方面不太懂, 如果非cgi,功能简单直接标准库,如果为省麻烦建议< github.com/go-chi/chi > 这个库,此库兼容标准库,编译后体积最小,跨域为配套<github.com/go-chi/cors>,授权登录建议JWT<github.com/go-chi/jwtauth>

加8. 考虑到你可能有静态文件,又想单文件布署,可以将静态文件打包进二进制,在官方没出打包功能,可以考虑下<github.com/rakyll/statik >将静态文件打包到二进制里.
加9.考虑到可能你是采用API的JSON传输,考虑下< github.com/go-playground/validator >进行数据校验.
加10. h5方面这个就不建议了,我用的是vue全家桶

出0入0汤圆

发表于 2020-2-12 10:20:18 | 显示全部楼层
slzm40 发表于 2020-2-12 09:29
你说的那些,除了5没在用,其它都在用了

1、串口通信,modbus可以看下 不过它不建议生产使用,可以考虑下我 ...

非常感谢!
1、关于5那个脚本,考虑用lua,js好像消耗资源比较多
2、web那个我是用静态web服务器,用的easyui框架,浏览器发送ajax请求给httpserver,应用处理http请求就可以;vue消耗资源怎么样,我们有款产品内存只有64M

出0入0汤圆

发表于 2020-2-12 10:48:02 | 显示全部楼层
本帖最后由 slzm40 于 2020-2-12 10:52 编辑
Baldwin 发表于 2020-2-12 10:20
非常感谢!
1、关于5那个脚本,考虑用lua,js好像消耗资源比较多
2、web那个我是用静态web服务器,用的eas ...


lua,js脚本那个还没用过, 有机会试试.
除去上面那个,目前64M够用.不够再换个大的内存.
vue中把所有东西改为生产级别的, 不要的全去掉,会比我原来用bootstrap+jquery写的会大一些,  目前我这边不到1M.  
我用的是element-ui, 用vue cli脚手架进行工程化管理, 选vue原因是我ui太菜,bootstrap和jquery让我一直操作DOM...而我对DOM很无感,而vue让我只关心数据,省了不少心.

看了你这个方式,我估计你是前后端完全分离的方式,http server只提供api服务. 我目前也是这种方式.

出0入0汤圆

发表于 2020-2-12 14:12:29 | 显示全部楼层
slzm40 发表于 2020-2-12 10:48
lua,js脚本那个还没用过, 有机会试试.
除去上面那个,目前64M够用.不够再换个大的内存.
vue中把所有东西改 ...



我采用的是这种框架,nginx作为静态web服务器,同时作为代理服务器,处理跨域请求;
应用只这边处理ajax的请求,不处理web请求;
因为不是完全的前后端分析,web服务还是要部署在板子上的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出90入0汤圆

发表于 2020-2-12 14:18:57 | 显示全部楼层
redworlf007 发表于 2020-2-11 20:43
我要干的事情:
1、比如16个串口,接16个串口设备,16种不同设备,通讯协议不同;
2、通过网络配置这16串 ...

请教一下,你的串口扩展芯片用的是哪一个?稳定不?

出0入0汤圆

发表于 2020-2-12 15:38:20 | 显示全部楼层
本帖最后由 slzm40 于 2020-2-12 15:47 编辑
Baldwin 发表于 2020-2-12 14:12
我采用的是这种框架,nginx作为静态web服务器,同时作为代理服务器,处理跨域请求;
应用只这边处理aja ...


你这个算是前后端分离了.我那个也算的.只是我不想多nginx,把nginx这功能直接并在应用里而已. 代码也不多,大约100行左右,而且和应用毫无关系.
不过你这个升级程序和升级静态文件是个麻烦事. 我用go把html,css,js,图片直接打包到二进制,布署只有一个文件.

然后问句,你qt能跑在64M的ram里,我不太相信...  我朋友是qt的死忠,他要的资源至少是256M的ram, 跑起来基本是占用200M内存

出0入36汤圆

 楼主| 发表于 2020-2-12 16:40:18 | 显示全部楼层
zhucezhuanyong 发表于 2020-2-12 14:18
请教一下,你的串口扩展芯片用的是哪一个?稳定不?

CH438,Linux下面做个ebi总线驱动,暂时没发现啥问题。

出0入36汤圆

 楼主| 发表于 2020-2-12 16:41:33 | 显示全部楼层
slzm40 发表于 2020-2-12 15:38
你这个算是前后端分离了.我那个也算的.只是我不想多nginx,把nginx这功能直接并在应用里而已. 代码也不多, ...

qt能跑64M的ram,做界面,而且64m还用不完,其他应用程序还在跑,哈哈。

出0入0汤圆

发表于 2020-2-12 16:49:00 | 显示全部楼层
slzm40 发表于 2020-2-12 15:38
你这个算是前后端分离了.我那个也算的.只是我不想多nginx,把nginx这功能直接并在应用里而已. 代码也不多, ...

用过你的Go modbus package,当时还发过issue,那个package确实不适合生产。这些推荐不错。另外有啥快速学习前端的指南?

出0入0汤圆

发表于 2020-2-12 17:13:06 | 显示全部楼层
本帖最后由 slzm40 于 2020-2-12 17:21 编辑
QQ373466062 发表于 2020-2-12 16:49
用过你的Go modbus package,当时还发过issue,那个package确实不适合生产。这些推荐不错。另外有啥快速 ...


你说的那个goburrow的modbus库不是我的,它明确有说不建议生产使用... 我写的是<github.com/thinkgos/gomodbus>这个,感觉还需要优化.

前端我用vue,推荐b站黑马这个,很全很细简直手把手了,看完一半,已经足够我用了,<https://www.bilibili.com/video/av79092404> 前提是需要会js,html,css基础知识后.
前端基础知识体系,我只推荐一个人,黑马程序员的pink老师,我贴个js的吧<https://www.bilibili.com/video/av56979800> 其它你在b站找找.虽然他讲的很基础,不过每个知识点都带例子,最最主要还会把讲过的一些知识点串起来做个小项目,最后再来个大一点的项目,超适合我这个初学的菜鸡.
成全大家的懒, 直接给Pink老师全家桶教学地址<https://www.bilibili.com/read/cv ... _636f6d6d656e74.149>
就这样,我还整整花了三个月在学完基础到用vue上项目,几乎把业余时间投进去了.

出0入0汤圆

发表于 2020-2-12 19:43:41 | 显示全部楼层
slzm40 发表于 2020-2-12 15:38
你这个算是前后端分离了.我那个也算的.只是我不想多nginx,把nginx这功能直接并在应用里而已. 代码也不多, ...

也要看用什么资源的,我平常也就串口、网络、数据库这些的,64M完全够用啊

出0入0汤圆

发表于 2020-2-12 19:44:52 | 显示全部楼层
slzm40 发表于 2020-2-12 17:13
你说的那个goburrow的modbus库不是我的,它明确有说不建议生产使用... 我写的是这个,感觉还需要优化.

前 ...

vue不太懂,哈哈

出0入0汤圆

发表于 2020-2-12 21:19:08 | 显示全部楼层
有 C 基础的话,go 搞起来挺快,一两周就能做产品。

出0入0汤圆

发表于 2020-2-12 21:20:37 | 显示全部楼层
我们用 MT7628,跑个 WS,MQTT,web 服务,Modbus,使用 upx 压缩后程序2MB左右,运行后占用内存10M 左右

出0入0汤圆

发表于 2020-2-12 23:28:26 | 显示全部楼层
VAN 发表于 2020-2-12 21:20
我们用 MT7628,跑个 WS,MQTT,web 服务,Modbus,使用 upx 压缩后程序2MB左右,运行后占用内存10M 左右 ...

这个upx好啊, 去年年初研究时以为加壳后要解壳. 今天决定一试,发现解壳竟然是自动的..一下子程序缩小到原来的30%

感谢提醒,

出0入0汤圆

发表于 2020-2-13 11:07:33 | 显示全部楼层
用go开发的大神很多啊,有时间开源个小项目让我们也学习一下哈,比如物联网里的DTU,modbus转Mqtt啥的

出0入0汤圆

发表于 2020-2-13 11:19:48 | 显示全部楼层
嵌入式用go,确实特别呀。

出0入0汤圆

发表于 2020-2-13 13:19:18 | 显示全部楼层
Baldwin 发表于 2020-2-13 11:07
用go开发的大神很多啊,有时间开源个小项目让我们也学习一下哈,比如物联网里的DTU,modbus转Mqtt啥的 ...

github上挺多的,搜 modbus language:go   
NPS 和 FRP 也是 golang 开发的,可以参考
https://github.com/ehang-io/nps
https://github.com/fatedier/frp

出0入0汤圆

发表于 2020-2-14 17:45:34 | 显示全部楼层
VAN 发表于 2020-2-13 13:19
github上挺多的,搜 modbus language:go   
NPS 和 FRP 也是 golang 开发的,可以参考
https://github.c ...

有个小项目感觉上手更快,哈哈

出0入0汤圆

发表于 2020-2-14 18:06:23 | 显示全部楼层
redworlf007 发表于 2020-2-9 19:51
Python我在arm9+linux上用了,Python的解释器就要占40M的空间,还有的Python的有的库,还要占空间,每次p ...

1、有没有可能移植micropython 呢?  
2、你使用的PY是原生态的吗,那么如何自定义一条PY语句,并与硬件关联起来啊,方便提供一个网址参考吗?


出0入36汤圆

 楼主| 发表于 2020-2-14 18:11:55 | 显示全部楼层
kinsno 发表于 2020-2-14 18:06
1、有没有可能移植micropython 呢?  
2、你使用的PY是原生态的吗,那么如何自定义一条PY语句,并与硬件 ...

1、micropython我没搞过,因为新塘的文档和资料里面,有移植Python2.7的方法,而且新塘提供的buildroot里面,把Python勾选上,make后,就直接把Python做到文件系统里面了,傻瓜式操作。
2、Python在Linux操作硬件,就是打开文件。

出0入0汤圆

发表于 2020-2-14 18:27:18 | 显示全部楼层
本帖最后由 kinsno 于 2020-2-14 18:28 编辑
redworlf007 发表于 2020-2-14 18:11
1、micropython我没搞过,因为新塘的文档和资料里面,有移植Python2.7的方法,而且新塘提供的buildroot里 ...


因为你的PY肯定是作为脚本语言,在外面再写一点,不可能直接写死在代码里中了;  
我是想实现以下功能:

1.  用户在外面写一段小脚本语言,在python里写着

system.led.on()

2. 如何 让这句话 真的去点亮LED灯
   就是让 python 内的代码 对应 led


出0入36汤圆

 楼主| 发表于 2020-2-14 18:32:19 | 显示全部楼层
kinsno 发表于 2020-2-14 18:27
因为你的PY肯定是作为脚本语言,在外面再写一点,不可能直接写死在代码里中了;  
我是想实现以下功能:
...

那你让用户写个配置的脚步,然后Python程序,读配置脚步,然后执行对应的操作。

出0入0汤圆

发表于 2020-2-14 18:39:42 | 显示全部楼层
redworlf007 发表于 2020-2-14 18:32
那你让用户写个配置的脚步,然后Python程序,读配置脚步,然后执行对应的操作。 ...

好吧。。

但你觉得PY作为脚本语言,效率如何啊?  跟LUA比如何啊?

出0入0汤圆

发表于 2020-2-14 19:55:03 来自手机 | 显示全部楼层
redworlf007 发表于 2020-2-9 19:51
Python我在arm9+linux上用了,Python的解释器就要占40M的空间,还有的Python的有的库,还要占空间,每次p ...

解释器才几MB吧,我也是arm9,加好几个库才20多MB

出0入36汤圆

 楼主| 发表于 2020-2-14 20:37:31 | 显示全部楼层
kinsno 发表于 2020-2-14 18:39
好吧。。

但你觉得PY作为脚本语言,效率如何啊?  跟LUA比如何啊?

py启动很慢的,跑起来也慢,要想快就得调c库。

出0入36汤圆

 楼主| 发表于 2020-2-14 20:38:38 | 显示全部楼层
nanfang2000 发表于 2020-2-14 19:55
解释器才几MB吧,我也是arm9,加好几个库才20多MB


Python2.7的解释器,编译完放到板子上,40M占地面积,我也不知道里面都包含了啥。

你想想用Python写应用的人,一般会考虑什么占地面积,会考虑效率么?

出10入95汤圆

发表于 2020-2-14 21:34:37 | 显示全部楼层
技术更新真快!
自己严重掉队。

出0入0汤圆

发表于 2020-2-14 21:58:15 | 显示全部楼层
想学习go做个物联网web的后台,请问下有什么框架推荐呢

出0入0汤圆

发表于 2020-2-14 22:03:03 | 显示全部楼层
lghtjpu 发表于 2020-2-14 21:58
想学习go做个物联网web的后台,请问下有什么框架推荐呢

beego  gin  echo
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 08:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表