zoukankan      html  css  js  c++  java
  • 串口透传

    串口透传

    一、 串口能打印出“hello world”

    1、串口初始化

    在初始化函数中加入:

    MT_UartInit();

    更改流控:

    #define MT_UART_DEFAULT_OVERFLOW FALSE

    编译选项:

    clip_image001

    2、 登记任务号

    MT_UartRegisterTaskID(task_id);//登记任务号

    3、串口发送:

    HalUARTWrite(0,”Hello World
    ”,12); //(串口0,‘字符’,字符个数。)

    4、加入头文件:

    #include “MT_UART.h”

    二、 无线传输

    1、

    我们打开SampleApp.C文件,搜索找到函数:

    void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )

    在case SAMPLEAPP_PERIODIC_CLUSTERID:下面加入

    HalUARTWrite(0,”I get data
    ”,11);

    2、

    分别下载到协调器和终端;

    如果协调器收不到数据,可以重启一下终端。

    3、接收函数更改如下:

    //HalUARTWrite(0,"I get data
    ",11); 
    HalUARTWrite(0, &pkt->cmd.Data[0],pkt->cmd.DataLength); //打印收到数据
    HalUARTWrite(0,"
    ",1); // 回车换行

    3、 发送函数更改如下:

    void SampleApp_SendPeriodicMessage( void )
    {
    uint8 data[10]={'0','1','2','3','4','5','6','7','8','9'}; 
    if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
    SAMPLEAPP_PERIODIC_CLUSTERID,
    10,//1,
    data,//(uint8*)&SampleAppPeriodicCounter,
    &SampleApp_TransID,
    AF_DISCV_ROUTE,
    AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
    {
    }
    else
    {
    // Error occurred in request to send.
    }
    }

    4、再次下载

    三、 串口透传

    1、 添加串口有数据过来事件:

    switch ( MSGpkt->hdr.event )
    {
    case CMD_SERIAL_MSG: //串口收到数据后由MT_UART层传递过来的
    //数据,用网蜂方法接收,编译时不定义MT
    //相关内容
    SampleApp_SerialCMD((mtOSALSerialData_t *)MSGpkt); 
    break;

    2、 添加事件处理函数:

    void SampleApp_SerialCMD(mtOSALSerialData_t *cmdMsg) 
    { 
    uint8 i,len,*str=NULL; //len有用数据长度
    str=cmdMsg->msg; //指向数据开头
    len=*str; //msg里的第1个字节代表后面的数据长度
    /********打印出串口接收到的数据,用于提示*********/ 
    for(i=1;i<=len;i++) 
    HalUARTWrite(0,str+i,1 );
    HalUARTWrite(0,"
    ",1 );//换行
    //HalUARTWrite(0,str+1,len); 
    if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc, 
    SAMPLEAPP_COM_CLUSTERID,//自己定义一个
    len+1, // 数据长度
    str, //数据内容
    &SampleApp_TransID,
    AF_DISCV_ROUTE, 
    AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) 
    { 
    } 
    else 
    { 
    // Error occurred in request to send. 
    }
    }

    3、SAMPLEAPP_COM_CLUSTERID定义如下:

    clip_image002

    3、 添加头文件:

    #include "MT.h"

    4、 声明:

    void SampleApp_SerialCMD(mtOSALSerialData_t *cmdMsg);

    5、 串口通过无线的方式发数据过来:

    void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
    {
    uint16 flashTime;
    uint8 i,len; 
    switch ( pkt->clusterId )
    { 
    case SAMPLEAPP_COM_CLUSTERID: //如果是串口透传的信息
    len=pkt->cmd.Data[0]; 
    for(i=0;i<len;i++) 
    HalUARTWrite(0,&pkt->cmd.Data[i+1],1);//发给PC机
    HalUARTWrite(0,"
    ",1); // 回车换行
    break;
    /*case SAMPLEAPP_PERIODIC_CLUSTERID:
    //HalUARTWrite(0,"I get data
    ",11); 
    HalUARTWrite(0, &pkt->cmd.Data[0],pkt->cmd.DataLength); //打印收到数据
    HalUARTWrite(0,"
    ",1); // 回车换行
    break;
    case SAMPLEAPP_FLASH_CLUSTERID:
    flashTime = BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2] );
    HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );
    break;*/
    }
    }
  • 相关阅读:
    IO流
    简单JSON
    开发流程
    命名规范
    策略模式
    Git的使用
    Markdown的使用
    代理模式
    装饰者模式
    POJ 2976 3111(二分-最大化平均值)
  • 原文地址:https://www.cnblogs.com/smbx-ztbz/p/4418556.html
Copyright © 2011-2022 走看看