==拨号器发送切换车号指令== **拨号器到车号屏:A0 9F 00 00 10 EF 02 01 10 02 30 30 45 45 FF **车号屏应答: A0 9F 00 00 10 EF 02 01 10 02 30 30 45 45 FF (间隔大概2s) A0 9F 00 00 10 EF 02 01 10 02 30 30 45 45 FF **说明:车号屏在收到拨号器发送的 A0 9F 00 00 10 EF 02 01 10 02 '''30 30''' 45 '''45''' FF 指令后,车号屏显示车号为:0. ** 30 30 组合表示车号数字,为ascii 码 00,如果车号数字为28,则为 32 38,即为 28 的ascii码。另外,'''45'''为变化码,但是没有找到规律。 ***测试下来,变化码列表如下。(可能为校验码,但是没有找到校验算法) ***0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ***e f c d a b 8 9 6 7 f e d c b a 9 8 7 6 c d e f 8 9 a b 4 5 ***30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ***d c f e 9 8 b a 5 4 a b 8 9 e f c d 2 3 b a 9 8 f e d c 3 2 ***60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ***8 9 a b c d e f 0 1 9 8 b a d c f e 1 0 ==PIS滚动屏协议== 数据例子: ===数据解析:=== ====Frame Sync==== A0 9F 00 00 10 EF ====Screen Type==== 10 01//屏类型,表示单行16字节屏 00 00//显示模式,滚动显示,停止时间为0 ====Data Content==== BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD ====Checksum==== 41 41 //可能是校验 ====Frame Finish==== FF //结束标示 ===解析=== **'''欢迎乘坐本次旅客列车祝您旅途愉快一路顺风'''发送数据解码 **发送数据如下:A0 9F 00 00 10 EF 10 01 00 00 BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD 10 01 00 00 C1 D0 B3 B5 D7 A3 C4 FA C2 C3 CD BE D3 E4 BF EC 10 01 00 00 D2 BB C2 B7 CB B3 B7 E7 20 20 20 20 20 20 20 20 0E 01 00 00 BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 0E 01 00 00 BF CD C1 D0 B3 B5 D7 A3 C4 FA C2 C3 CD BE 0E 01 00 00 D3 E4 BF EC D2 BB C2 B7 CB B3 B7 E7 20 20 10 02 00 00 BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD C1 D0 B3 B5 D7 A3 C4 FA C2 C3 CD BE D3 E4 BF EC 10 02 00 00 D2 BB C2 B7 CB B3 B7 E7 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 14 02 00 00 BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD C1 D0 B3 B5 D7 A3 C4 FA C2 C3 CD BE D3 E4 BF EC D2 BB C2 B7 CB B3 B7 E7 0A 01 00 00 BB B6 D3 AD B3 CB D7 F8 B1 BE 0A 01 00 00 B4 CE C2 C3 BF CD C1 D0 B3 B5 0A 01 00 00 D7 A3 C4 FA C2 C3 CD BE D3 E4 0A 01 00 00 BF EC D2 BB C2 B7 CB B3 B7 E7 0A 02 00 00 BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD C1 D0 B3 B5 0A 02 00 00 D7 A3 C4 FA C2 C3 CD BE D3 E4 BF EC D2 BB C2 B7 CB B3 B7 E7 14 01 00 00 BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD C1 D0 B3 B5 14 01 00 00 D7 A3 C4 FA C2 C3 CD BE D3 E4 BF EC D2 BB C2 B7 CB B3 B7 E7 10 01 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0E 01 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 14 02 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 02 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0A 01 00 02 20 20 20 20 20 20 20 20 20 20 0A 02 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 14 01 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0C 01 10 04 20 20 20 20 A9 AA B1 B1 BE A9 A9 AA 41 41 FF **'''数据解析:''' *** A0 9F 00 00 10 EF *** 10 01//屏类型,表示单行16字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD *** 10 01//屏类型,表示单行16字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** C1 D0 B3 B5 D7 A3 C4 FA C2 C3 CD BE D3 E4 BF EC *** 10 01//屏类型,表示单行16字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** D2 BB C2 B7 CB B3 B7 E7 20 20 20 20 20 20 20 20//第1块屏 16字节屏 *** 0E 01//屏类型,表示单行14字节屏 *** 00 00//显示模式 *** BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 *** 0E 01//屏类型,表示单行14字节屏 *** 00 00//显示模式 *** BF CD C1 D0 B3 B5 D7 A3 C4 FA C2 C3 CD BE *** 0E 01//屏类型,表示单行14字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** D3 E4 BF EC D2 BB C2 B7 CB B3 B7 E7 20 20// 第2块屏 14字节屏 *** 10 02//屏类型,表示双行16字节屏 RUBY_LED:Byte16Double *** 00 00//显示模式,滚动显示,停止时间为0 *** BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD C1 D0 B3 B5 D7 A3 C4 FA C2 C3 CD BE D3 E4 BF EC// *** 10 02//屏类型,表示双行16字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** D2 BB C2 B7 CB B3 B7 E7 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20//第3块屏,32字节屏 *** 14 02//屏类型,表示双行20字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD C1 D0 B3 B5 D7 A3 C4 FA C2 C3 CD BE D3 E4 BF EC D2 BB C2 B7 CB B3 B7 E7//第4块屏,40字节屏 *** 0A 01//屏类型,表示单行10字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** BB B6 D3 AD B3 CB D7 F8 B1 BE *** 0A 01//屏类型,表示单行10字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** B4 CE C2 C3 BF CD C1 D0 B3 B5 *** 0A 01//屏类型,表示单行10字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** D7 A3 C4 FA C2 C3 CD BE D3 E4 *** 0A 01//屏类型,表示单行10字节屏 *** 00 00//显示模式 *** BF EC D2 BB C2 B7 CB B3 B7 E7//第5块屏,10字节屏 *** 0A 02//屏类型,表示双行10字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD C1 D0 B3 B5 *** 0A 02//屏类型,表示双行10字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** D7 A3 C4 FA C2 C3 CD BE D3 E4 BF EC D2 BB C2 B7 CB B3 B7 E7//第6块屏,20字节屏 *** 14 01//屏类型,表示单行20字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** BB B6 D3 AD B3 CB D7 F8 B1 BE B4 CE C2 C3 BF CD C1 D0 B3 B5 *** 14 01//屏类型,表示单行20字节屏 *** 00 00//显示模式,滚动显示,停止时间为0 *** D7 A3 C4 FA C2 C3 CD BE D3 E4 BF EC D2 BB C2 B7 CB B3 B7 E7//第6块屏,20字节屏 *** 10 01//屏类型,表示单行16字节屏 *** 00 02//显示模式,滚动显示,停止时间为0 *** 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *** 0E 01//屏类型,表示单行16字节屏 *** 00 02//显示模式 *** 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *** 14 02//屏类型,表示双行20字节屏 *** 00 02//显示模式,滚动显示,停止时间为2s *** 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *** 10 02//屏类型,表示双行16字节屏 *** 00 02//显示模式,滚动显示,停止时间为2s *** 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *** 0A 01//屏类型,表示单行10字节屏 *** 00 02//显示模式,滚动显示,停止时间为2s *** 20 20 20 20 20 20 20 20 20 20 *** 0A 02//屏类型,表示双行10字节屏 *** 00 02//显示模式,滚动显示,停止时间为2s *** 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *** 14 01//屏类型,表示单行20字节屏 *** 00 02//显示模式,滚动显示,停止时间为2s *** 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *** 0C 01 //屏类型,表示单行120字节屏 *** 10 04 //显示模式,静止显示,停止时间为4s *** 20 20 20 20 A9 AA B1 B1 BE A9 A9 AA *** 41 41 //可能是校验 *** FF //结束标示 **'''说明''' ***1、显示模式。显示模式共两个字节表示。 00 -- 左移 10 -- 立即跳入 20 -- 跳入闪烁 30 -- 上滚进入 40 -- 下滚进入 50 -- 左边卷帘 60 -- 右边卷帘 70 -- 中间卷帘 80 -- 两边卷帘 90 -- 左百叶窗 A0 -- 右百叶窗 B0 -- 逐行下抹 C0 -- 逐行上抹 D0 -- 吞吐 E0 -- 备用 F0 -- 随机 ****a、00 XX 滚动输出模式。00 表示滚动输出,xx表示输出静态保持时间。例如:00 0A 表示画面从右到左滚动输出,输出完成后保持10秒 ****b、10 XX 表示静态显示。XX 为静态显示时间。比如XX为05,每5秒重新刷一次屏。 ****c、20 XX 瞬间打出,闪动显示。XX 为00 时,一秒的频率闪烁;为01时,前快速闪烁2次(1s频率),慢闪烁一次(2s);为01时,前快速闪烁2次(1s频率),慢闪烁一次(3s);依次... ****d、30 XX 表示向上滚动显示。XX 为显示时间。比如XX为05,每5秒重新刷一次屏。 ****e、40 XX 表示向下滚动显示。XX 为显示时间。比如XX为05,每5秒重新刷一次屏。 ****f、50 XX 表示双开显示。XX 为显示时间。比如XX为05,每5秒重新刷一次屏。 ****g、60 XX 表示双合显示。XX 为显示时间。比如XX为05,每5秒重新刷一次屏。 ****h、51 XX 表示左卷显示。XX 为显示时间。比如XX为05,每5秒重新刷一次屏。 ****i、81 XX 表示从右卷显示。XX 为显示时间。比如XX为05,每5秒重新刷一次屏。(测试下来 51 也是从左到右推出显示) ****j、7X XX 用于控制双行屏显示(主要用于车外侧面显示)。70:表示双行屏上下两行屏均静子显示;71:表示上面一行静子显示,下面左移显示;72:表示上面一行左移显示,下面一行屏静子显示;73:表示两块屏均左移显示。 ***2、屏类型。xx xx 前面一字节表示屏字节数,比如 10 表示16字节屏,后一字节表示屏行数,02 表示2行屏。 10 02表示双行16字节屏。 ***3、如果以帧数据中出现几块同样的屏,则将几块屏后面的数据包整合到一起,成为一个数据包,但是在整合前数据包的显示模式独立。 ==3== https://gist.github.com/anonymous/5530055 ====//餐车在中间车厢 广播室在 5号车厢 滚动输出====
A0 9F 00 00 10 EF 10 01 00 00 B2 CD B3 B5 D4 DA D6 D0 BC E4 B3 B5 CF E1 20 20 10 01 00 00 B9 E3 B2 A5 CA D2 D4 DA 20 35 BA C5 B3 B5 CF E1 0E 01 00 00 B2 CD B3 B5 D4 DA D6 D0 BC E4 B3 B5 CF E1 0E 01 00 00 20 20 B9 E3 B2 A5 CA D2 D4 DA 20 35 BA C5 0E 01 00 00 B3 B5 CF E1 20 20 20 20 20 20 20 20 20 20 10 02 00 00 B2 CD B3 B5 D4 DA D6 D0 BC E4 B3 B5 CF E1 20 20 B9 E3 B2 A5 CA D2 D4 DA 20 35 BA C5 B3 B5 CF E1 14 02 00 00 B2 CD B3 B5 D4 DA D6 D0 BC E4 B3 B5 CF E1 20 20 B9 E3 B2 A5 CA D2 D4 DA 20 35 BA C5 B3 B5 CF E1 20 20 20 20 20 20 20 20 0A 01 00 00 B2 CD B3 B5 D4 DA D6 D0 BC E4 0A 01 00 00 B3 B5 CF E1 20 20 B9 E3 B2 A5 0A 01 00 00 CA D2 D4 DA 20 35 BA C5 B3 B5 0A 01 00 00 CF E1 20 20 20 20 20 20 20 20 0A 02 00 00 B2 CD B3 B5 D4 DA D6 D0 BC E4 B3 B5 CF E1 20 20 B9 E3 B2 A5 0A 02 00 00 CA D2 D4 DA 20 35 BA C5 B3 B5 CF E1 20 20 20 20 20 20 20 20 14 01 00 00 B2 CD B3 B5 D4 DA D6 D0 BC E4 B3 B5 CF E1 20 20 B9 E3 B2 A5 14 01 00 00 CA D2 D4 DA 20 35 BA C5 B3 B5 CF E1 20 20 20 20 20 20 20 20 10 01 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0E 01 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 14 02 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 10 02 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0A 01 00 02 20 20 20 20 20 20 20 20 20 20 0A 02 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 14 01 00 02 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0C 01 10 04 20 20 20 20 20 20 BE C5 C1 FA 20 20 42 42 FF===通讯说明=== #在一帧数据中,有对很多类型的屏发送数据。比如说单行12字节屏 单行14字节屏 单行16字节屏 双行10字节屏等等种类型屏,每块屏数据 #整个协议中,有一个地方没有解密出来。倒数第3个字节和倒数第2个字节。 我们可以用表格的形式去发送这个字节。比如说发送的字节数和我们已知的字节数一致的话,我们就发送 帆兴的那两个字节 #测试下来,协议中每个屏的字节可以发送单独的数据,但是 第一个屏和第二个屏的数据必须一致,比如说第一个屏(16字节屏)数据有改变,第二个屏(14字节屏也必须跟着改变),不改变的话,屏显示不响应;后面其他屏不需要跟着做改变 #我们是完全参考猜测帆兴的协议,具体为什么这样做还不太清楚。在主控站发送数据控制屏的时候,我们只能模仿他们的格式去写