STM32 EC200N-CN MQTT链接服务器开发实录

16 篇文章 1 订阅
订阅专栏
2 篇文章 0 订阅
订阅专栏

开发环境

硬件:STM32F091CBT6 、EC200N-CN模块板 、USB-TTL串口助手

软件:VS CODE  、 STM32CUBEMX、IAR 8.32

1.硬件设计

连接好EC200N-CN模块和单片机主板。

EC200N-CN模块设计时注意供电和IO电平转换。

EC200N-CN是低功耗的,其主串口用的是1.8V电压域的,一般使用的STM32F0系列单片机IO口是3.3V电平的,两者连接的时候需要电平转换。

电平转换在EC200N的硬件设计手册里有电路图。

我这边设计的EC200N-CN模块预留了

PWRKEY(模块开关机引脚)

RESET_N(模块复位引脚)

主串口-RXD

主串口-TXD引脚。

基本这几个引脚就够一般的物联网应用使用了。

注意注意:

我遇到的大坑1:

上电后,PWKEY引脚一定要低电平才行,低电平才能打开模块,否则模块不开机收不到AT指令,一开始犯了这个错误,因为模块自己印出来的PWKEY通过三极管做了反向处理,理解错了开机电平,导致模块一直不开机。

我遇到的大坑2:

和单片机通讯时,单片机这边因为电平转换要加上拉电阻。

如果没有上拉电阻,两者无法通讯。

EC200N-CN和STM32F091CB 串口通讯故障排查。

即使加了上拉电阻后,任然存在一个BUG。

后面才解决掉。

2.程序编写

配置好单片机IO口的串口模块、波特率,然后就直接发送AT指令就可以了。

ATI

AT+CPIN?

AT+CSQ

AT+CGREG?

AT+CGATT?

AT+QMTCFG="recv/mode",0,0,1
AT+QMTOPEN=0,"www.sukon-cloud.com",9006链接物联网平台
AT+QMTCONN=0,"SMETTest","SMETTest","123456"登录平台
AT+QMTPUBEX=0,0,0,0,"sys/device/SMETTest/variant_data",85发布MQTT消息
{"type":"variant_data","version":"1.0","time":1638766638000,"params":{"UAV":220.9}}

在收到>后发送保文数据。

常用AT指令说明


1、AT
说明: 检测AT指令收发是否正常
模组收到指令回复:

AT
OK


2、AT+CPIN?
说明: 查询SIM卡状态(是否插入SIM卡、锁定SIM卡、解锁SIM卡),返回 READY则表示模组正常
模组收到指令回复:

AT+CPIN?
+CPIN: READY

OK


3、AT+CREG?
说明: 查询当前网络注册状态,正常则回复 +CREG: 0,1
模组收到指令回复:

AT+CREG?
+CREG: 0,1

OK


4、AT+CEREG?
说明: 查询当前EPS网络注册状态,正常则回复 +CEREG: 0,1
模组收到指令回复:

AT+CEREG?
+CEREG: 0,1

OK

5.AT+QMTCFG="recv/mode",0,0,1

模组收到指令回复:

AT+QMTCFG="recv/mode",0,0,1
OK

6.AT+QMTOPEN=0,"www.sukon-cloud.com",9006

模组收到指令回复:

00> AT+QMTOPEN=0,"www.sukon-cloud.com",9006
00> 
00> OK
00> 
00> +QMTOPEN: 0,0

7.AT+QMTCONN=0,"SMETTest","SMETTest","123456"

模组收到指令回复:

00> AT+QMTCONN=0,"SMETTest","SMETTest","123456"
00> 
00> OK
00> 
00> +QMTCONN: 0,0,0

 其中 "SMETTest"为速控云第三方BOX的ID,如果ID变更了,这里也要修改。

8.AT+QMTPUBEX

AT+QMTPUBEX=0,0,0,0,"sys/device/SMETTest/variant_data",85

模组收到指令回复:

00> AT+QMTPUBEX=0,0,0,0,"sys/device/SMETTest/variant_data",85
00> 
00> >

 其中 "SMETTest"为速控云第三方BOX的ID,如果ID变更了,这里也要修改。

模组收到指令回复:

9.{"type":"variant_data","version":"1.0","time":1638766638000,"params":{"UAV":220.9}}

模组收到指令回复:

00> > {"type":"variant_data","version":"1.0","time":1638766638000,"params":{"UAV":220.5}}
00> 
00> OK

上面是简化测试的指令,后面我把三相电压和电流和功率都加上了,示例如下:

{"type":"variant_data","version":"1.0","time":1638766638000,"params":{"UAV":236.3,"UBV":235.5,"UCV":236.1,"IAA":71.0,"IBA":67.3,"ICA":72.1,"PAW":15447.3,"PBW":14779.3,"PCW":15993.0,"PTW":46202.7}}

测试程序:

char Sendbuf[EC20_SEND_BUFF_SIZE];
ErrorStatus F_TestEC200N(uint8_t *cmd)
{
    // scanf("%s",buf);

    uint8_t lu8_cmd =0;
    lu8_cmd = (uint8_t)(*cmd);
    memset(&Sendbuf[0],0x00,EC20_SEND_BUFF_SIZE);
    // sprintf((char*)&Sendbuf[0],"%s\r\n","AT+CPIN?");  
    
    switch (lu8_cmd)
    {
    case 0:
        return 1;
        break;
    case 1:
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","AT");  
        break;
    case 2:
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","ATI");  
        break;       
    case 3://查询SIM卡
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","AT+CPIN?");  
        break;      
    case 4://查询信号,31最大,小于10证明信号超级不好
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","AT+CSQ");  
        break;      
    case 5://查询PS注册情况,注册则返回1,证明获取IP,可以进行网络使用啦
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","AT+CGREG?");  
        break;         
    case 6://附着网络是否成功
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","AT+CGATT?");  
        break;    
    case 7://设置数据格式
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","AT+QMTCFG=\"recv/mode\",0,0,1");  
        break;   

    case 8://打开工业物联网云端口
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","AT+QMTOPEN=0,\"www.sukon-cloud.com\",9006");  
        break;   

    case 9://这步执行成功后,设备应该在线了。
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","AT+QMTCONN=0,\"SMETTest\",\"SMETTest\",\"123456\"");  
        break;          
    case 10://发送数据命令
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","AT+QMTPUBEX=0,0,0,0,\"sys/device/SMETTest/variant_data\",85");  
        gu16_len = strlen(Sendbuf);
        MX_FEED_IWDG();   
        HAL_UART_Transmit(&huart4, (uint8_t *)&Sendbuf,61, 0xffff);//huart1需要根据你的配置修改
        MX_FEED_IWDG();   
        MX_FEED_IWDG(); 
        HAL_Delay(800);  
        
        memset(&Sendbuf[0],0x00,EC20_SEND_BUFF_SIZE);
        sprintf((char*)&Sendbuf[0],"%s\r\n","{\"type\":\"variant_data\",\"version\":\"1.0\",\"time\":1638766638000,\"params\":{\"UAV\":220.5}}");   
        gu16_len = strlen(Sendbuf);        
        HAL_UART_Transmit(&huart4, (uint8_t *)&Sendbuf,87, 0xffff);//huart1需要根据你的配置修改
        (*cmd) = 0;           
        return 1;
        break;    
    case 11://Paload数据
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","{\"type\":\"variant_data\",\"version\":\"1.0\",\"time\":1638766638000,\"params\":{\"UAV\":220.5}}");  
        break;      

    case 20://清除链接
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n"," AT+QMTDISC=0");  
        break;    
        
    case 21://清除链接
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n"," AT+QMTDISC=1");  
        break;   

    case 22://清除链接
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n"," AT+QMTDISC=2");  
        break;   

    case 23://清除链接
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n"," AT+QMTDISC=3");  
        break;           
        
    case 24://清除链接
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n"," AT+QMTDISC=4");  
        break;    

    case 25://清除链接
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n"," AT+QMTDISC=5");  
        break;           
        
    default:
        break;
    }       
    MX_FEED_IWDG();   
    HAL_UART_Transmit(&huart4, (uint8_t *)&Sendbuf,86, 0xffff);//huart1需要根据你的配置修改
    (*cmd) = 0;        
}

在编程的时候,遇到一个问题,我使用sprintf函数转存要发送的字符串,sprintf输出双引号的时候,要加“\”如下

    case 8://打开工业物联网云端口
        /* code */
        sprintf((char*)&Sendbuf[0],"%s\r\n","AT+QMTOPEN=0,\"www.sukon-cloud.com\",9006");  
        break;   

遇到一个BUG:

BUG描述:

我选用了速控云的物联网平台,往平台上上传数据。

平台的教程后面再说,等有空再补充。

AT+QMTPUBEX=0,0,0,0,"sys/device/SMETTest/variant_data",85

 再次发送

{"type":"variant_data","version":"1.0","time":1638766638000,"params":{"UAV":220.9}}

 服务器收到的总是HEX数据   一堆00000003241234124  然后一堆数字

经过排查发现,我发送的时候,为了方便,没有计算当前AT指令的长度。每次发送都是发送  固定长度字节的数据(长于当前AT指令的总长度) 

HAL_UART_Transmit(&huart4, (uint8_t *)&Sendbuf,EC20_SEND_BUFF_SIZE, 0xffff);
//EC20_SEND_BUFF_SIZE 为 150

而AT+QMTPUBEX= 指令之后模块会回复  >  然后用户输入要发送的数据,因为我多发了很多 00  导致服务器收到了很多0000  然后整条报文都被识别为hex报文。

AT+QMTPUBEX=0,0,0,0,"sys/device/SMETTest/variant_data",85

修改:  按实际发送大小发送,确保 AT+QMTPUBEX= 指令之后不能发一些无关的字符。

修改后,可以顺利上传平台了。

        sprintf((char*)&Sendbuf[0],"%s\r\n","AT+QMTPUBEX=0,0,0,0,\"sys/device/SMETTest/variant_data\",85");  
        gu16_len = strlen(Sendbuf);
        MX_FEED_IWDG();   
        HAL_UART_Transmit(&huart4, (uint8_t *)&Sendbuf,61, 0xffff);//huart1需要根据你的配置修改

EC200u-cn-4G模块连接OneNet通过MQTT协议上传GPS数据-序号111.zip
06-01
本项目介绍EC200U-CN 4G模块通过MQTT协议上传GPS数据到OneNet平台,完成地图数据显示的过程。 当前的主控芯片采用MC9S12XS128MAA,通过串口连接EC200U-CN实现联网功能,通过内置的MQTT协议指令,将采集的GPS数据上传到OneNet平台,联合百度地图实现位置显示。 资料包里包含了完整的项目设计源码、项目设计文档。 专栏地址: https://blog.csdn.net/xiaolong1126626497/category_10192120.html B站视频首页:https://space.bilibili.com/68130189
stm32实现mqtt协议,程序参考
08-15
stm32实现mqtt协议,程序参考........................主要内容都来自网上
STM32功能模块/EC200
KingOne007的博客
09-13 453
EC200
EC200N-CN 资源文件下载
最新发布
gitblog_09747的博客
10-12 323
EC200N-CN 资源文件下载 EC200N-CN资源文件下载 本仓库提供了一个名为 `EC200N-CN.rar` 的资源文件下载。该文件包含了 EC200 模块的最全资源,涵盖了资料说明、硬件设计、选型手册等内容。无论你是开发者、工程师还是对 EC200 模块感兴趣的用户,这份资源都将为你提供全面的参考和指导 ...
移远EC600S-CN (4) - MQTT接入阿里云
Mark_md的博客
01-30 1万+
MQTT是一种基于 发布/订阅 模式的轻量级通信协议。MQTT专门针对物联网设备开发,是一种低开销、低带宽占用的即时通讯协议。该协议构建于TCP/IP上,旨在为低带宽和不稳定网络环境中的物联网设备,提供可靠的网络服务。它的设计思想是简单、开放、规范,易于实现,这些特点使其非常适合机器间通信(M2M)、物联网(IoT)等场景。因其协议简单、数据流量开销低、时延低、对网络条件的容忍度高等特点,特别适合于硬件受限的嵌入式设备。MQTT 最大优点在于,可以以极少的代码和有限的网络带宽,为远程设备连...
NUC980移植移远EC200N-CN模块
qq_37788182的博客
04-10 1028
这里又遇到一个麻烦,因为我是在系统开机后运行的EC200上电时序,出现这一步打印后去/dev下查看,发现没有出来ttyUSB0,ttyUSB1,ttyUSB2,但是在sys/class发现已经有了这几个设备文件。查了资料发现是开机mdev执行完之后,EC200上电没映射成对应的设备节点,所以执行mdev -s之后/dev就有了ttyUSB0,ttyUSB1,ttyUSB2。这个就是在linux内核中虚拟出/dev/ttyUSB0 ,/dev/ttyUSB1 /dev/ttyUSB2等等设备。
Desktop_ec200t_stm32mqtt_mqtt_
10-02
STM32驱动ec200t,通过MQTT调试通信猫调试工具
STM32开发 | 移远4G-Cat.1模组EC200N-CN开发
热门推荐
不积跬步无以至千里
04-18 2万+
一、硬件说明 1、引脚分配图 2、常用引脚说明 模块输入电源 引脚名 描述 VBAT_BB 模块基带电源(Vnom = 3.8 V) VBAT_RF 模块射频电源(Vnom = 3.8 V) GND 接地引脚 模块输出电源 引脚名 描述 VDD_EXT 外部电路 1.8 V 供电(Vnom = 1.8 V) 开/关机 引脚名 描述 RESET_N 模块复位(低电平有效,1.8 V 电压域,不用则悬空。) PWRKEY 模块开/
Quectel-EC200N-CN-LTE-Standard-模块产品介绍
12-20
Quectel EC200N-CN LTE Standard模块是一种高性能、低功耗的蜂窝通信模块,采用先进的LTE技术,可为各种物联网设备提供可靠的无线连接。 该模块支持全球范围内的LTE网络,可实现高速数据传输和低延迟通信,最高可支持150Mbps的下行速率和50Mbps的上行速率。同时,它还支持GPRS/EDGE、CDMA1X和WCDMA等3G和2G网络,可为设备提供多样的网络连接选择。 EC200N-CN模块的尺寸小巧,仅为27.0 x 27.0 x 2.0mm,非常适合于空间受限的应用场景。它还具有宽电压输入范围,可在2.8V至4.2V的电压范围内稳定工作,并且支持休眠模式,可有效降低设备的功耗。 该模块集成了 Quectel 自主研发的 GNSS 天线开关,支持 GPS、GLONASS、Galileo 和北斗等多种 GNSS 系统,可实现高精度的位置定位。此外,EC200N-CN模块还支持 Wi-Fi、Bluetooth 和 Sub-1GHz 等其他无线技术,可为设备提供全面的无线连接解决方案。 Quectel EC200N-CN LTE Standard模块具有出
Quectel_EC200x&EC600S&EG912Y系列_MQTT_应用指导_V1.0.pdf
11-11
此文件为移远EC200S_MQTT指令集,官网的无权限下载,故在此分享,可以直接登陆阿里云,不需要间接通过TCP/IP指令开发阿里云C-SDK包
EC200S开发资料包.rar
10-13
包括了 EC200S_参考设计手册_V1.0 Quectel_EC200S_硬件设计手册_V1.0 Quectel_EC200x_Series_AT_Commands_Manual_V1.0
EC200N-CN.rar
11-12
EC200N-CN.rar 是一个关于EC200系列产品的综合资源压缩包,主要针对的是EC200N-CN型号。这个压缩包包含了多个方面的信息,旨在为用户提供全面的了解和指导,从产品规格到软件应用,再到硬件设计与选型。下面将对这些...
Quectel-EC200U-CN-Mini-PCIe-C(Audio版本)-硬件设计手册-V1.0
02-22
### Quectel EC200U-CN Mini PCIe-C(Audio版本) 硬件设计手册关键知识点解析 #### 一、概述 Quectel EC200U-CN Mini PCIe-C(Audio版本)是一款专为中国市场设计的LTE标准模块。该模块采用了Mini PCIe-C封装,并集成...
STM32 EC200N-CN MQTT链接服务器开发实录_ec200n-cn模块
2401_84009679的博客
04-05 741
电平转换在EC200N的硬件设计手册里有电路图。我这边设计的EC200N-CN模块预留了PWRKEY(模块开关机引脚)RESET_N(模块复位引脚)主串口-RXD主串口-TXD引脚。基本这几个引脚就够一般的物联网应用使用了。
移远EC200通过证书接入(MQTTS)阿里云物联网平台
weixin_43837908的博客
09-13 1171
返回CONNECT后,将CA证书用文本打开,复制里面所有内容,然后发送出去。返回CONNECT后,将设备证书用文本打开,复制里面所有内容,然后发送出去。返回CONNECT后,将设备私钥用文本打开,复制里面所有内容,然后发送出去。发送AT+QFUPL=“user_key.key”,1704,100。发送AT+QFUPL=“cacert.crt”,1388,100。发送AT+QFUPL=“client.cer”,1204,100。
使用移远EC200N-CN模组PING谷歌
u014448875的博客
04-14 2959
ping谷歌 需要使用漫游卡,在国内可以连接外网。 指令见于《Quectel_EC2x&EG9x&EM05_TCP(IP)_AT_Commands_Manual_V1.0.pdf》: 参数说明很多,可以分为三部分。指令参数,响应参数,最终结果。文档内有一个ping百度的示例: 含义分别为: AT+QPING=1,“www.baidu.com”1: 上下文 ID。 范围是 1-16。 www.baidu.com: 格式为域名或点分十进制 IP 地址。 未设置 设置等待每个 p
使用T5模型进行文本提取
04-05
T5模型是一种基于Transformer架构的预训练模型,可以用于多种自然语言处理任务,包括文本提取。以下是使用T5模型进行文本提取的步骤: 1.准备数据 首先,需要准备一些文本数据,例如一篇文章、一段对话等等。这些文本数据可以来源于不同的领域和语言,但需要保证其格式一致。同时,需要确定待提取的信息类型,例如人名、地名、日期等等。 2.选择模型 选择合适的T5模型,可以根据数据量、计算资源、精度要求等因素进行选择。目前,有许多预训练的T5模型可供选择,例如T5-small、T5-base、T5-large等等。 3.微调模型 在准备好数据和选择好模型后,需要对模型进行微调,以适应特定的任务。微调的过程包括模型的训练、验证和调参。在微调过程中,需要使用标注好的数据进行训练,并根据验证集的表现调整模型参数。 4.预测结果 在微调完成后,可以使用微调好的模型对新的文本进行提取。具体来说,可以将待提取的文本输入到模型中,模型会输出相关信息的概率分布。根据概率分布,可以确定文本中哪些部分包含了所需的信息。 总之,使用T5模型进行文本提取需要准备数据、选择模型、微调模型和预测结果。这些步骤需要一定的技术和经验,但可以帮助提高文本提取的效率和精度。
写文章

