⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 protocol.c

📁 基于C51的通用人机界面程序
💻 C
字号:
#define _protocol_ 
#include "general.h"
#include "com.h"
/***********************************************************************
应答规则: 	1.所有通讯由MCU发起;2.下位机必须应答
			3.上位机根据情况发报告帧(正确y,重发n,放弃q)
共下面几种帧类型:
1.命令帧:	"开始采集(s)","取消采集(e)","查询参数(p)"(MCU)
			"正确回应(y)","请求重发(n)""放弃通信(q)"(DSP)
---------------------------------
帧头标志|帧类型|效验和|帧尾标志
   '@'  | 'x'  |   x  | '\n' 
    1   |  1   |   2  |   1
-----------------------------------
2.数据帧:	"光标位置(d)"、计算结果(r)"
			"仪器常数(a)"、"纬度(l)"、"比例系数(c)"、"周期个数(m)"
			"错误报告(f)"
-----------------------------------------
帧头标志|帧类型|数据内容|效验和|帧尾标志
   '@'  | 'x'  |   x    |    x  |  '\n'
    1   |  1   |   1    |    2  |   1
------------------------------------------
*************************************************************************/



/*****************************************************************
pack按协议打包数据(发送,不中断)
*****************************************************************/
//Master:命令帧,5字节(FR_Start)  
void frame_cmd(uchar cmd){
    //uchar bcc=FR_STX;
	//bcc=bcc^cmd;
	//
    put_char(FR_STX); 
	put_char(cmd); 
	//put_char((bcc>>4)+'0'); 		//高四位在前
	//put_char((bcc&0x0f)+'0'); 	//低四位
	put_char('0');
	put_char('0');
	put_char('0');   
	put_char('0');
	put_char('0');
	put_char('0');
	put_char('0');    				//无数据发7个0
	put_char(FR_ETX); 
}

//Master(4)&Slave(6):数据帧(1+1+1+6+2+1)
//1.CCD数据:	cmd=d,
//2.计算结果:	cmd=r
//3.仪器常数:	cmd=a
//4.纬度:		cmd=l
//5.比例系数C:	cmd=c
//6.周期个数:	cmd=m
void frame_data(uchar cmd,
				uchar *databuf,
				uchar len){			//数据域不足7位补零
    uchar i;
	i=7-len;
	//uchar bcc=FR_STX;
	//bcc=bcc^cmd;
	//for(i=0;i<len;i++)	 bcc=bcc^*(databuf+i);
	//bcc=bcc^len;
	//	    
	put_char(FR_STX); 
	put_char(cmd);
 	put_string(*databuf,len);
	if(i>0){
		do{	put_char('0');i--;}		//补足0
		while(i>0);
	}
	//put_char(len+'0');
	//put_char((bcc>>4)+'0'); 		//高四位
	//put_char((bcc&0x0f)+'0'); 	//低四位
	put_char(FR_ETX); 
	   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -