armos 发表于 2023-5-17 09:40:25

想做一个这样的软件,需要用到哪些知识呢?

软件设想如下:

1。硬件部分比较简单,就是一个通过串口读写I2C的电路板。
2。软件部分通过网页打开,每次需要使用电路板的时候需要在网页上登录一个用户名和密码,登录后直接在网页上控制读写。
3。每个板子对应一个用户名和密码。
4。需要写入的数据和内容全部由网页生成。

jasonzhu8888 发表于 2023-5-17 09:52:26

你这个需求不清楚啊。网页是在上位系统实现呢还是在嵌入式系统中实现?串口有多少个呢?一次对应多少个板子?用户密码验证是板子上处理还是板子仅仅是个序列号?

armos 发表于 2023-5-17 09:53:45

jasonzhu8888 发表于 2023-5-17 09:52
你这个需求不清楚啊。网页是在上位系统实现呢还是在嵌入式系统中实现?串口有多少个呢?一次对应多少个板子 ...
(引用自2楼)

网页是要做一个网站,客户每次用的时候需要登录一下网站才行,一次对应一个板子就行了,
登录用户名密码是和板子对应的,串口就一个哈,描述不太详细,我只把重点写出来了,抱歉

BOERLBH 发表于 2023-5-17 09:54:55

这不是 类似路由器 吗?专业搞软件的人 讲讲 这种 有没有简单的实现方式,要不要WEB服务器。。 我也好奇。。{:lol:}

armos 发表于 2023-5-17 09:57:06

BOERLBH 发表于 2023-5-17 09:54
这不是 类似路由器 吗?专业搞软件的人 讲讲 这种 有没有简单的实现方式,要不要WEB服务器。。 我也好奇 ...
(引用自4楼)

这类方式很多都是用网口来做的,我想直接用串口来做不知道行不行?如果用网口也可以,硬件本身只是起一个中转的作用

jasonzhu8888 发表于 2023-5-17 10:07:26

armos 发表于 2023-5-17 09:53
网页是要做一个网站,客户每次用的时候需要登录一下网站才行,一次对应一个板子就行了,
登录用户名密码 ...
(引用自3楼)

那就是上位系统实现对吧。上位系统提供一个web访问入口,同时支持一个串口接硬件设备对吧。

如果是这样,那开发的手段多了,java.net都可以。你熟悉那个语言就选哪个。

关键是你要用你选用的语言实现串口数据的封装,形成上位端可以调用的api,如果用户量少,数据库都可以不需要。

需要的知识如下:html jsjava/c#。如果选用java,那么使用spring框架比较容易。如果使用c# ,那就微软那一套web开发技术asp.net。

wxws 发表于 2023-5-17 10:07:42

本帖最后由 wxws 于 2023-5-17 10:15 编辑

webusb,简单使用就当成串口来理解 ,不过使用非常方便。
支持Hid

有个产品:
https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-22337494293.43.1b326bf6OCnE2i&id=684521182423

插在电脑 上后,访问 https://sayodevice.com/device
即可配置。

你需要的密码啥的,可以保存在服务器端,也可以保存在mcu里,都无所谓。


一般用自带usb的MCU来实现,比如便宜的wch系列。或32u4这类有大把的demo.

对了,上面那个产品,服务器我记得是开源的。https://github.com/SoulDee/sayo-device-web-hid

armos 发表于 2023-5-17 10:13:38

jasonzhu8888 发表于 2023-5-17 10:07
那就是上位系统实现对吧。上位系统提供一个web访问入口,同时支持一个串口接硬件设备对吧。

如果是这样 ...
(引用自6楼)

用户量不会多,最多1000个吧

armos 发表于 2023-5-17 10:17:13

wxws 发表于 2023-5-17 10:07
webusb,简单使用就当成串口来理解 ,不过使用非常方便。
支持Hid

(引用自7楼)

差不多的,就是软件在网站上,不是在本地。

mypear 发表于 2023-5-17 10:32:30

为啥网页?些界面软件

jasonzhu8888 发表于 2023-5-17 10:40:12

armos 发表于 2023-5-17 10:13
用户量不会多,最多1000个吧
(引用自8楼)

那加个数据库吧,mysql就行

armos 发表于 2023-5-17 11:03:54

mypear 发表于 2023-5-17 10:32
为啥网页?些界面软件
(引用自10楼)

不想把软件和算法放在本地电脑这样就不存在破解的风险了。

armos 发表于 2023-5-17 11:04:23

jasonzhu8888 发表于 2023-5-17 10:40
那加个数据库吧,mysql就行
(引用自11楼)

100个呢?系统不想做那么复杂,没弄过数据库

Doding 发表于 2023-5-17 11:11:26

armos 发表于 2023-5-17 11:03
不想把软件和算法放在本地电脑这样就不存在破解的风险了。
(引用自12楼)

把算法需要的输入数据打包扔给云服务器,算好的结果在本地软件里处理,硬件读写本地软件搞定。这样不用做备案什么的。

armos 发表于 2023-5-17 11:16:35

Doding 发表于 2023-5-17 11:11
把算法需要的输入数据打包扔给云服务器,算好的结果在本地软件里处理,硬件读写本地软件搞定。这样不用做 ...
(引用自14楼)

对的,算法和数据放在云端,这样不用担心破解的风险,这样应该可以。

lb0857 发表于 2023-5-17 11:30:02

芯片加密的思路就是这样

上位机和单片机二部分
单片机需要串口转以太网

上位机界面不多 数据不大情况下   免费的云端可以用起来   如有人等等云端

armos 发表于 2023-5-17 11:34:14

lb0857 发表于 2023-5-17 11:30
芯片加密的思路就是这样

上位机和单片机二部分
(引用自16楼)

对的,我的数据量很少,串口就可以了,一定要用网口吗,如果要用网口才行的话那用USB转的网口行不行呢?

jasonzhu8888 发表于 2023-5-17 12:02:06

armos 发表于 2023-5-17 11:04
100个呢?系统不想做那么复杂,没弄过数据库
(引用自13楼)

那用个文件简单写写就行了。可以不用数据库,其实1000个用户也没多少数据,文件存储够用

mPiDDR 发表于 2023-5-17 12:05:24

楼主的思路非常好,
硬件方面,可以用USB转串口,用户自己接到能上网的电脑,电脑打开浏览器,连接服务器操作。
前后端分离,需要做用户管理,权限设定以及设备绑定。
前端可以用VUE,Web Serial API与串口通信。

哪天你不高兴,可以把用户的权限给禁掉,或者把某个设备ID禁掉,拿着硬件也没有用。
当然,风险也很明显,如果服务器挂了,那硬件也变成砖了

armos 发表于 2023-5-17 12:33:31

本帖最后由 armos 于 2023-5-17 12:34 编辑

mPiDDR 发表于 2023-5-17 12:05
楼主的思路非常好,
硬件方面,可以用USB转串口,用户自己接到能上网的电脑,电脑打开浏览器,连接服务器操 ...
(引用自19楼)

我这个用户量注定不会太高,服务器多做几个备份,我想也花不了多少钱。
或者把基本软件放在本地,软件的高级功能做成这样的,就算网站挂了,硬件还是可以用,只是高级功能用不了。
如果要做这样的产品,需要哪些知识呢,硬件和单片机比较简单,需要网络通信?网站建设之类的吗?

xstt 发表于 2023-5-17 12:47:21

本帖最后由 xstt 于 2023-5-17 12:48 编辑

1。硬件部分比较简单,就是一个通过串口读写I2C的电路板。
主控+DTU或者串口转网口这类东西,或者自行做到可以连接服务器(成品的DTU或者LAN模块都可能直接配置不用做什么的了),然后确定是MQTT还是TCP还是HTTP(有读写行为基本就踢掉HTTP)

2。软件部分通过网页打开,每次需要使用电路板的时候需要在网页上登录一个用户名和密码,登录后直接在网页上控制读写。
3。每个板子对应一个用户名和密码。
4。需要写入的数据和内容全部由网页生成。

服务端用TCP的话做个【1】收发数据处理的程序,然后做个【2】网站后台,然后ID账号密码数据保存到【3】数据库。后台http提交操作由设备id提交数据到类似发送缓存 队列之类的,然后【1】收发数据处理程序根据发送队列中的设备ID发给对应的TCP客户端
【1】可以用C#/java/c++做
【2】可以用C#/java/python/go 等做
【3】mysql,sqlserver,sqlite,....等做

----
补充,如果用Linux还可能需要用到容器化部署

mcu5i51 发表于 2023-5-17 15:01:19

armos 发表于 2023-5-17 09:57
这类方式很多都是用网口来做的,我想直接用串口来做不知道行不行?如果用网口也可以,硬件本身只是起一个 ...
(引用自5楼)

可以直接用串口的,有网页版的串口助手

armos 发表于 2023-5-17 15:10:47

mcu5i51 发表于 2023-5-17 15:01
可以直接用串口的,有网页版的串口助手
(引用自22楼)

哈哈,谢谢谢谢,就是这个东西,运算和数据在网页完成,读写在本地

mPiDDR 发表于 2023-5-17 15:28:05

armos 发表于 2023-5-17 12:33
我这个用户量注定不会太高,服务器多做几个备份,我想也花不了多少钱。
或者把基本软件放在本地,软件的 ...
(引用自20楼)

下面有几条路,
1. 简单的使用你单 片机的优势,把硬件堆起来,楼上网友说的,把网络做到硬件里[网口 4Gwifi NBiot....],不需要电脑了。
服务器可以使用简单的TCP,去阿里,TX云那里租个服务器,固定IP的那种,写好你的TCP sever传到服务器运行。
所有的硬件都连接到服务器,找个加密通信算法,接口就自由发挥吧。
这样把难点降维到你能处理的领域。
以上需要TCP sever开发,windows 可以用C#,liunx可以用C,java。

2. 把硬件的网络去掉,只有串口与电脑联接,那就做个联服务器的上位机。和上面一样。不同的是PC端的上位机替代了网口

3. 如果你连上位机都不想做。这方面要学习的就很多了。大体是
服务器里运行了两套系统,前端是用户能看到的界面,负责与后台交互,一般是HTTP API。
后端,就是你的逻辑部分,实现数据存储,用户登录,权限管理,设备管理,这是要连接数据库的。

没这么可怕,目前有很多开源可商用的免费框架,找一个跑通了再改改。
这里推荐 https://gitee.com/y_project/RuoYi-Vue
基于SpringBoot+Vue前后端分离的Java快速开发框架,这个资料很多,还有B站视频。

PS ,对嵌入式工程师来说,这是另外一个世界。

iamseer 发表于 2023-5-18 02:19:22

本帖最后由 iamseer 于 2023-5-18 02:21 编辑

LZ你需不需要在服务器做认证?如果不要,那就简单了。直接静态网页上Webserial,然后认证就串口发包给串口做认证,既然是串口上的芯片做认证,那一机一密就很容易。如果网页收到了芯片的认证内容,再显示其他交互内容。这样一个HTML搞定。但是这个网页必须放在HTTPS的服务器上。

介绍在此 https://developer.chrome.com/en/articles/serial/
想要快速测试直接拉到底看demo
页: [1]
查看完整版本: 想做一个这样的软件,需要用到哪些知识呢?