7762浏览
查看: 7762|回复: 5

[已解决] 一个485通信的问题,能发送不能接收,求大神指点

[复制链接]
本帖最后由 maxfeel 于 2015-7-17 11:53 编辑

通过串口助手调试能正确收到485发送来的数据,但是返回数据收不到求大神指点,digitalWrite(EN, HIGH);//为发送状态
digitalWrite(EN, LOW);//为接收状态
代码如下:


int EN = 7;    //定义RS485扩展板的使能端(2号数字IO口),高电平为发送状态,低电平为接收状态
unsigned char RX = 0;
void setup()
{
  Serial.begin(1200, SERIAL_8E1);
  Serial.flush();
  delay(1000);
  pinMode(EN, OUTPUT);
  pinMode(8,OUTPUT);
  digitalWrite(EN, HIGH);
}

void loop()
{
   digitalWrite(EN, HIGH);
  char hexdata[14] = {0x68, 0x73, 0x26, 0x12, 0x00, 0x80, 0x013, 0x68, 0x01, 0x02, 0x43, 0xc3, 0x17, 0x16};
  Serial.write(&hexdata[0], 14);
  delay(300);
  digitalWrite(EN, LOW);

  if (Serial.available() > 0)
  {
    unsigned char RX = 0;
    RX = char(Serial.read()); //Serial.read();
    Serial.println(RX);
    digitalWrite(8, HIGH);
    delay(1000);
    digitalWrite(EN, HIGH);
  }

  delay(3000);

}


Cain  初级技匠

发表于 2015-7-17 12:25:55

感觉你的程序里不对劲啊,好像一变成LOW之后收到一个字符就立刻进入循环变成high了呀,不要用使能,单独测试一下接收功能吧
回复

使用道具 举报

maxfeel  见习技师
 楼主|

发表于 2015-7-17 13:21:22

单独试过可以收到信息
回复

使用道具 举报

maxfeel  见习技师
 楼主|

发表于 2015-7-17 13:22:30

实际情况是 if (Serial.available() > 0)  这个都没有进去!
回复

使用道具 举报

Cain  初级技匠

发表于 2015-7-17 17:16:41

那就是没收到数据咯,硬件上怎么连接的?
回复

使用道具 举报

maxfeel  见习技师
 楼主|

发表于 2015-7-20 11:06:54

Cain 发表于 2015-7-17 17:16
那就是没收到数据咯,硬件上怎么连接的?

问题已经解决,是返回之前的延时问题delay(1000); //这个用200就可以了
  pinMode(EN, OUTPUT);
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail