| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 | #ifndef __plan_H#define __plan_H#include "weight.h"/* *铲车协议示例旧:显示:7E 15 02 F1 7E 45 C7 EB C8 A1 BC C6 BB AE 20 20 20 20 20 20 20 30 A01号键:7E 05 01 14 01 03 632号键:7E 05 01 14 02 04 61新:显示:7E 15 01 A1 7E 45 C7 EB C8 A1 BC C6 BB AE 20 20 20 20 20 20 20 30 F11号键:7E 05 01 A2 01 01 D72号键:7E 05 01 A2 02 00 D7 * * 数据需要insert 0x7D and follow it with the byte to be escaped XOR’d with 0x20:? 0x7E – Frame Delimiter? 0x7D – Escape? 0x11 – XON? 0x13 – XOFFExample -  Raw serial data frame (before escaping interfering bytes):  ?     0x7E 0x00 0x02 0x23 0x11 0xCB0x11 needs to be escaped which  results in the following frame:  ?0x7E 0x00 0x02 0x23 0x7D 0x31 0xCBNote: In the above example, the length of the raw data (excluding the checksum) is 0x0002 and thechecksum of the non-escaped da ta (excluding frame delimiter and length) is calculated as:?0xFF - (0x23 + 0x11) = (0xFF - 0x34) = 0xCB. * ---------------------------------------上传协议------------------------------------------------------------------------------ * key0 协议(上报实时重量):0x7E 0x0A 0x01 0xF0 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01     1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 28位重量(四段) + 1帧编号 + 1校验 * key1 协议(上报1号按键):0x7E 0x0B 0x01 0xF1 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 7位重量 + 1位任务顺序号 + 1帧编号 + 1校验 * key2 协议(上报2号按键):0x7E 0x0B 0x01 0xF2 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01  1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 7位重量 + 1上次接收顺序号 + 1帧上次inorout + 1帧编号 + 1校验 * key5 协议(上报5号按键):0x7E 0x0B 0x01 0xF5 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01  1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 7位重量 + 1上次接收顺序号 + 1帧上次inorout + 1帧编号 + 1校验 * key8 协议(取时间):0x7E 0x02 0x01 0xF8                                                   1位起始位 + 1位长度 + 1位源地址 + 1位命令 + 1帧编号 + 1校验 * ---------------------------------------设置协议------------------------------------------------------------------ * key17 协议(设置WeightConst_SBType):0x7E 0x0C 0xFF 0x17 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x00  0x00  1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 8位地址 + 1位帧编号 + 1校验 * * key16 协议(设置无线API模式):0x7E 0x05 0xFF 0x16 0x01 0x00 0x00                                  1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位api + 1位帧编号 + 1校验 * key18 协议(设置时间):0x7E 0x09 0xFF 0x18 0x00 0x00 0x00 0x00 0x00 0x00 0x00                  1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 5位时间 + 1位上次上传的帧编号 + 1校验 * * key19 协议(设置地址):0x7E 0x05 0x01 0x19 0x01 0x00 0x00                                      1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验 * * key1A 协议(设置提取类型地址):0x7E 0x05 0x01 0x1A 0x01 0x00 0x00                              1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验 * key1B 协议(设置网络地址):0x7E 0x05 0x01 0x1A 0x01 0x00 0x00                              1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验 * * ---------------------------------------铲车协议--------------------------------------------------------------------------------------- * key14 协议(无线按键):     7E 05 01 A2 02 01 64  二号键        7E 05 01 A2 01 01 65  一号键        1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验 * keyF4 协议(回复无线按键): 7E 05 01 A3 02 01 85  二号键        7E 05 01 A3 01 01 86  一号键        1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验 * keyF1 协议(铲车显示):     7E 15 01 A1 7E 45 C7 EB C8 A1 BC C6 BB AE 20 20 20 20 32 35 33 33 63    1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 18位内容 + 1校验 * ---------------------------------------下载协议--------------------------------------------------------------------------------------- * * key10 协议(回复实时重量):0x7E 0x04 0x01 0x10 0x00 0x01  1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验 * key11 协议(回复1号按键): 0x7E 0x04 0x01 0x11 0x00 0x01  1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验 * key12 协议(回复2号按键): 0x7E 0x19 0x01 0x12            1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 23位//////////////////F0                7E 20 05 F0 51 76 A8 EF 01 CA 00 51 76 A9 02 00 80 00 51 76 A9 11 FF F2 00 51 76 A9 20 FF F2 00 28 36key10             Output:7E 04 05 10 28 40F1/F2/f3          7E 0F 03 F3 51 74 C3 14 8A D0 00 00 00 01 00 0B 7A                  key11							Output:7E 04 03 11 0B 5EF4/f5             7E 0F 01 F4 51 74 BD 2E 00 00 00 00 00 00 00 01 CC                  7E 0F 01 F5 51 74 BD 2F 00 00 00 00 00 01 00 02 C8Key12             Output:7E 0D 01 12 D2 BB 31 33 A0 0F 20 08 01 11 87key15             Output:7E 1A 01 15 BA C3 DC D9 DE A3 B2 DD 20 20 20 20 20 20 20 20 01 8F 08 0C 80 01 11 D9F8                7E 04 01 F8 00 8418                Output:7E 08 01 18 51 74 BB E5 01 FA16/17/19/1a/1b    0x7E 0x05 0x01 0x19 0x01 0x00 0x00   1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位帧编号 + 1校验 *////////////////////** ---------------------------------------铲车协议---------------------------------------------------------------------------------------* key14 协议(无线按键):     7E 05 01 A2 02 01 64  二号键        7E 05 01 A2 01 01 65  一号键        1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验* keyF4 协议(回复无线按键):  7E 05 01 A3 02 01 85  二号键        7E 05 01 A3 01 01 86  一号键        1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 1位上次上传的帧编号 + 1校验* keyF1 协议(铲车显示):     7E 15 01 A1 7E 45 C7 EB C8 A1 BC C6 BB AE 20 20 20 20 32 35 33 33 63    1位起始位 + 1位长度 + 1位目标地址 + 1位命令 + 18位内容 + 1校验*/union frameinit_t {	  struct {						uint8_t frameHead;//帧头			uint8_t frameLen;//数据长度Number of bytes between length and checksum fields.			uint8_t addr;//器件ID			uint8_t frameType;//帧类型,Transmit Request		}__attribute__((packed)) data;		uint8_t Buffer[4];};//计划结构union plan_comp_t          {		struct {			  uint16_t sumweight:16;       // 总重			  uint8_t reget:1;          // =0  第一次,=1 重取		        uint8_t shifts:2;       // 班次					  uint8_t reserved:1;       // 保留			  uint8_t swpos:4;           // 总重量小数位数,=0  无小数点,=1 1位小数,=2 2位小数,=3 3位小数			  uint8_t incount:8;        // 上料数			  uint8_t outcount:8;       // 发料数						uint8_t frameid:4;			   // 本协议帧编号					uint8_t frameid_l:4;      //对应回复的id 				}__attribute__((packed)) data;		uint8_t Buffer[6];};//配方复合标志的结构union pf_comp_t          {		struct {						  uint8_t az_pos:2;         // 跳转域绝对值小数位数,=0  无小数点,=1 1位小数,=2 2位小数,=3 3位小数			  uint8_t autosecond:2;     // =0  不进行自动判断,=1 合理阶段停留3秒,=2 合理停留6秒,=3 合理停留9秒			  uint8_t tw_pos:2;         // 目标重量小数位数,=0  无小数点,=1 1位小数,=2 2位小数,=3 3位小数			  uint8_t tW_minus:1;       // 目标重量的正负,=0 正数 bit6=1 负数			  uint8_t addorout:1;       //  加投料说明,=0 加料 bit7=1 投料						  uint8_t autozone:8;       // 跳转域						  uint8_t firstReget:1;     // 本计划是重取计划的第一个料或舍			  uint8_t isMix:1;          // 是否混合料			  uint8_t JMP:1;            //是否一旦超过设置重量,就自动跳转			  uint8_t delaytime:4;			  uint8_t needBegin:1;      // 							uint8_t pfsort:8;         // 操作ID  操作ID就是一个计划中的每一步的唯一标识,不同计划的操作ID可以相同,同一计划中的ID不可以相同                                  // 有效范围是0-200,如果=0xFE,则本计划结束,如果=0xFF,则当天计划结束							uint8_t frameid:4;      // 本协议帧编号				uint8_t frameid_l:4;			  // 对应0x16帧编号					}__attribute__((packed)) data;		uint8_t Buffer[5];};//按键重量的结构union TimeConst_t          {		struct datetime_t data;			uint8_t Buffer[4];};extern union frameinit_t dataframehead;extern union plan_comp_t plan_comp;extern union pf_comp_t pf_comp;extern unsigned char WeightConst_product[40];extern uint8_t WeightConst_feed[40]; //原料名称extern unsigned char WeightConst_Nextfeed[40]; //临时表extern signed short WeightConst_NextWeightTarget;      //目标重量extern signed short WeightConst_WeightTarget;      //目标重量extern signed short WeightConst_WeightTargetTemp;extern unsigned char CompleteTarget_order; //已完成的顺序extern unsigned char XbeeConst_lastinorout;extern signed short WeightConst_WeightTargetAllowMin;  //目标重量的允许跳转范围extern short WeightConst_WeightTargetAllowMax;  //目标重量的允许跳转范围extern unsigned char WeightConst_PlantempList[40]; //计划临时表extern unsigned char WeightConst_PlanLastList[40]; //计划临时表extern unsigned char XbeeConst_FrameNum;extern unsigned short WeightConst_DELAYTIME;extern unsigned char WeightConst_WeightHaveBegin;  //已经确认开始extern unsigned char WeightConst_Product_JS;extern unsigned char WeightConst_Stop;extern unsigned short WeightConst_DELAYON;extern unsigned char XbeeConst_CanSend;extern unsigned char XbeeConst_lastsort;extern unsigned char WeightConst_Product_Run; //开始运行extern unsigned short WeightConst_Product_Run_time; //开始运行时间extern unsigned char WeightConst_Run; //整体开始运行extern unsigned char getPlaning;extern unsigned char WeightConst_AutoSingleNSecondPoint;extern rt_sem_t pop_product_sem;extern rt_sem_t setTIME_lock;extern rt_sem_t delay_key_sem;extern unsigned char delayKeying;extern void setTIME_thread(void);extern void sendgetTime(void);extern void SendWifi_thread(void);extern void sendkey1(int BtnType, int remote);extern void sendkey2(int BtnType);extern void setWeightConst_initProduct(void);extern void getTargetWeight(void);extern void pop_product_thread(void);extern void delay_key_thread(void);extern void setSendFrame_t(unsigned char Broadcast,unsigned char Radius,unsigned char TO);extern void Planback(void);extern union TimeConst_t TimeConst;#endif 
 |