CN109032573A - 一种硬件编程系统和方法 - Google Patents
一种硬件编程系统和方法 Download PDFInfo
- Publication number
- CN109032573A CN109032573A CN201810637193.XA CN201810637193A CN109032573A CN 109032573 A CN109032573 A CN 109032573A CN 201810637193 A CN201810637193 A CN 201810637193A CN 109032573 A CN109032573 A CN 109032573A
- Authority
- CN
- China
- Prior art keywords
- hardware
- programming
- browser
- program component
- middleware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种硬件编程系统和方法,系统包括:待变更的硬件、中间件和服务器端,其中,中间件用于提供浏览器的运行环境,中间件还用于提供与硬件连接的接口环境,服务器端用于提供特定网址的服务支持;中间件连接硬件以获取硬件信息,建立浏览器与硬件的通信连接;浏览器访问特定网址以加载编程组件,通过编程组件获取编程数据,将编程数据传输至硬件;硬件基于编程数据变更硬件代码。方法适用于系统。本发明通过网络的服务器存储编程环境,通过浏览器加载编程环境并获取编程数据,能够降低本地编程环境的需求,通过浏览器与硬件进行数据的传输,能够快速实现驱动的更新,结合上述两点能提高用户针对智能硬件的编程的体验。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种硬件编程系统和方法。
背景技术
世面上出现很多智能化的硬件,这些硬件多数具有可编程功能,但是要编程控制这些硬件,都需要安装客户端或者集成开发环境,这样有两个弊端:一是需要下载较大的环境文件,二是需要在本地管理自己的编程项目文件,用户体验不好。
发明内容
为了解决上述问题,本发明提供一种硬件编程系统和方法。
本发明采用的技术方案一方面为一种硬件编程系统,包括:待变更的硬件、中间件和服务器端,其中,所述中间件用于提供浏览器的运行环境,所述中间件还用于提供与硬件连接的接口环境,所述服务器端用于提供特定网址的服务支持;所述中间件连接所述硬件以获取硬件信息,建立浏览器与硬件的通信连接;所述浏览器访问特定网址以加载编程组件,通过所述编程组件获取编程数据,将所述编程数据传输至所述硬件;所述硬件基于所述编程数据变更硬件代码。
优选地,所述中间件包括电脑主机和中间件程序,所述中间件程序扫描接口环境中与硬件连接的接口以获取硬件信息,所述浏览器基于硬件信息选择对应的硬件并建立通信连接。
优选地,所述浏览器基于WebSocket协议与硬件建立通信连接。
优选地,所述浏览器访问预定网址,根据硬件信息加载对应的编程组件,通过所述编程组件获取编程数据,将所述编程数据传输至所述硬件。
优选地,所述浏览器访问预定网址以加载编程组件,通过所述编程组件获取编程指令,将所述编程指令发送至所述服务器端,所述服务器端转换所述编程指令为适用于硬件的编程数据,所述浏览器将所述编程数据传输至所述硬件。
本发明采用的技术方案一方面为一种硬件编程方法,适用于上述系统,包括步骤:取硬件的硬件信息,建立浏览器与硬件的通信连接;通过浏览器访问特定网址以加载编程组件;通过编程组件获取编程数据,将所述编程数据传输至所述硬件;基于所述编程数据变更硬件代码。
优选地,扫描接口环境中与硬件连接的接口以获取硬件信息,所述浏览器基于硬件信息选择对应的硬件并建立通信连接。
优选地,所述浏览器基于WebSocket协议与硬件建立通信连接。
优选地,所述浏览器访问预定网址,根据硬件信息加载对应的编程组件,通过所述编程组件获取编程数据,将所述编程数据传输至所述硬件。
优选地,所述浏览器访问预定网址以加载编程组件,通过所述编程组件获取编程指令,将所述编程指令发送至所述服务器端,所述服务器端转换所述编程指令为适用于硬件的编程数据,所述浏览器将所述编程数据传输至所述硬件。
本发明的有益效果为网络的服务器存储编程环境,通过浏览器加载编程环境并获取编程数据,能够降低本地编程环境的需求,通过浏览器与硬件进行数据的传输,能够快速实现代码的更新,结合上述两点能提高用户针对智能硬件的编程的体验。
附图说明
图1所示为基于本发明实施例一种硬件编程系统的示意图。
具体实施方式
以下结合实施例对本发明进行说明。
基于发明的实施例1
本发明的目的是降低编程的环境需求和提高编程的舒适度,其要旨在于:首先提供中间件,可以设置其为电脑的主机(下称电脑),其目的是提供浏览器的运行环境和提供与硬件连接的接口环境;以简单的IE浏览器为例子,正常的具有Windows OS的主机都会配置有IE浏览器,同时作为电脑的硬件的一部分,大多数的电脑都具备各种接口(例如USB接口,WLAN接口,各种显示器接口等),统称这些接口和其对应的驱动为接口环境;待变更的硬件(即上述智能硬件)通过接口环境连接电脑,电脑的驱动程序就会启动(即中间件程序)监听TCP协议的固定端口,并开放与浏览器通信的接口;电脑驱动程序在完成硬件的连接之后,获取硬件的硬件属性(包括硬件类型、接口地址等),浏览器访问预定的网址以获取对应的技术支持,在本实施例,其表现为下载并加载与硬件匹配的编程组件(即编程环境/IDE页面,其主要基于html+javascript编写,该页面提供新建、编辑、保存、删除编程项目的功能,并能通过中间件提供的接口,与硬件进行通信,并实现上传程序/代码到硬件的功能);当浏览器完成编程组件的加载,则用户可以通过IDE页面提供的功能进行编程操作(可以是直接输入代码,也可以是通过代码库的现有代码的重组以完成新代码),编程操作的结果即编程数据,通过中间件之前已经完成的通信连接(即硬件对应的驱动的安装),将编程数据传输到硬件,硬件使用编程数据并进行代码的更新。
基于发明的实施例2
作为实施例1的进一步说明,以具体的硬件为例:硬件可以是开源硬件Arduino,中间件用于提供操作系统、与硬件通信的功能,同时用于暴露与硬件通信的接口给浏览器;浏览器端提供一个在线集成开发环境(IDE),提供在线编程的功能,以及程序项目的新建、编辑、保存等功能;服务器端为浏览器端提供服务,配合浏览器端实现程序项目的新建、编辑、保存等功能;同时提供应用程序编译功能,将在浏览器端编写的应用程序编译成硬件支持的格式,发送至浏览器端,烧录进硬件,其步骤包括:
将Arduino硬件接入电脑USB接口之后,启动中间件;中间件程序采用Go语言编写,中间件程序启动之后,会使用serial模块扫描USB接口对应硬件信息,之后中间件程序会监听TCP协议的26337端口,为浏览器提供https及wss服务;
用户打开浏览器端即在线IDE页面,该页面采用html+javascript编写,提供新建、编辑、保存、删除编程项目的功能,能通过电脑提供的接口,与硬件进行通信,并实现上传程序到硬件的功能;该页面加载完成之后,会通过GET请求访问预定的地址,本实施例中,该地址为https://local.codepku.com/device-list(local.codepku.com解析至127.0.0.1)获取设备列表(即硬件信息);浏览器端通过设备信息,找到支持的硬件设备即Arduino后,通过POST请求访问https://local.codepku.com/open-device打开对应的设备端口,然后与wss://local.codepku.com/ws建立WebSocket连接,中间件将从硬件读取到的串口数据(若有),发送至此WebSocket,同时将浏览器通过此WebSocket发送过来的数据,传送至硬件,从而实现硬件与浏览器端的实时通信(建立通信连接);通信建立之后,用户可以在浏览器端的IDE中进行新建项目,并使用Arduino硬件支持的编程语言进行编程,并进行保存、修改等操作,用户完成编程之后,可以进行编译操作以生成编程指令,将编程指令作发送至服务器端,也可以直接将编程指令(此时,该编程指令即能够直接适用于硬件的程序代码)发送至硬件(取决于硬件的类型)。
基于发明的实施例3
作为实施例2的进一步说明,服务器端可以使用任意支持Web开发的编程语言实现,本实施例中使用PHP开发,服务器端除配合浏览器端实现编程项目的新建、修改、保存、删除等操作之外,还要实现Arduino代码的编译功能(即当浏览器不能直接实现针对于硬件的编程,其中,能否实现取决于硬件的类型,本实施例以不能的情况作为说明);服务器端接收到浏览器端提交的编程指令之后,将此指令加入到待编译队列中,服务器端的守护进程使用Arduino硬件支持的编译软件avr-tools对待编译队列进行编译,并将编译结果保存到临时目录中,编译完成之后,服务器端将编译生成的二进制文件的URL返回至浏览器端,浏览器接收到编译结果的URL之后,会通过POST请求将URL地址发送至中间件,在本实施例中其为https://local.codepku.com/upload-firmware接口,中间件将此编译生成的文件下载至本地,并调用Arduino的上传工具将文件上传至Arduino中,至此,用户完成在浏览器中对Arduino进行编程的操作。
基于发明的实施例4
如图1所示一种硬件编程系统的示意图,包括服务器端、浏览器端、中间件和硬件,其中,服务器端用于提供特定网址的服务支持,中间件包括电脑主机和中间件程序,浏览器端即浏览器,硬件为待变更的硬件;
所述服务器端与浏览器端相互连接,所述浏览器端与中间件相互连接,所述中间件与硬件相互连接。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
Claims (10)
1.一种硬件编程系统,其特征在于,包括:
待变更的硬件、中间件和服务器端,其中,所述中间件用于提供浏览器的运行环境,所述中间件还用于提供与硬件连接的接口环境,所述服务器端用于提供特定网址的服务支持;
所述中间件连接所述硬件以获取硬件信息,建立浏览器与硬件的通信连接;
所述浏览器访问特定网址以加载编程组件,通过所述编程组件获取编程数据,将所述编程数据传输至所述硬件;
所述硬件基于所述编程数据变更硬件代码。
2.根据权利要求1所述的硬件编程系统,其特征在于,所述中间件包括电脑主机和中间件程序,所述中间件程序扫描接口环境中与硬件连接的接口以获取硬件信息,所述浏览器基于硬件信息选择对应的硬件并建立通信连接。
3.根据权利要求1所述的硬件编程系统,其特征在于,所述浏览器基于WebSocket协议与硬件建立通信连接。
4.根据权利要求3所述的硬件编程系统,其特征在于,所述浏览器访问预定网址,根据硬件信息加载对应的编程组件,通过所述编程组件获取编程数据,将所述编程数据传输至所述硬件。
5.根据权利要求3所述的硬件编程系统,其特征在于,所述浏览器访问预定网址以加载编程组件,通过所述编程组件获取编程指令,将所述编程指令发送至所述服务器端,所述服务器端转换所述编程指令为适用于硬件的编程数据,所述浏览器将所述编程数据传输至所述硬件。
6.一种硬件编程方法,适用于权利要求1所述系统,其特征在于,包括步骤:
获取硬件的硬件信息,建立浏览器与硬件的通信连接;
通过浏览器访问特定网址以加载编程组件;
通过编程组件获取编程数据,将所述编程数据传输至所述硬件;
基于所述编程数据变更硬件代码。
7.根据权利要求6所述的硬件编程方法,适用于权利要求2所述系统,其特征在于,扫描接口环境中与硬件连接的接口以获取硬件信息,所述浏览器基于硬件信息选择对应的硬件并建立通信连接。
8.根据权利要求6所述的硬件编程方法,其特征在于,所述浏览器基于WebSocket协议与硬件建立通信连接。
9.根据权利要求8所述的硬件编程方法,其特征在于,所述浏览器访问预定网址,根据硬件信息加载对应的编程组件,通过所述编程组件获取编程数据,将所述编程数据传输至所述硬件。
10.根据权利要求8所述的硬件编程方法,其特征在于,所述浏览器访问预定网址以加载编程组件,通过所述编程组件获取编程指令,将所述编程指令发送至所述服务器端,所述服务器端转换所述编程指令为适用于硬件的编程数据,所述浏览器将所述编程数据传输至所述硬件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810637193.XA CN109032573A (zh) | 2018-06-20 | 2018-06-20 | 一种硬件编程系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810637193.XA CN109032573A (zh) | 2018-06-20 | 2018-06-20 | 一种硬件编程系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109032573A true CN109032573A (zh) | 2018-12-18 |
Family
ID=64609793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810637193.XA Pending CN109032573A (zh) | 2018-06-20 | 2018-06-20 | 一种硬件编程系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109032573A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109787997A (zh) * | 2019-02-26 | 2019-05-21 | 上海易点时空网络有限公司 | 基于php的tcp服务方法及服务器 |
CN110275787A (zh) * | 2019-06-24 | 2019-09-24 | 博普乐科技(北京)有限公司 | 在线平台数据传输方法、装置、介质及电子设备 |
CN112327736A (zh) * | 2020-09-14 | 2021-02-05 | 广东联凯智能科技有限公司 | 用于电子产品的嵌入式可编程模块 |
CN113900637A (zh) * | 2021-09-30 | 2022-01-07 | 海南佳达科技有限公司 | 一种基于Web的Arduino智能硬件控制方法及系统 |
CN115665269A (zh) * | 2022-10-18 | 2023-01-31 | 哈尔滨工程大学 | 一种基于tcp通信协议的分布式异构语言间的通讯方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101626351A (zh) * | 2008-07-09 | 2010-01-13 | 青岛高校信息产业有限公司 | 多协议数据采集网关 |
CN103914018A (zh) * | 2012-12-31 | 2014-07-09 | 施耐德电器工业公司 | 可编程控制器的编程辅助系统及方法 |
CN104244108A (zh) * | 2014-09-24 | 2014-12-24 | 上海网达软件股份有限公司 | 一种直播方法及系统 |
CN104519405A (zh) * | 2013-10-08 | 2015-04-15 | 联想(北京)有限公司 | 一种控制方法及电子设备 |
CN106325233A (zh) * | 2015-07-07 | 2017-01-11 | 刘华 | 一种可视化编程逻辑分布控制系统及实现方法 |
CN107750356A (zh) * | 2015-05-08 | 2018-03-02 | 西安姆贝拉有限公司 | 用于一组基于控制器的装置的自动软件开发的方法和设备 |
-
2018
- 2018-06-20 CN CN201810637193.XA patent/CN109032573A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101626351A (zh) * | 2008-07-09 | 2010-01-13 | 青岛高校信息产业有限公司 | 多协议数据采集网关 |
CN103914018A (zh) * | 2012-12-31 | 2014-07-09 | 施耐德电器工业公司 | 可编程控制器的编程辅助系统及方法 |
CN104519405A (zh) * | 2013-10-08 | 2015-04-15 | 联想(北京)有限公司 | 一种控制方法及电子设备 |
CN104244108A (zh) * | 2014-09-24 | 2014-12-24 | 上海网达软件股份有限公司 | 一种直播方法及系统 |
CN107750356A (zh) * | 2015-05-08 | 2018-03-02 | 西安姆贝拉有限公司 | 用于一组基于控制器的装置的自动软件开发的方法和设备 |
CN106325233A (zh) * | 2015-07-07 | 2017-01-11 | 刘华 | 一种可视化编程逻辑分布控制系统及实现方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109787997A (zh) * | 2019-02-26 | 2019-05-21 | 上海易点时空网络有限公司 | 基于php的tcp服务方法及服务器 |
CN110275787A (zh) * | 2019-06-24 | 2019-09-24 | 博普乐科技(北京)有限公司 | 在线平台数据传输方法、装置、介质及电子设备 |
CN112327736A (zh) * | 2020-09-14 | 2021-02-05 | 广东联凯智能科技有限公司 | 用于电子产品的嵌入式可编程模块 |
CN112327736B (zh) * | 2020-09-14 | 2022-05-31 | 广东联凯智能科技有限公司 | 用于电子产品的嵌入式可编程模块 |
CN113900637A (zh) * | 2021-09-30 | 2022-01-07 | 海南佳达科技有限公司 | 一种基于Web的Arduino智能硬件控制方法及系统 |
CN115665269A (zh) * | 2022-10-18 | 2023-01-31 | 哈尔滨工程大学 | 一种基于tcp通信协议的分布式异构语言间的通讯方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109032573A (zh) | 一种硬件编程系统和方法 | |
CN106843828B (zh) | 界面显示、加载方法及装置 | |
CN102819461B (zh) | 桌面同步方法、装置、设备及系统 | |
KR100823122B1 (ko) | 이동 단말기와 관련된 데이터 베이스, 서비스 및 장치들의원격 관리 및 액세스 | |
US20070220494A1 (en) | A Method of Rapid Software Application Development for a Wireless Mobile Device | |
CN111953642B (zh) | 一种二维码上传和下载分享文件的方法 | |
CN101399729B (zh) | 资料下载与上传管理系统及方法 | |
CN102752369B (zh) | 电视应用服务的提供方法及虚拟化内容服务平台 | |
CN104268739A (zh) | 一种将企业信息系统快速转化为移动应用的方法和系统 | |
CN104486388A (zh) | 云存储文件的访问方法和装置 | |
CN100473070C (zh) | 一种具有存储功能的usb设备在网络计算机上的映射方法 | |
CN102368848B (zh) | 一种无线通讯装置及其配置方法 | |
CN103945364A (zh) | 传输数据的方法、第一终端和系统 | |
CN108763042A (zh) | 一种基于python的云服务器性能数据采集方法及装置 | |
CN109871221A (zh) | 一种针对移动终端设备快速装机部署移动应用软件的系统 | |
KR101086620B1 (ko) | 스마트 오피스 시스템 및 운용을 위한 서버 및 운용 방법 | |
CN107704499A (zh) | 一种应用程序的页面跳转控制方法及装置 | |
CN112394932A (zh) | 浏览器网页自动换肤方法及装置 | |
CN103634393A (zh) | Ivr及其实现方法 | |
CN113641581B (zh) | 混合模式移动应用调试方法及系统 | |
CN102469109B (zh) | 一种移动终端中浏览器主页的显示方法及装置 | |
CN106648805A (zh) | 一种智能装置、智能系统及智能安装应用的方法 | |
CN112073488A (zh) | 处理请求的方法及装置 | |
CN110071958B (zh) | 基于嵌入式web的传感器节点控制方法 | |
CN104079540A (zh) | 应用更新方法、装置及系统、用户设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 2601, Xilongwan business international building, n23 District, Haiwang community, Xin'an street, Bao'an District, Shenzhen City, Guangdong Province Applicant after: SHENZHEN CODEPKU EDUCATION TECHNOLOGY Co.,Ltd. Address before: Room 1202, block C, Xiangnian Plaza, No. 4060, Qiaoxiang Road, Nanshan District, Shenzhen City, Guangdong Province Applicant before: SHENZHEN CODEPKU EDUCATION TECHNOLOGY Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181218 |