热门文章

  • 单片机开发,报错 error: #40: expected an identifier 22560
  • 拖拽生成前端网页代码 18871
  • 贴片电容造成短路烧毁的原因分析 17073
  • 什么是 :kail LINUX 10887
  • STM32 SWD下载口无法下载的原因和解决办法 10530

分类专栏

  • 单片机开发教程 16篇
  • 迪文屏开发保姆级教程 6篇
  • PCB设计开发那点事 6篇
  • 嵌入式linux 3篇
  • 数电模电知识库君 2篇
  • 自我技术性总结
  • FID开发过程
  • 树莓派搞起~ 1篇
  • 嵌入式开源项目 2篇
  • 科普 4篇
  • 量化交易
  • business
  • 在读书 1篇
  • 韦东山嵌入式学习笔记 9篇
  • UCOSII开发那些坑 1篇
  • 自己写的小算法 1篇
  • 仪器仪表计量学教程
  • 嵌入式单片机USB学习 1篇
  • 程序员学习平台
  • 嵌入式名词科普君 3篇
  • 优秀技术博客
  • QT学习资料集子 1篇
  • 单片机开发采坑实录 18篇
  • centos采坑避坑指南 1篇
  • linux系统操作命令操作教程
  • 我的linux服务器操作记录
  • JAVA大法 2篇
  • JAVA WEB 1篇
  • wiff模块使用教程
  • 物联网教程 2篇

最新评论

  • STM32读取EEPROM存储芯片AT24C512故障然后排坑记录

    dongchun_lin: 根据你的原理图 是A0被拉高,那么你的读应该是0xA3 10100011,写应是0xA2,不是A2拉高的A8

  • STM32 EC200N-CN MQTT链接服务器开发实录

    ZNB487: 您好,那个IWDG必须要添加上吗,可以删除IWDG那几行吗

  • STM32 EC200N-CN MQTT链接服务器开发实录

    ZNB487: 您好,可以上传阿里云的MQTT云平台吗

  • STM32读取EEPROM存储芯片AT24C512故障然后排坑记录

    basshailong: 地址 A8错了吧,1010 0010 吧?

  • 瑞萨单片机学习:RA4M3单片机 BOOTloader升级 跳转到主程序 主程序无法执行问题

    DJZ1992: 请问e2studio,有boot的时候app应该如何debug?烧写app固件后无法跳转到app的main。这个e2好像又不能设置APP的ROM起始地址

大家在看

  • 嵌入式C++中虚函数以及基本特性实现
  • SpringBoot集成Mongdb 106
  • 特斯拉 Optimus 机器人遭“打假”
  • 即便京东请杨笠宣传是个奇怪的决策,但是单从应届生薪资来说京东仍然不低 - 京东贪心算法面试题如何用 go 和 C++ 解决
  • 洛谷 P1038 [NOIP2003 提高组] 神经网络(拓扑排序)

最新文章

  • 一个软开关,长按开机,自动关机的实现。
  • 迪文屏开发保姆级教程6----触摸实现界面切换
  • 百模大战:AI行业的新趋势
2024年1篇
2023年29篇
2022年3篇
2021年4篇
2020年42篇
2019年17篇
2017年3篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z文的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家许昌室外不锈钢玻璃钢人物雕塑铜川动物玻璃钢雕塑厂家山东开业商场美陈价钱定做铜牛雕塑玻璃钢牛雕塑新郑不锈钢牛玻璃钢雕塑公司电缆支架玻璃钢花盆大型玻璃钢花盆采购猪年新春商场美陈绥化城市玻璃钢雕塑定做吉安景区玻璃钢雕塑定制玻璃钢熊本熊雕塑安徽玻璃钢天使人物雕塑多少钱洛阳铜玻璃钢彩绘雕塑浙江玻璃钢雕塑摆件费用宿州玻璃钢雕塑多少钱一平米嘉定区拉丝玻璃钢雕塑品牌企业舟山水果玻璃钢雕塑销售厂家玻璃钢人物园林雕塑定做厂家四川环保玻璃钢雕塑生产厂家江西方形玻璃钢花盆贵州农耕文化玻璃钢人物雕塑定制绍兴创意玻璃钢雕塑销售电话文山玻璃钢雕塑定做重庆大型玻璃钢造型雕塑制作平房玻璃钢雕塑厂成都商场美陈咨询玻璃钢陶瓷雕塑厂家曲阳玻璃钢恐龙雕塑玻璃钢雕塑打木架打包唐韵园林玻璃钢南瓜雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化