-
一、计算机网络结构大规模现代计算机网络:网络边缘、接入网络与网络核心1.网络边缘:连接到网络上的所有端系统(例如:连接到网络上的计算机、服务器、智能手机等)构成了网络边缘。2.接入网络:实现网络边缘与网络核心连接与接入的网络对于大规模、复杂的网络端系统相距遥远,这些端系统之间的网络连接和通信需要网络核心进行数据中继和转发。通常,网络核心是由运营商等企业运营的ISP网络,不能直接延伸到用户区域,例如:家中,用户就需要借助接入网络实现与ISP的连接。常见的网络接入技术:电话拨号接入(使用调制调节器)、非对称数字用户线路ADSL(常见,使用频分多路复用技术)、混合光纤同轴电缆HFC接入网络(电缆调制解调器,使用频分多路复用技术,独享式接入)、局域网(以太网、WIFi)、移动接入网络(个人设备接入网络。如:2G/3G/4G)3.网络核心:是由通信链路互连的分组交换设备构成的网络,作用是实现网络边缘中主机之间的数据中继与转发典型的分组交换设备:交换机、路由器二、数据交换技术1.计算机网络的目的:在网络边缘的主机之间实现相互的数据传输与信息交换2.数据交换网络:中间网络不需要关心传输数据内容,只是为这些数据从一个节点到另一节点,直至到达目的地,提供数据中继与交换的功能。交换节点:组成交换网络的节点通信子网:交换节点和传输介质的集合,即网络核心。3.数据交换是实现在大规模网络核心上进行数据传输的技术基础。常见的数据交换技术:①电路交换:电话网络是最早最大的电路交换网络。(例如:电话拨号呼叫过程)电路交换包括三个阶段:建立电路、传输数据、拆除电路。、缺点:信道容量与有效时间的浪费②报文交换:发送方把要发送的信息附加上发送/接收主机的地址以及其他控制信息,构成一个完整的报文,然后以报文为单位在交换网络的各个节点之间以存储-转发的方式传送,直至目的主机。缺点:不能满足实时通信速度要求、节点存储空间不够、输出链路被占用不能及时转发报文,使报文被丢弃。③分组交换:目前应用广泛的技术,分组交换将报文分割成较小的数据块,数据块加上地址、序号等控制信息构成数据分组,每个分组独立传输到目的地,目的地将分组重新组装,还原为报文。优点:交换设备存储容量要求低、交换速度快、可靠传输效率高、更加公平
-
小白求救【功能模块】小熊派Nano主板【操作步骤&问题现象】1、在按照B站教程走到Hello World步骤的时候,反复检查三个代码(HelloWorld.c,BUILD.gn,BUILD.gn)都没有错误,但是在MobaXterm编译的时候报错,别的地方实在找不到答案,无奈前来求救2、Error: getaddrinfo ENOTFOUND hpm.harmonyos.com at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26) { errno: -3008, code: 'ENOTFOUND',主要错误问题就是这个,百度去查说是host的问题,我又检查了下虚拟机和主机的网络连接也没问题【截图信息】【日志信息】见附件
-
一、计算机网络结构大规模现代计算机网络:网络边缘、接入网络与网络核心1.网络边缘:连接到网络上的所有端系统(例如:连接到网络上的计算机、服务器、智能手机等)构成了网络边缘。2.接入网络:实现网络边缘与网络核心连接与接入的网络对于大规模、复杂的网络端系统相距遥远,这些端系统之间的网络连接和通信需要网络核心进行数据中继和转发。通常,网络核心是由运营商等企业运营的ISP网络,不能直接延伸到用户区域,例如:家中,用户就需要借助接入网络实现与ISP的连接。常见的网络接入技术:电话拨号接入(使用调制调节器)、非对称数字用户线路ADSL(常见,使用频分多路复用技术)、混合光纤同轴电缆HFC接入网络(电缆调制解调器,使用频分多路复用技术,独享式接入)、局域网(以太网、WIFi)、移动接入网络(个人设备接入网络。如:2G/3G/4G)3.网络核心:是由通信链路互连的分组交换设备构成的网络,作用是实现网络边缘中主机之间的数据中继与转发典型的分组交换设备:交换机、路由器二、数据交换技术1.计算机网络的目的:在网络边缘的主机之间实现相互的数据传输与信息交换2.数据交换网络:中间网络不需要关心传输数据内容,只是为这些数据从一个节点到另一节点,直至到达目的地,提供数据中继与交换的功能。交换节点:组成交换网络的节点通信子网:交换节点和传输介质的集合,即网络核心。3.数据交换是实现在大规模网络核心上进行数据传输的技术基础。常见的数据交换技术:①电路交换:电话网络是最早最大的电路交换网络。(例如:电话拨号呼叫过程)电路交换包括三个阶段:建立电路、传输数据、拆除电路。、缺点:信道容量与有效时间的浪费②报文交换:发送方把要发送的信息附加上发送/接收主机的地址以及其他控制信息,构成一个完整的报文,然后以报文为单位在交换网络的各个节点之间以存储-转发的方式传送,直至目的主机。缺点:不能满足实时通信速度要求、节点存储空间不够、输出链路被占用不能及时转发报文,使报文被丢弃。③分组交换:目前应用广泛的技术,分组交换将报文分割成较小的数据块,数据块加上地址、序号等控制信息构成数据分组,每个分组独立传输到目的地,目的地将分组重新组装,还原为报文。优点:交换设备存储容量要求低、交换速度快、可靠传输效率高、更加公平
-
【功能模块】【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
【功能模块】【操作步骤&问题现象】上次给出建议后采纳了第一条,但现在需要实时推送消息,麻烦能讲讲第二条,搭建应用服务器更具体一点的操作吗?
-
在流程上,子系统通常都是存量设备,提供现成的接口,多以SDK/API形式,等待被第三方平台来主导完成集成,与设备工业协议、数据报文格式,以及由厂家主动对接平台的方式迥异;在技术上,绝大部分平台架构是面向智能硬件来设计的,比如选择MQTT异步通信、未考虑多语言开发等等,在对接子系统SDK时会明显繁琐。当然,即便繁琐也能实现子系统接入。在物联网平台中,“接入”虽然只是其中一个环节,重要不代表所有,但是平台的标准化、通用性首先就体现在接入能力上。子系统接入繁琐、厂家疲于应付成了当下显著的痛点。在众多平台厂家中,IOTOS(爱投斯)较为独特,定位更像是工具化中间件产品,能提供子系统接口协议转换,也能二次开发打造一款行业应用,主要为系统集成中B端应用厂家服务。
-
【截图信息】
-
【功能模块】【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
上一篇《华为云IoT API Explorer对接小程序实现系统化应用》介绍了应用侧如何利用应用测的Api做了一个微信小程序业务场景。本篇就介绍南向设备端案例,主要讲解案例基础上集成NFC功能,并和小程序配合成为一个完整的应用场景案例。用来实现NFC动态配置WIFI账号和密码,DeviceId和Secret,可以适合多场景先烧录后配置。硬件准备:1、小熊派开发板 Bearpi_HM nano2、E53案例的一个扩展版3、安卓手机一部,带NFC功能4、Type-C 电源线一根软件准备:1、HarmonyOS开发环境的Linux系统,帮小熊派宣传一下https://pan.baidu.com/s/1T0Tcl3y48C1p5L6y-6HJNg 提取码:eusr2、HiBurn烧录工具,方便在Windows上使用3、微信开发工具4、VSCode开发工具目标工作的任务1、通过小程序能够添加产品和注册设备,注册设备的同时产生的DeviceID和Secret,加上Wifi的账号密码,通过NFC功能,小程序调用手机NFC传递给开发板的NFC里面。2、开发板启动时,先读取NFC内容,按照预定的格式,如果发现了以上写入信息,就直接使用来连接Wifi和物联网。看代码小熊派案例D6_iot_cloud_oc采用Wifi和MQTT连接,包含了智慧农业案例可以从下面代码中看出,Wifi信息和设备信息都是编译前要写好的。//Wifi信息联网 uint32_t ret = WifiConnect("Hold", "0987654321"); //设备信息 #define CLIENT_ID "5fc7152fb4ec2202e99df7bf_2020111409_0_0_2020120205" #define USERNAME "5fc7152fb4ec2202e99df7bf_2020111409" #define PASSWORD "9b501c0ce96e0d79a071703b870060d939e95715397c6cb5dee90a93a38dd288" device_info_init(CLIENT_ID, USERNAME, PASSWORD);Bearpi-HM nano已经支持NFC了,只要引入类库实现读取NFC代码库包含若干文件使用起来函数比较简单,先初始化对应的GPIO和SPP //GPIO_0复用为I2C1_SDA IoTGpioSetFunc(0, IOT_GPIO_FUNC_GPIO_0_I2C1_SDA); //GPIO_1复用为I2C1_SCL IoTGpioSetFunc(1, IOT_GPIO_FUNC_GPIO_1_I2C1_SCL); //baudrate: 400kbps IoTI2cInit(WIFI_IOT_I2C_IDX_1, 400000);接下来就是读取NFC内容了,根据预置格式读取和使用 extern char product[50], wifissid[50], wifipwd[50], deviceid[50], devicepwd[50]; /* 从NFC中读取连接平台相关设备信息 */ ret = nfc_get_devived_data(); /* 连接WiFi热点 */ if (ret == 0) { WifiConnect(wifissid, wifipwd); } else { WifiConnect(CONFIG_WIFI_SSID, CONFIG_WIFI_PWD); } dtls_al_init(); mqtt_al_init(); oc_mqtt_init(); g_app_cb.app_msg = queue_create("queue_rcvmsg", 10, 1); if (NULL == g_app_cb.app_msg) { printf("Create receive msg queue failed"); } oc_mqtt_profile_connect_t connect_para; (void)memset(&connect_para, 0, sizeof(connect_para)); connect_para.boostrap = 0; if (ret == 0) { connect_para.device_id = deviceid; //平台所需要的deviceid connect_para.device_passwd = devicepwd; //平台所需要的devicepwd } connect_para.server_addr = CONFIG_APP_SERVERIP; connect_para.server_port = CONFIG_APP_SERVERPORT; connect_para.life_time = CONFIG_APP_LIFETIME; connect_para.rcvfunc = msg_rcv_callback; connect_para.security.type = EN_DTLS_AL_SECURITY_TYPE_NONE; /* 连接到华为云IoT平台 */ printf("Connecting huawei iot cloud!\r\n"); ret = oc_mqtt_profile_connect(&connect_para); if ((ret == (int)en_oc_mqtt_err_ok)) { g_app_cb.connected = 1; printf("oc_mqtt_profile_connect succed!\r\n"); }读取NFC主方法/************************************************** * get_devived_data * 获取WiFi的ssid和密钥及设备DevicesID和密钥 * ***********************************************/ uint8_t nfc_get_devived_data(void) { uint8_t memary_buf[16 * 15]; cJSON *json, *jsonTemp; // *jsonArray, uint8_t jsonbuf[512] = {0}; char jsonbuf_string[512] = {0}; uint8_t payload_len = 0; uint8_t json_len = 0; NT3H1101_Read_Userpages(15, memary_buf); payload_len = memary_buf[4]; json_len = payload_len - 3; //取出真实的json数据包,往后再偏移3位 for (uint8_t i = 0; i < json_len; i++) { jsonbuf = memary_buf[9 + i]; } memset(jsonbuf_string, 0x00, sizeof(jsonbuf_string)); sprintf(jsonbuf_string, "%s", jsonbuf); // printf("\r\n nfc json %s\r\n", jsonbuf_string); //解析json数据 json = cJSON_Parse(jsonbuf_string); if (!json) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return -1; } else { jsonTemp = cJSON_GetObjectItem(json, "product"); memset(product, 0, sizeof(product)); snprintf(product, strlen(jsonTemp->valuestring) + 1, "%s", jsonTemp->valuestring); jsonTemp = cJSON_GetObjectItem(json, "device_id"); memset(deviceid, 0, sizeof(deviceid)); snprintf(deviceid, strlen(jsonTemp->valuestring) + 1, "%s", jsonTemp->valuestring); jsonTemp = cJSON_GetObjectItem(json, "secret"); memset(devicepwd, 0, sizeof(devicepwd)); snprintf(devicepwd, strlen(jsonTemp->valuestring) + 1, "%s", jsonTemp->valuestring); jsonTemp = cJSON_GetObjectItem(json, "ssid"); memset(wifissid, 0, sizeof(wifissid)); snprintf(wifissid, strlen(jsonTemp->valuestring) + 1, "%s", jsonTemp->valuestring); jsonTemp = cJSON_GetObjectItem(json, "pwd"); memset(wifipwd, 0, sizeof(wifipwd)); snprintf(wifipwd, strlen(jsonTemp->valuestring) + 1, "%s", jsonTemp->valuestring); cJSON_Delete(json); free(json); // isequal } return 0; }小程序的NFC,需要腾讯提供的NFC组件。其使用过程如下小程序写入的是json,并在写入时编码,值得一说的是,编码时增加3个ASCII码,NFC的固定规范var payload = JSON.stringify({ "product": that.data.selectedProduct, "device_id": device.device_id, "secret": device.secret, "ssid": wifi.ssid, "pwd": wifi.pwd }) let records = [{ id: new ArrayBuffer(), payload: stringToBuffer(payload, "02,65,6E"), type: stringToBuffer('T'), tnf: 1 }] ndef.writeNdefMessage({ records: records, success: (res) => { console.log('writeNdefMessage success res:', res) that.setData({ setNfcText: '配置成功,请重启开发板', btnNfcText: '确定' }) }, complete: (res) => { nfc.stopDiscovery(); } })
-
开发软件:mdk v5 +stm 32cubmx过程是这样的,我需要用代码的方式来控制esp8266,但我只知道可以使用AT指令控制esp8266,所以我使用uart发送AT指令过去没反应,也不知道是啥问题,求助大神
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签