[代码积累]ASTM校验和计算与消息返回--根据消息类型切割
2017-01-11 14:32
309 查看
Abbott Standard Interface RS-232 Manual/雅培标准接口RS - 232手册中的ASTM通讯协议,用到的串口通讯校验方法。
这里只提供,将需要校验的字符串数组,转换成校验数据,然后返回待发送的byte数组。
调用时:
消息解析后效果:
这里只提供,将需要校验的字符串数组,转换成校验数据,然后返回待发送的byte数组。
public List<byte[]> GetRetMsgList(params string[] dataArr) { // 返回消息的初始化 List<byte[]> retMsgList = new List<byte[]>(); List<byte[]> retList = new List<byte[]>(); for (int i = 0; i < dataArr.Length; i++) { retMsgList.Add(Encoding.ASCII.GetBytes(dataArr[i])); } for (int i = 0; i < retMsgList.Count; i++) { int checksum = 0; // 初始化消息数组 List<byte> tempByteArrList = new List<byte>(); // <STX> tempByteArrList.Add(Encoding.ASCII.GetBytes(strSTX)[0]); // <FN> tempByteArrList.Add(Encoding.ASCII.GetBytes(((i + 1) % 8).ToString())[0]); checksum += Encoding.ASCII.GetBytes(((i + 1) % 8).ToString())[0]; // Comment tempByteArrList.AddRange(retMsgList[i]); for (int j = 0; j < retMsgList[i].Length; j++) { checksum += retMsgList[i][j]; } // <ETX> tempByteArrList.Add(Encoding.ASCII.Ge 4000 tBytes(strETX)[0]); checksum += Encoding.ASCII.GetBytes(strETX)[0]; // <C1><C2>校验和 tempByteArrList.AddRange(Encoding.ASCII.GetBytes(((byte)checksum).ToString("X2"))); // <CR> tempByteArrList.Add(Encoding.ASCII.GetBytes(strCR)[0]); // <LF> tempByteArrList.Add(Encoding.ASCII.GetBytes(strLF)[0]); retList.Add(tempByteArrList.ToArray()); } return retList; }
调用时:
string[] dataArr = new string[] { "H|\\^&|||ARCHITECT^8.10^F3453440210^H1P1O1R1C1Q1L1|||||||P|1|20161101081152\r", "P|1|||||||U\r", "O|1|1047|1047^F301^1|^^^1066^CA^STANDARD^P|R||||||||||||||||||||F\r", "R|1|^^^1066^CA^STANDARD^P^25805UN16^24153^^F|1.70|mmol/L||||F||FSE^FSE||20161101081152|c1600926\r", "R|2|^^^1066^CA^STANDARD^P^25805UN16^24153^^P|0.6865|Abs.||||F||FSE^FSE||20161101081152|c1600926\r", "L|1\r" }; List<byte[]> retMsgList = GetRetMsgList(dataArr);
消息解析后效果:
相关文章推荐
- [代码积累]ASTM校验和计算与消息返回--固定长度切割消息
- 根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
- 根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
- Asp 返回引用类型函数代码
- win7 homebasic下,.net2008 连接oracle,提示错误OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用
- 当您通过使用 InfoPath 2010 表单连接到 Web 服务时沙盒中处理的代码包含的、 不返回的数据或您收到一条错误消息
- 自动根据视频文件类型选择不同播放器的JAVASCRIPT代码
- 宏定义函数指针类型&函数返回左值类值 1。宏定义不分配内存,变量定义分配内存。 2。宏名和参数的括号间不能有空格 3。宏替换只作替换,不做计算,不做表达式求解 //下面是正确的标准的写法 typedef int(FUNC1)(int in); ty
- Could not create an environment: OCIEnvCreate returned -1(OCIEnvCreate 失败, 返回代码为-1,但错误消息文本不可用)
- Could not create an environment: OCIEnvCreate returned -1(OCIEnvCreate 失败, 返回代码为-1,但错误消息文本不可用)
- php中根据某年第几天计算出日期年月日的代码
- 关于根据后台代码获取confirm返回结果后再执行后台代码
- XML:根据浏览器类型屏幕分辨率自动调用不同CSS的代码
- “OCIEnvNlsCreate 失败,返回代码为 -1,但错误消息文本不可用”的处理方法
- 共享一段CMPP编程时候,移动网关返回CMPP_SUBMIT_RESP消息中,解析Msg_Id字段的代码
- 根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
- 根据数据库字段类型返回c#类型函数
- php中根据某年第几天计算出日期年月日的代码
- 根据经纬度计算两点之间距离的Obcective-C代码
- 根据图幅号(新图幅号)计算左下角点坐标的方法及代码(C#)