不知道有没有做过环保项目的,现在环保协议是这样的
通讯包的组成有:包头,数据段长度,数据段,CRC校验,包尾。
数据段中有请求编号QN,系统编号ST,命令编号CN,社保唯一标示MN,指令参数CP。
举个例子,上位机要采集实时数据,上位机就发送如下数据段,数据段的内容就包括:QN=20080916000000;ST=32,CN=2011;MN=888888888;
下位机发生实时数据,数据段的内容包括:ST=32;CN=2011;MN=888888888;CP=&&DATATIME=2008091600000;101-RTD(101污染物的数据)=1.1.&&我想请问下,如果这个用SOCKET发送,该如何发送的,想用sendtext发送,已经实现下位机发送A,上位机接受A这种了,
如果要把这个包发送的话,里面的ST=32,CN=2011,这些字母要加进去么?还是只要把32,2011加进去,跟MODBUS那样直接输入数字字符?现在想知道要发送的数据的格式是怎麽样的。谢谢了!!!哪位高手有空,也可以看下这个协议,地址为:http://www.mep.gov.cn/image20010518/5836.pdf
通讯包的组成有:包头,数据段长度,数据段,CRC校验,包尾。
数据段中有请求编号QN,系统编号ST,命令编号CN,社保唯一标示MN,指令参数CP。
举个例子,上位机要采集实时数据,上位机就发送如下数据段,数据段的内容就包括:QN=20080916000000;ST=32,CN=2011;MN=888888888;
下位机发生实时数据,数据段的内容包括:ST=32;CN=2011;MN=888888888;CP=&&DATATIME=2008091600000;101-RTD(101污染物的数据)=1.1.&&我想请问下,如果这个用SOCKET发送,该如何发送的,想用sendtext发送,已经实现下位机发送A,上位机接受A这种了,
如果要把这个包发送的话,里面的ST=32,CN=2011,这些字母要加进去么?还是只要把32,2011加进去,跟MODBUS那样直接输入数字字符?现在想知道要发送的数据的格式是怎麽样的。谢谢了!!!哪位高手有空,也可以看下这个协议,地址为:http://www.mep.gov.cn/image20010518/5836.pdf
解决方案 »
- 多态方面,感觉不好实现,不过还是想问下
- 【散分...200】祝贺修罗那篇感人的、深得大家期盼的、下一章节总是出来得比较慢的、由短篇发展到中篇,正在向长篇进军的、赚了不少人时间
- decision cube不能统计字段空值吗?
- 为什么我在安装Microsoft SQLDMO Object Library (Version 8.0). 总是死机?是不是不支持win98??
- 取字符串中某个字符用什么函数
- 关于从oracle数据库中取记录的问题
- 我想用程序改变系统刷新频率,用什么函数?
- ★★★如何操作用VC写好的COM+组件接口?★★★UP 有分!!
- Tdbgrid的用法
- 请问哪里可down到fastreport2.40?
- 使自定义的控件能拉伸
- 我想用一个函数调用的方法判断打开MDI子窗体,为什么不成功。
名称 类型 长度 描述
请求编号QN 字符 20 精确到毫秒的时间
戳:QN=YYYYMMDDHHMMSSZZZ,用来唯一
标识一个命令请求,用于请求命令或通
知命令
总包号PNUM 字符 4 PNUM 指示本次通讯总共包含的包数
包号PNO 字符 4 PNO 指示当前数据包的包号
系统编号ST 字符 5 ST=系统编号, 系统编号见6.5 中系统
编码表
命令编号CN 字符 7 CN=命令编号, 命令编号见6.5 中命令
列表
访问密码 字符 6 PW=访问密码
注意发送长度的字节数,QN=、ST=、CN=这些是要加上的,但是很奇怪,最后的访问密码占6个字节,PW=、MN= 似乎又不需要,因为在后面看到密码为123456,如果加上PW=就会变成9个字节了。感觉是协议制定得有问题。
看协议怎么定的,如果定的是QN=20080916000000;ST=32,CN=2011;MN=888888888;
下位机发生实时数据,数据段的内容包括:ST=32;CN=2011;MN=888888888;CP=&&DATATIME=2008091600000
你就发这个,
如果定的是,只发数字,以??为分隔符,你就按协议发就成了,
还有定长的,
主要看协议怎么定的。
这个协议定得够烂的,一般协议会有固定的结构,比如第几个字节到第几个字节就是ST,而不会要求用ASCII码来传输ST=这样来增加发送数据的长度。
要做接收数据的解析的时候,只要用Move将指定位置指定长度的数据移到结构体里面,就可以数据解析出来。按照现在的协议的话,只要计算出数据的位置,也可以取出来