根据厂家提供的仪器的通讯协议,用串口调试助手,接收不到数据。。?
根据厂家提供的仪器的通讯协议,用串口调试助手,接收不到数据。。?一. 通讯方式:
1. 监控设备仪器与计算机集中监控软件间的连接采用RS232通讯方式.
2. 通讯波特率: 9600bps.
3. 通讯字节格式: 1位起始位, 8位数据, 无奇检验位, 1位停止位.
4. 计算机为主动发送,每隔一定时间(1S)向监控设备发正常巡检命令,如果有报警,故障等信息,则向计算机发送,只发一次,如没有,则发正常应答信息.
5. 计算机如果需要查询监控设备数据信息,则需向监控设备发送查询命令,监控设备依据命令回答信息。
二.通讯格式:
为减少监控设备的中断次数,采用8个字节产生一次中断,所以计算机发送的每帧信息的数据个数应为8的整数倍.
数据帧定义如下:
字节0: 数据个数高字节
字节1: 数据个数低字节
字节2: 发送源地址
字节3: 发送目的地址
字节4~N+3:实际N个数据(本字节为命令标志字节,见举例中的红色字体)
字节N+4: 0~N+3数据的累加和校验高位
字节N+5: 0~N+3数据的累加和校验低位
计算机地址: 00;
控制器地址: 01;
发送每一帧内部数据的字符间隔时间不能大于200ms
三.数据定义:
上(计算机)向下(监控设备)发送:
正常巡检:0x00 0x08 0x00 0x01 0x09 0x00 0x00 0x12;
下(监控设备)向上(计算机)发送:
正常应答:0x00 0x08 0x01 0x00 0x19 0x00 0x00 0x22;
**************以上是厂家提供的通讯协议*****************
问题: 我想测试一下通讯是否正常。。(以下操作方法是否正确。。?)
用串口调试助手调试,端口设置 COM1,波特率:9600, 1位起始位, 8位数据, 无奇检验位, 1位停止位
串口的接线方式是:2-3,3-2,5-5
发送选择16进制,接收也要选择16进制
正常巡检: 发送“ 00 08 00 01 09 00 00 12”,就是始终接收不到数据。。??
电脑串口肯定没问题的,测试过了,
我对这方面不太懂,请懂的高手指点一下。。。。????
--------------------编程问答-------------------- 数据没有发够,接收端还在等。注意,你的 8 是指数据域的长度,不是包的全长。
你的这个结构,数据长度是 2。
--------------------编程问答-------------------- 你好,,,你能说的具体点吗??你能打个比方吗,,?需要怎么做才能收到数据。。。??
我对这方面不是很了解。。。谢谢 --------------------编程问答-------------------- 你好,根据厂家的通讯格式及提供的数据包例子, 电脑侧没有收到反馈。
个人理解,假设厂家的例子是正确的,那么电脑侧发送的数据包格式是正确的,但是数据包的内容意思你能够知道么,也就是说 发送“00 08 00 01 09 00 00 12”,是做什么用途的。这个厂家的资料中有没有说明呢。
--------------------编程问答--------------------
看错了,协议头两个字节还是整包的长度,而不是 N。
从你贴的内容看,发送这个命令就是正常巡检。如正常,应收到正常应答。
收不到数据的可能原因很多:
* 设置有问题(例如你使用的不是 COM1)
* 仪器没有正常工作
* 命令没有发送到仪器
* 应答接收通道有问题
你可以用示波器逐点检测命令和应答信号,看信号通道是否正常。 --------------------编程问答-------------------- 谢谢你,,,设置这些都对的,电脑串口也是正常的
用示波器测量串口的2、3脚吗。。。?? --------------------编程问答-------------------- 上(计算机)向下(监控设备)发送:
正常巡检:0x00 0x08 0x00 0x01 0x09 0x00 0x00 0x12;
--------------------编程问答--------------------
很多人喜欢说,我弄得哪里都没有错,就是结果不正确。
在我的思维中,如果结果不对,一定是哪一个或哪几个地方出了问题。
首先,把所有可能的原因列出来,然后一个一个去验证。
如果所有的原因都验证无误,那就是漏掉了其他的可能原因。再重复以上的过程。
补充:VB , 基础类