Protel DXP/Altium Designer快捷键全解析:从入门到精通的效率革命
2026/6/7 14:00:14
//header file/*types of master commands*/#define FALLBACK 0x5A#define MASTERIDENT 0x95#define DEVICEIDENT 0x96#define DEVICE_STARTUP 0x97#define PD_OUTOUT_OPERATE 0x98#define DEVICE_OPERATE 0x99#define DEVICE_PREOPERATE 0x9A//source fileswitch(slave_state){caseFALLBACK:{//to add your codebreak;}caseMASTERIDENT:{break;}caseDEVICEIDENT:{break;}caseDEVICE_STARTUP:{break;}casePD_OUTOUT_OPERATE:{break;}caseDEVICE_PREOPERATE:{break;}caseDEVICE_OPERATE:{break;}default:{break;}}//define communication command#define COMM_SERVER_SCAN 0x0001#define COMM_SERVER_INFO 0x0002#define COMM_SERVER_DATA 0x0003#define COMM_SERVER_DONE 0x0004//define structtypedefstruct{uint16_tuiCmd;//communication commandvoid(*pHandler)(CommServerPack_t *pStr);//function pointer} CommServerHandler_t;//define struct arrayconstCommServerHandler_t g_strCommServerHandler[] ={{ COMM_SERVER_SCAN, fCommServerVendorInfo},{COMM_SERVER_INFO, fCommServerVendorInfo},{COMM_SERVER_DATA, fCommServerVendorInfo},{COMM_SERVER_DONE, fCommServerVendorInfo},{0,0},};// define communication info handlevoidfCommServerVendorInfo(CommServerPack_t *pStr){//add your code}//state machine applicationfor(i =0;; i++){if(g_strCommServerHandler[i].uiCmd ==0x00){break;}elseif(strRecvPack.uiCmd == g_strCommServerHandler[i].uiCmd){g_strCommServerHandler[i].pHandler(&strRecvPack);break;}}