水文传输规约SL651 的编解码是有一些难度的,可能因为协议经历了较长时间的发展,并且多方参与经手,为了扩展性等。加上在各省落地的时候,因为理解的不一致,基于此协议又做了一些自定义或者扩展。
下面分享一些我们在开发和维护的过程中遇到的一些问题。
一、图片传输
有四种传输方式,M1 M2 M3 M4。对于多包分片传输,比如 FN38(读取设备固态数据),FN36(图片传输),使用了不同的分片传输方式(M3、M4),设备端不维护状态,所以服务器端需要做好分片重组等逻辑,FN36 还支持分片重发请求。
具体的报文交互流程如下:
```
1
7E7E100012340086123436041C1602B0010003250405115043F0F02504051150F1F1001234008648F3F3FFD8FFE10FFE4578696600004D4D002A000000080006011200030000000100010000011A00050000000100000056011B0005000000010000005E01280003000000010002000002130003000000010001000087690004000000010000006600000000000000480000000100000048000000010007900000070000000430323231910100070000000401020300A00000070000000430313030A00100030000000100010000A00200040000000100000140A003000400000001000000F0A406000300000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000173476
........
42
7E7E10001234008612343604031602B02AAD75ADDD2C525EDDA4255C22C4C8E238FEE8C4D2028D9C00AE554FD93F121BF675F82DF0CADFC45AF6A569A65B18DA4B0BC99E5B8BAB995949FDD853F68B82C483B13807B2E38F8ABE1E7C57D1355F0B1F08CB30B5D7D9B2FE69DB2DEC117CDBCE7E6778F29B94F0170548C151F957FB7BF8C7584F8BD369101961CE9B6205D464388565DE08407F88B7255720F195F4FD47C3ACAF0D8BCB673C4C139ECDDBA5AFA7FC03F31E3BAD88599E1B0182FDDC52FF00C0A577EF3FC97923F52FC11F191B59F87ADF127C6B7E74CD2F4E91A4437521863B89F6800DBA8086E63DA70B80CBB8632CC38E2FC35FB52FC30F1659DB7877C3969770DFDFB39DB796D259CD315E5A684390EEB1F180071F78F39AC6F1EFC3CB0F8A7F0D628AE5FEC7773DBDB436774B33EE0EE889B1C4870809C2203F264F4C572BE0CFD992C7F67AD5344F137C5C920F177896CA667B69228D63874F5202A08D19F12491A921652A91460B08E35C935F82D0AB4A542A5E6E2B656FCB63FA3E386CAD53552BEB5BA455925A74F2F3FC0FAABC2FE12F175D6B70EB5E2F8DA2B60AE5A197396236842C3700A588FBBD860E3D7D0753F10E8CA6EEC2EE0905960B45B10379078541BD4673CF19E1718200E2BF20FE3A787BE207C47FDA26C6CEF3C217DE248846F6D631DAC9E6DBD9B3BED32CE8678420D8FE679A17CB608D1B306112B7DEBF0D2D75DF85BE1683C33E29D46DB5AF13E956524D3BB46EA9B1B718511D9B964207EF1B2580E8B9CD7A70CC2AE1F0B4E6AADFCBB791E3E6FC138692F6B171739EF18AE9FD69B23DEBC3B6336ABE237D25DD6684152B046A7CD6562769701C15DD8C1503191D457A0F8CBE196A5A4E8DFDBD0A24B6C0EE9EDE2047950FF7BF8B72AF3BC64ED5EE6BF2ABF625FDA2BE2B78AFC79A8EBDAD6B6979752DAB5D3D9C36C12180CD281E539CE48C7CBE5991A58F1F31DD835F7EFED09FB7BF81BE0EF83ECE5F0FE9CD79E29D4A091E1B09FF00756B66911D8D3DCCDC7EE73F7553F79274F9002C3F7DE0AC82B62684B198D9EBB452D124B4F99FCEDE29E1A593E64B26C2C17BAA2E4FAB6D6DF20D67C63A45959C3A6013798C048F14389155070ACC4108100C1DA31B87038CD5C54D37529121825DA87FD5E1D547201DC7AE00E80018CF1D89AFCE1F077C7BBAF89B60F2F8ABCAB8D4595A5761E5DBC72B1C3CAF0C4AD858972AA065B0BD7B16F78F00DCEBBE2DD2E6F11DD6A779E1A5597C987518A6585E52490EB6CADB92403A0678CA2FFB47728FC871BC7789C2E653C3D75EEA765E497F99FA64BC2CA52CBE9D68FBB2693D7ADD2FBAC7DEBA178634390B35B5B7DA1D3736F7607923F8BE6FBC7B29E7038C62B064D03C3504EF81B5A43F32A6D8B1B9790D8EDC73927A62BC7FC4DF1753C3491A8BDF345CEC8BC890061E8D2025B2385F998F5CF18AF917BD34
43
7E7E10001234008612343603721602B02B6742F88DE2FBAF10FDBB598AD6F8C170D11934E2C15C33B0846149CB71B71B588CFB71E9E13C48A2EBFB1946D1EE788FC25C74B092C441DDAE9FD591F65EA1A6695F6C7B5B6911767DF67906D2DD147CC483EB81CE3B0AF02F899E21D121F36D21D3E1D56EA76DAAF75B3F76463FD54403018FE1CFCC3EB5EA728BE5F0F5A788354B0FECC9DE13989985CA213FC0590042FB783F7806EF9008E77C7FE08D475343E25F0C4083C9B76F3ED76B79AECBF3623C31421FB71EE48AF76A71C61956F629FCFA1F22B81F11EC7DAB5F23E784D17C6F2C326A3736F1DB5A97474F99103326190A85387208DE7D0F1EA2B857D475D5B93A7EA8BE55BA3BCB9DD959249060BBFCC3716EC7E6DBD715ED5A3F8CFC27E2ED774BF015B6AD731DF5D67ECF65F66770E186EC9D995DA36F2FD0639C0E9EABE28F0FFC3CF0FE9F65A06BF1B4B717930FB39449250D24871B323E45EE704738C03C0AF4733E22A74A29CA679D9770EE2AAD4E48C36EEAC7C77FD89A65D6A90788F5ED22CE5658B6C6EC88CD807680180EC338C11F4CF34CBAF0FF00846E09BBD1ED634BB195711A950557F7815B7B1381ED8EDCF6AFAC3C2FE10F1678E35D5F0AE9B185522488FCCC5238E26552F825B66DE06D523278EB5EA3E38FD951FC1720BFF0934FAC5B6D02488154B8083973B13687190496EA3DC0CD7A197D6AD5A8FB5A6B9A2BB1E462E30C35654711A4BB1F9BB3585D6AC7CDD7D96DD77E31F3EDDC7A0D8BB46403CFDECFE54DB4F054B04C61D02212297F95B0CB1160718657C9555E78EBEB5F6778DB4ED0743D157C4BA85BFD96DE2654DF300C5119FA841CFE3C0EF8AAB6171E16F139897C3B743508C1586465619195048249182578C11D38C56183CC6159FBA7A78EC2D6C3C39A51B1F3CCDF0DEFA6B64B582132104217D84AB7CC433672385031C57207C287C3C2EA3D4D22CC0498A552542F3C956279057A2E0F3DEBF4367B1D360B669A65F2D88195C8D8B8E06D1C607F3AF2CF1278617C477F1069C49F673875914A92C0330F24004392071CF1FA0F5EBD6A1875CD39257D11E1E16962312DC6946F6EC7C351F84619E39279A15688F676604AB71F280464FF002AC88F49B6B38E4B3D3D3CA0C701003B476E066BEC95B1D0351FB459C7132CF1BC6B1EDE7C9561B4071C1DC5B3D32540E462ADDEF8134DF01E9D36AAB653DFDD4B1854760988D88203AE0F3EE781DABA217BAE538A751753FFD903A0F9
```
二、读取固态数据
三、参数配置
四、表达负数
五、协议扩展
基于 SL651扩展的振弦式传感器采集数据上报。
```
原始报文:
7E7E010075685531123432008002060E250405115538F1F1007568553148F0F02504051155FF312200000000FF322200000000FF332200216689FF342200000000FF352200000000FF362200000000FF372200000000FF382200000000FF411A001383FF4222FF004100FF431A001837FF441A001355FF451A001448FF461A001375FF471A001767FF481A00140503504B
解析结果:
SSN : 0075685531
FN : 0x32
LEN : 128
STX : 02
---------------------------
SN : 0x060e
F1 F1 007568553148 测站编码
F0 F0 2504051155 观测时间
FF31 22 00000000
FF32 22 00000000
FF33 22 00216689
FF34 22 00000000
FF35 22 00000000
FF36 22 00000000
FF37 22 00000000
FF38 22 00000000
FF41 1A 001383
FF42 22 FF004100
FF43 1A 001837
FF44 1A 001355
FF45 1A 001448
FF46 1A 001375
FF47 1A 001767
FF48 1A 001405
---------------------------
END : 0x03 ETX 报文结束
CRC : 0x504b
```