回复帖子:(swy(0.0.*.*))或者更过分一点,您帮我做一个...

用户名:   *您没有注册?
密码:   *忘记论坛密码?    标题采用“回复:XXX....”
验证码 点击获取验证码
主题标题:  *不得超过 200 个汉字
当前心情
上一页 发帖表情 下一页
内容
  

主题最新回顾(发布时间:2004-8-11 17:11:00)
--  作者:x10(0.0.*.*)
--  
在RS485的应用中,用户需要定义数据帧格式,格式中应包括让接收程序能够判断的数据特征,如第一字节为地址码,第二个字节代表本帧的长度;采用CRC校验(PPP方式)等等。在帧格式的定义方面,最好参考modbus协议的方式。由于485是基于字节的,作为我们提供的驱动程序API函数GetInputData()只是从中断buffer中取出可能的一个字节,如何组成数据帧是用户需要编写的链路层(link)程序。相比串口收发一个字节的时间来说,GetInputData()的执行时间是很快的,因此循环执行GetInputData()函数,一般不会连续读到数据,而会返回-1,这是正常的。

主题最新回顾(发布时间:2004-8-11 17:01:00)
--  作者:zhl(0.0.*.*)
--  
作为485通讯,应用数据一般都是整包发送的,如果在一定的时间范围内,只收到22个,当然不能算是整包数据了。数据传输的速度只和波特率有关,数据的收发由中断完成的,由中断服务程序执行将接收到数据放入缓冲区,应用程序用GetInputData( )检查接收缓冲区是否有数。

主题最新回顾(发布时间:2004-8-11 16:27:00)
--  作者:swy(0.0.*.*)
--  
哎,你好象没有时间仔细考虑我的问题。我固然可以用长度判断一个好的完整数据包,但如果一次接收到22B,下一次又接收到24B或其他长度,全部丢弃,这样对通讯的影响也太大了。你这个GetInputData有速度的保证吗?能保证把串口数据全部接收完,或者会不会串口数据还没完,函数就返回了-1,使数据不完整?

主题最新回顾(发布时间:2004-8-11 15:45:00)
--  作者:zhl(0.0.*.*)
--  
可选择长度作为整包数据的判断条件。

主题最新回顾(发布时间:2004-8-11 15:35:00)
--  作者:swy(0.0.*.*)
--  
实际上这种方法不可靠,我需要接受的完整数据包为22个BYTE,接收时有时20B,有时24B,也出现过22B。有什么好法子?

主题最新回顾(发布时间:2004-8-11 14:38:00)
--  作者:zhl(0.0.*.*)
--  
用GetInputData()检查,如果该函数返回-1,表示接受BUF中已没有数据。作为RS485 通讯,一个完整数据包是由用户自己定义。你可根据具体使用情况利用GetInputData()自己再封装一个接收函数。

主题最新回顾(发布时间:2004-8-11 14:22:00)
--  作者:swy(0.0.*.*)
--  
RS485应用中,发送前有PutOutputData,然后StartSend,可以保证一帧数据一次性发送下去,但接收时只有一个GetInputData吗?这样每次只接收一个字节,如何保证把所有的数据都接收完整呢?有没有一个接收控制函数?

主题最新回顾(发布时间:2004-8-11 13:33:00)
--  作者:zhl(0.0.*.*)
--  
char和16进制并没有冲突啊,只是显示的方式不同而已,其实质是一样的。char定义的各个字符也可直接按16进制定义,如:
char str[10];
str[0] = 0x10;

主题最新回顾(发布时间:2004-8-11 13:10:00)
--  作者:swy(0.0.*.*)
--  
或者更过分一点,您帮我做一个发送6个BYTE,下面的设备自动回送22个BYTE的DEMO?

主题最新回顾(发布时间:2004-8-11 13:08:00)
--  作者:swy(0.0.*.*)
--  485
我正在试验RS485驱动,给我的DEMO发送接收用的都是CHAR,我对BC不熟,我的应用发送接受全部是十六进制BYTE,能否给一个PutOutputData和GetInputData前后转换成十六进制BYTE的DEMO,(LCD显示时仍然用CHAR,我的是ETR186)。谢谢!