帧格式如下:功能号[FD]数据长度[LB]数据1[DS]…数据n[DS]校验和[CS] 其中LB、DS在命令帧和应答帧中无。差错控制与校验采用纵向冗余校验(LRC)。发送方校验和生成方法:将FD、LB、DS域逐个字节相加求和,在求和过程中舍弃进位,最后将所得的和(单个字节)取补码作为检验和(CS)。生成校验和的函数为:staticunsignedcharLRC(auchMsg,usDataLen) /* 函数返回unsignedchar类型的LRC结果*/unsignedchar*auchMsg; /*要计算 LRC 的报文*/unsignedshortusDataLen; /*报文的字节数 */{unsignedcharuchLRC=0; /*LRC初始化 */while(usDataLen--) /*完成整个报文缓冲区 */uchLRC+=*auchMsg++; /*缓冲区字节相加,无进位 */return((unsignedchar)(-((char)uchLRC))); /*返回二进制补码 */}接收方校验方法:将所有接收到的数据,即FD、LB、DS、CS等域逐个字节相加求和,在求和过程中舍弃进位,若结果为零(低字节)则传输无错,否则出错。应答:接收方对接收数据进行校验后,若无错则向发送方发送传输无错应答帧,若有错则向发送方发送传输出错应答帧。所需通信数据分为:数据帧、命令帧、应答帧上行数据:下位机(单片机)向上位机(PC机)传送数据⑴初始化上位机(IPC):FD=0x01(InitPC)单片机将电梯模拟器的参数发送至PC机,初始化PC机端的可视化程序。PC机上的可视化程序完成初始化后,应向单片机发送初始化完毕命令。帧格式:功能号IPC数据长度[LB]数据[DS]校验和[CS] 其中数据域格式如下:参数号1参数1……参数号n参数n ⑵发送模拟器状态信息:FD=0x02(SendMsgToPC)包括:轿厢位置,轿厢状态——上行/下行/停止,轿厢运行速度帧格式:功能号[FD]数据长度[LB]轿厢位置低字节轿厢位置高字节轿厢状态轿厢行速校验和[CS] 其中轿厢状态:上行——0x05下行——0x0A停止——0x00⑶开门命令:FD=0x03帧格式:功能号[FD]校验和[CS] ⑷开门到位命令:FD=0x04帧格式:功能号[FD]校验和[CS] ⑸关门命令:FD=0x05帧格式:功能号[FD]校验和[CS] ⑹关门到位命令:FD=0x06帧格式:功能号[FD]校验和[CS] ⑺询问上位机是否准备好:FD=0x07(IfPCReady)帧格式:功能号[FD]校验和[CS] 下行数据:上位机(PC机)向下位机(单片机)传送数据⑴上位机准备好:FD=0x11帧格式:功能号[FD]校验和[CS] ⑵初始化完毕:FD=0x12(PCInitFinish)帧格式:功能号[FD]校验和[CS] ⑶修改模拟器参数:FD=0x13(AlterPara)帧格式:功能号[FD]校验和[CS] ⑷完成修改模拟器参数:FD=0x14(FinishAlterPara)帧格式:功能号[FD]校验和[CS] ⑸下送模拟器参数:FD=0x15(SendParaToMCU
单片机与PC机通信协议(RS232) 来自淘豆网m.daumloan.com转载请标明出处.