很多用户拿到板子以后说没有资料。在此再次公开下eBox生态圈的技术群:139218853群里有所有的资料。上传下教程:源码:源码不断更新最新下载地址:https://github.com
2015-12-14 13:47
`硬件【ebox生态圈】技术支持群:139218853Spark为STM32主板SPARK是基于STM32F103C8T6的控制板,作为eBox入门级的控制板,主要起到引导用户熟悉eBox固件库
2015-12-15 16:30
Spark详解(一):Spark及其生态圈概述
2019-06-21 16:45
华为云市场份额占比2020,华为云成为“全球五朵云之一”的目标正在实现。据Gartner发布的最新报告《Market S
2021-07-28 08:20
`这个互联网的年代,如果你不支持物联网就不要出来混啦!科普:MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,将成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:●网络代价昂贵,带宽低、不可靠。●在嵌入设备中运行,处理器和内存资源有限。该协议的特点有:使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。●对负载内容屏蔽的消息传输。●使用 TCP/IP 提供网络连接。●有三种消息发布服务质量: ▲“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。 ▲“至少一次”,确保消息到达,但消息重复可能会发生。 ▲“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。●小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。●使用 Last Will和 Testament 特性通知有关各方客户端异常中断的机制。库文件:Embedded MQTT C/C++ Client Libraries版本:移植的是目前最新稳定版本3.1.1下载地址:http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.embedded-c.git/refs/在此网页的左下角有三个下载链接,文件格式不同而已,选择第一个。移植简介:初看MQTT库文件觉得不知道从哪里下手。第一步就是选取自己需要的文件,解压后会看到MQTTPacket文件夹,移植到新的平台,这个文件夹就够用了。MQTTClient这个文件夹下面有已经移植好的接口,是在Linux、arduino、mbed平台上运行的。没有支持eBox,说明eBox还不够火,那咱们就自己移植吧。MQTTPacket文件夹下面有src文件夹。这个就是MQTT的核心代码,不用,也不要做任何修改。Samples文件夹下面的transport.c和.h是MQTT的基本数据传输函数。老外做的就是好,接口文件完全独立于本身的逻辑部分。transport.c这个文件就是移植的最重要部分!要实现基本的四个函数,只填充发送、接收、打开、关闭,不要对函数名称做任何修改,除了这四个函数外,用户也可以添加自己的接口,比如状态判断,需要初始化的东西。在eBox平台下,我吧transport.c改为.cpp,这要做是为了能让他使用eBox自带的tcp协议,而不必再去基于socket实现传输函数的移植。这一步大大的简化了填充过程。上代码:#include "tcp.h"TCPCLIENT mqtt_tcp;int transport_init(int local_sock,int local_port){ mqtt_tcp.begin(local_sock,local_port); return 0;}int transport_sendPacketBuffer(unsigned char* buf, int buflen){int rc = 0; rc = mqtt_tcp.send(buf,buflen);return rc;}int transport_getdata(unsigned char* buf, int count){return mqtt_tcp.recv(buf,count);}int transport_open(char* addr, int port){ return mqtt_tcp.connect((unsigned char *)addr,port);}int transport_close(int sock){ mqtt_tcp.stop();return 1;}int transport_connnected(){ return mqtt_tcp.is_connected();}不知道为什么一加注释代码就显示不全了。可以看源文件来查看详细内容写完这几个函数就可以,看官方提供的例程了。例程在samples文件夹下面。pub0sub1.c/qos0sub.c/pub0sub1_nb.c。打开之后,直接懵了。。。。。。。这是什么代码啊。。。沉下心来,过一遍就能理解个大概了。多过几遍就没问题了。从这几个例程中了解他的一个基本的通信过程。然后把他这些例程,移植到eBox上就行了。这里要注意的是,官方默认为你的接收函数使用阻塞式接收,而我用的是非阻塞的,要再应用层上做点循环,do ...while。先一直publish。调试协议多了,就会明白发送是一个比接收容易一百倍的事情。过了一天,调通了。。。然后移植接收,又是一天。然后就是优化,两天时间。应用层的移植过程中还需要不断的修改底层的函数bug,中间找到了不少网卡和socket的bug。所以花了比较长的时间。涉及的内容太多,就不贴出来了,看附件就行了。到此基本上实现了mqtt的qos0模式的发布和订阅消息。实现了断线自动重连。我用了两个eBox的板子,一个发布消息,一个订阅消息,运行一个晚上,第二天依然工作。没有断线。强势插入两个图片发布消息,每隔一段时间会给服务器发一个ping_req告诉服务器我还活着。。。订阅消息,当服务器向订阅者发布消息后,订阅者接收消息并显示。每隔一段时间会给服务器发一个ping_req告诉服务器我还活着。。。调试工具:http://m2m.demos.ibm.com/mqttclient/#subscribe怎么是个网页呢?鄙人不会各种高大上的软件平台,就找到了网页版的客户端,然后通过他来调试自己发送的数据,接收的数据。还有一个eclipse平台的服务器m2m.eclipse.org,1883端口可以让用户调试。移植好的文件,里面有mqtt的src文件和我自己的interface文件夹(包含了transport和应用层api)。用户把此文件夹放到eBox工程目录下的network文件夹下面。然后把代码添加到ebox工程中就可以了。两个API的使用例程上传一个3.1.1的协议说明,中文版最后上传下MQTT的全部文件重磅资料,最新的ebox固件库。。。。。。。。。。。。。。。。。。。等众筹结束后我会将整套工程,发布出来,让用户的编程变得简单再简单!!!希望朋友多多支持!我的众筹项目地址:http://z.elecfans.com/30.html 期待大家一起来完善和发展eBox,打造国人自己的库,不仅仅支持STM32,更能支持飞思卡尔MCU、NXP MCU······`
2015-11-24 00:19
处理应用,文档处理应用开放了接入能力。目前通过智能媒体管理支持图像识别、人脸检测、视频截帧、图片处理、文档预览、文本检索等多项数据处理能力,为上层应用提供强有力的支持。未来,阿里云将同更多的软件生态伙伴
2018-04-18 14:11
1、在华为弹性云服务器上远程编译rk3568配置华为弹性云服务器首先注册并登陆华为
2022-09-08 17:06
原贴地址:https://bbs.huaweicloud.com/blogs/244682【摘要】 方案采用深圳航顺HK32F103Vx芯片做主控制器,运行华为云智联Link协议栈(CoAP
2022-01-27 06:48
本帖最后由 周安平 于 2022-6-4 10:07 编辑 【小凌派RK2206开发板试用体验】OpenHarmony华为云IoT应用开发-智慧井盖华为云IoT平
2022-06-03 20:48
串口在嵌入式设备中无疑是排在第一位的调试、输入输出接口!STM32中的串口应用起来比较简单,代码量不太复杂。但是一般用户的设计都是使用最基本的功能没有完全发挥串口硬件的功能,使得串口这个低速设备,严重影响了32的性能。一般情况下,使用串口的发送会浪费掉CPU的大量时间,到底有多大,你自己可以算算。为了解决这个问题eBox使用DMA来实现异步执行,使得单片机即使在没有操作系统的情况下也大大提高效率。此处讲解下异步执行的概念,当用户需要通过串口发送数据的时候,用户只需要将数据填充到发送缓冲区(指DMA发送缓冲区),然后开启DMA发送。MCU的任务就完成了,不用做任何等待就可以继续执行其他任务。这是,真正的发送是有DMA和串口自动配合完成字符串的发送。这就是简单的异步执行的概念。此例程用到USART类成员函数class USART{public:USART(USART_TypeDef *USARTx,GPIO *tx_pin,GPIO *rx_pin);void begin(uint32_t baud_rate);void printf(const char *fmt,...);此处没有将所有的成员函数列出,只列出了关键方法。详细内容请查看下面的附件。应用实例:#include "ebox.h"void setup(){ ebox_init(); uart1.begin(9600);}int main(void){ setup(); while(1) {uart1.printf("hello World !\r\n");delay_ms(1000); }}好清晰的赶脚啊!uart1对象在哪里创建的呢?USART uart1(USART1,&PA9,&PA10);这是串口1对象的创建。在object.cpp中。声明在eBox.h中。串口详解:我的众筹项目地址:http://z.elecfans.com/30.html 期待大家一起来完善和发展eBox,打造国人自己的库,不仅仅支持STM32,更能支持飞思卡尔MCU、NXP MCU······
2015-11-27 18:51