📄 can总线停车场协议.txt
字号:
新一代CAN(Controller Area Network)现场控制总线停车场管理系统PC通讯协议
通讯格式 :RS232:9600,N,8,1
1 发送指令结构 :Sys1+Sys2+Sys3+接收地址+指令对象+指令+参数长度+参数+CRC
2 接收指令结构 :Sys1+Sys2+Sys3+发送地址+指令来源+指令+参数长度+参数+CRC
说明
1 通讯开始同步符 :Sys1+Sys2+Sys3=0xFE+0xFD+0xFE;
2 通讯结束校验字节:CRC=所有字节异或(但不含同步符Sys1,Sys2,Sys3)
3 接收地址 :0x00-0x01为停车场管理控制器地址(仅脱机事件报告时使用0x01地址),双号为入,单号为出口通道控制器地址,
广播地址 :0xF0为所有设备广播地址 ,0x3F为通道控制器广播地址
4 发送地址 :0x00-0x01为停车场管理控制器地址(仅脱机事件报告时使用0x01地址),双号为入,单号为出口通道控制器地址
5 指令对象 :0x00接收设备本身;
6 指令来源 :0x00发送设备本身;其他为控制器外接模块地址,仅停车场管理控制器外挂读头需识别以便判断台式读写器.
//电脑发送的指令
#define COMT_OnLineStatus 0x01 //上线报告,参数为0掉电离线/1上电上线/2手动复位/3看门狗复位/4软件复位/5在线应答
#define COMR_SoftReset 0x02 //工作方式+1字节参数,参数=1=软件复位
#define COMR_SetDateTime 0x03 //时钟设置参数顺序为second,minute,hour,day,month,year,week,DispMode 3/4/5
#define COMR_Beep 0x07 //蜂鸣器响+1字节参数,参数为响声次数
#define COMT_StatusReport 0x0E //状态报告
#define CAN2_ShortToGND 0x15 //故障1:总线对地持续短路或端口故障
#define CAN2_ShortTo12V 0x16 //故障2:总线对对12V电源持续短路或端口故障
#define CAN_ShortToGND 0x05 //故障1:总线对地持续短路或端口故障
#define CAN_ShortTo12V 0x06 //故障2:总线对对12V电源持续短路或端口故障
//以上为可广播的指令
#define SMMR_LinkMode 0x20 //工作模式,参数为
#define MOD_Auto 0 //自动模式,适用于无人值守图像要求不严的车场:数据脱机运行,等待图像捕捉或对比确认首次超过设定时间秒数,发送问询指令,得不到应答,自动放弃图像捕捉与对比确认,其后每次照常发送卡号同时发送问询指令,得不到应答,保持脱机,得到应答
#define MOD_Register 4 //发行器模式,管理机进入注册登记模式,不做出口机使用,作发行器,;此模式可用总监卡或管理卡进入,可脱机发行
3 //联机模式
#define SMMR_LoadCardsPrefix 0x21 //装载及追加卡片档案通知,后随2字节起始序号(0-65534),再加2字节卡片档案总数(1-65535),建议将所购卡片一次排序全部装入,不用的卡片先加锁.
#define SMMR_LoadOneCard 0x22 //装载卡片档案一条,后随2字节序号(0-65534),装载卡片期间系统停止工作.
//struct{unsigned long CardID;char RegisterStatus;char Type;struct STDate St_EndDate;char EnEntrance[4];unsigned int Num;char Chr[10];signed long Balance;char ParkingStatus;struct STDateTime EnterDateTime;char Position[4];} //36字节,EndDate+Remain为月卡储值卡双重功能;Position[6]可变通为图像文件名
//struct共40字节 {卡内码[4]+注册状态[1](BIT7/6/5=注销/挂失/锁定标志)+卡类[1]+止效日期日月年[3]+进场权限[4]+卡编号[2]+车牌问候等字符[10]+储值余额[4]+停车状态[1](BIT7=进场标志)+动作日期时间秒分时日月年[6]+车位信息[4];};
#define SMMR_ModifyOneCard 0x23 //修改卡片档案一条,后随2字节起始序号(0-65534),用于卡片挂失/加锁/延期等,修改卡片期间系统继续工作.
#define SMMR_FetchCardsRequest 0x25 //提取卡片档案申请
#define SMMR_ReceiveCardsResult 0x26 //PC收卡片档案应答
#define SMMR_LoadTimeTable 0x27 //下载收费时刻表
//时段数量[1]+车型数量[1]+选项[4](室内、峰谷、节假日、备用)+分钟时刻表[2]*63(多达63个时段)...
#define SMMR_LoadTollTable 0x28 //下载收费金额表
//车型序号[1](0-15)+对应时刻表的时段收费[2](多达63个时段)...+室内对应时刻表的时段收费[2](多达63个时段)...
#define SMMR_LoadTotalPlace 0x29 //下载各车场总车位数表
//车场数量[1](1-31)+1号车场总车位数[2]+2号车场总车位数[2]+...
#define SMMR_LoadRemainPlace 0x2A //下载各车场剩余车位数表
//1号车场剩余车位数[2]+2号车场剩余车位数[2]+...
#define SMMR_EventWait 0x30 //现场事件收悉等待(PC机必须在3秒内响应,据此判断是否联机)
#define PCWAT_Capture 0 //+口地址+等待入口图像捕捉 //有效分型便于在岗亭内的显示屏上提示
1 //图像对比中
#define PCWAT_CompareToll 2 //收费进行中
#define SMMR_EventValid 0x31 //现场事件确认有效(人工抬闸事件记录有效,入口图像捕捉,出口对比与收费有效)
#define PCVID_Capture 0 //+口地址+操作员编号+入口图像捕捉有效 //有效分型便于在岗亭内的显示屏上提示
#define PCVID_CompareToll 1 //出口图像对比及收费完成有效
#define PCVID_ChangeOperater 2 //操作员换班完成有效
#define PCVID_EventRecord 3 //事件记录完成有效
#define SMMR_EventInvalid 0x32 //现场事件确认无效(出口图像对比不符无效)
#define PCINV_Compare 0 //+口地址+操作员编号+出口图像对比无效 未获准通行
#define SMMR_FetchEventRequest 0x33 //+起始序号[4]+提取数量[4]+提取事件记录申请
#define SMMR_ReceiveEventResult 0x34 //接收事件记录应答
#define SMMR_EventPointerRequest 0x35 //查询事件记录指针(下一条记录的序号)
#define SMMR_SetEventPointer 0x36 //+设置指针[4],设置事件记录指针(下一条记录的序号),事件记录指针改变后,再提取重设指针之前的历史事件,提取结果将会有误!!
//40-5F
#define SMMT_ReceiveCardsResult 0x40 //接收卡片档案应答,+0=ok/1=Err,+2字节装载卡片档案序号(0-65535),未收到或收到出错应答分批重发。
#define SMMT_DownCardsPrefix 0x41 //卸载一批卡片档案信息,后随2字节卸载卡片总数,//1字节批号(256条/1整批)
#define SMMT_DownOneCard 0x42 //卸载卡片档案一条,期间系统继续工作.但可按256字节分批卸载
#define SMMT_AppendCard 0x43 //追加卡片档案一条,自动附随在下载追加卡片事件记录之后,但档案值已为最终值,并非当时值.
#define SMMT_ModifyCard 0x44 //修改卡片档案一条,自动附随在下载挂失/加锁/延期等修改卡片档案事件记录之后,但档案值已为最终值.
#define SMMT_ReceTimeTableResult 0x45 //接收收费时刻表应答
#define SMMT_ReceTollTableResult 0x46 //接收收费金额表应答
#define SMMT_DownTimeTable 0x47 //卸载收费时刻表
#define SMMT_DownTollTable 0x48 //卸载收费金额表
#define SMMT_ReportEvent 0x50 //报告正在发生的事件一条
#define SMMT_DownOneEvent 0x51 //报告已经发生的事件记录一条.
#define SMMT_DownPastEventPrefix 0x52 //+起始序号[4]+提取数量[4] 卸载事件记录通知
#define SMMT_DownOnePastEvent 0x53 //卸载历史事件记录一条,期间系统继续工作.
//struct{unsigned long EventIndex;char Tran;char Source;char EventStatus;char ParkingStatus;char ActionParameter;unsigned long CardID;struct STDateTime St_ActDateTime;char Operator;unsigned int Charge;signed long Remain;}//20bytes*61=1220bytes
//struct共26字节{事件序列号[4]+口地址[1]+发生对象[1]+事件状态[1]+停车状态[1]+事件参数[1]+发生卡内码[4]+发生日期时间秒分时日月年[6]+操作员编号[1]+交易金额[2]+储值卡余额[4]}
//EventStatus定义
#define BIT_EventWait BIT7 //0/1=空闲状态/等待
#define BIT_Offline BIT6 //0/1=联机/脱机,各路分别标示是否脱机BIT7= BIT6=0/1=联机等待/PC确认标志
#define BIT_PCReply BIT5 //0/1=标示PC无/有应答
#define BIT_PCConfirm BIT4 //0/1=PC应答确认的无效/有效标志
//BIT0-3=ActionType16种操作类型
//临时卡16种车型的0-15种收费操
#define BIT_ManualConfirm BIT3 //0/1=无需/必须读操作卡明确责任,操作员人工确认放行,,如临时卡收费收卡,过期欠费卡临时收费,重复入场再出场,重复出场等操作
#define BIT_CardOperation BIT2 //0/1=非类卡操作/类卡操作,也可通过有无卡ID号来判断
#define BIT_Toll BIT1 //0/1=非收费卡操作/收费卡操作
#define BIT_Free BIT0 //0/1=无/有出口免费操作,免费可作为一种车型(军警车等免费车)
//ParkingStatus定义同St_CardTable.ParkingStatus
//ParkingStatus定义
#define BIT_In BIT7 //0/1=已出场/入场 0/1=事件出场/入场
#define BIT_RepeatIn BIT6 //0/1=无/重复入场 1=入场或出场事件中标定入场时为重复入场
#define BIT_RepeatOut BIT5 //无用标志 1=出场事件中标定为重复出场
#define BIT_AsTempCard BIT4 //固定/月租/储值等过期欠费卡用作临时卡 1=入场或出场事件中标定为用作临时卡
#define BIT_Indoor BIT3 //停室内停车场 1=入场或出场事件中标定已停过室内停车场
#define BIT_IndoorIn BIT2 //室内0/1=已出场/入场 0/1=事件出场/入场
#define BIT_PaidBill BIT1 //中央收费已交费
#define BIT_Consume BIT0 //区内消费优惠
//ActionParameter定义
//卡操作收费时 (BIT0-3=0-0x0F=CardType=16种卡类;BIT7-4=16种车型收费)
//卡操作非收费时(BIT0-3=0-0x0F=CardType=16种卡类;BIT7-4=16种卡操作)
//非卡类操作时
#define EVENT_BarrUp 0x00 //事件 人工抬闸 也要捕捉图像
#define EVENT_BarrDown 0x01 //事件 人工落闸
#define EVENT_BarrStop 0x02 //事件 人工停闸
#define EVENT_DownEvent 0x03 //事件 卸载事件....
#define SMMT_ReportEventPointer 0x54 //报告事件记录指针
#define PCMR_CardWait 0x60 //卡号收妥等待指令+n字节参数+等待过长时间也要重发卡号
#define PCMR_CardWaitValid 0x61 //卡等待有效放行指令
#define PCMR_CardWaitInvalid 0x62 //卡等待无效不放行指令
#define PCMR_CardValid 0x63 //卡有效入场指令
#define PCMR_ParkFull 0x69 //满位+1字节参数0=未满/1=满位
struct STCardReply{char Voice;char DispMode;char Type;unsigned int Num;char data[20];}; //用于存放接收到的卡信息数据 //41字节
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -