|
本帖最后由 kennan 于 2011-8-20 22:03 编辑
2530+zstack2.3.1-1.4.0适用
文中为了清晰,使用了颜色,我就不直接粘贴了,而是上传文档。看完了要顶噢。又修改了一下,增加了一个处理串口数据并写回uart函数,不过我没办法删除原来文件,所以你能看到两个,呵呵,自己区分吧。
好人做到底,我把按照上面思想修改的GenericApp.c文件也传上来吧,你只要用我这个文件替换你原来的协议栈例子genericapp.c就可以了。我增加了几处内容,每一处都是用
/*****************************************
*Added by kennan for demonstrating UART begin.
******************************************/
/*****************************************
*Added by kennan for demonstrating UART end.
******************************************/
包围的,自己找找看吧。另外我把MT_UART.c中的void MT_UartProcessZToolData ( uint8 port, uint8 event )文件中
/* Make sure it's correct */
//if ((MT_UartCalcFCS ((uint8*)&pMsg->msg[0], MT_RPC_FRAME_HDR_SZ + LEN_Token) == FSC_Token))
{
osal_msg_send( App_TaskID, (byte *)pMsg );
}
//else
{
/* deallocate the msg */
;// osal_msg_deallocate ( (uint8 *)pMsg );
}
这一段进行了注释,即不需要进行校验,如果你想校验,串口发来的数据也要先算好校验发过来。
另外,编译器设置要加上ZTOOL_P1,其余关于MT的都可以去掉,这么使用串口就不能再用作MT功能了。
试验结果:
串口输入数据为:FE 05 01 02 03 04 05 06 07 00
即:FE是帧头,05是从03开始位置的数据字节数,01 和02 可以看作命令,03,04,05,06,07是5个数据负载,00这个地方应该是校验和,我已经禁止校验了,但是还是要保留这个字节位置,你可以输入任意数。
串口输出数据:05 01 02 03 04 05 06 07
因为void MT_UartProcessZToolData ( uint8 port, uint8 event )函数已经把帧头和校验和字节去掉了,所以发上来这样的数据。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|