求解关于arduino的485通讯问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 暗杀星

[已解决] 求解关于arduino的485通讯问题

[复制链接]
 楼主| 发表于 2018-8-2 16:28 | 显示全部楼层
暗杀星 发表于 2018-8-2 16:25
您就好人做到底,帮帮我吧,我不会编程,正在学。

您就写一个简单的就行,我自己再仿照增加一些,其他输入指令,比如就写个指令对应速度的,转向和启停,我自己就仿照修改一下
发表于 2018-8-2 16:39 | 显示全部楼层
暗杀星 发表于 2018-8-2 16:25
您就好人做到底,帮帮我吧,我不会编程,正在学。

不存在的,复制粘贴现有的就能好的,最后送你一个函数吧
[mw_shl_code=cpp,true]void sendCMD(uint8_t addr, uint8_t cmd, uint16_t reg, uint16_t data)
{
  uint8_t buf[8] = {0};
  buf[0] = addr;
  buf[1] = cmd;
  buf[2] = (reg >> 8) & 0xff;
  buf[3] = reg & 0xff;
  buf[4] = (data >> 8) & 0xff;
  buf[5] = data & 0xff;

  uint16_t crc = calcCRC16(buf, 6);
  buf[6] = (crc >> 8) & 0xff;
  buf[7] = crc & 0xff;

  send2SoftUart(buf, 8);
}

//example
sendCMD(0x01,0x03,0x0002,0x0001);[/mw_shl_code]
发表于 2019-5-7 16:27 | 显示全部楼层
别用arduino做485,delay(500);这个时间从机发回来会丢包。单片机485都是发送完,马上置读使能。arduino用searial发不是真正意义的发出,所以才加了delay.但是delay的时长,短了发不出去,长了收不到完整数据。
发表于 2019-5-7 20:11 | 显示全部楼层
跑龙套的保 发表于 2018-8-2 16:39
不存在的,复制粘贴现有的就能好的,最后送你一个函数吧
[mw_shl_code=cpp,true]void sendCMD(uint8_t ad ...

你真有耐心
发表于 2019-5-7 20:13 | 显示全部楼层
leo_fy 发表于 2019-5-7 16:27
别用arduino做485,delay(500);这个时间从机发回来会丢包。单片机485都是发送完,马上置读使能。arduino用s ...

delay(500)是程序设计问题,和arduino无关。
发表于 2020-1-15 13:50 | 显示全部楼层
楼主现在完善了吧,有没有打算出个避坑大全
发表于 2020-5-11 19:41 | 显示全部楼层
跑龙套的保 发表于 2018-8-2 10:26
就那么难么,问了那么久了,用了TTL转485,你就别把它当做485通讯的了,arduino 里的程序就是读写串口,直 ...

[send to SoftUart ]:[printHex]
8F4 8F4 8F4 8F4 8F4 8F4 8F4 8F4
[SoftUart Read]:[printHex]
19F 19F 19F 19F 19F 19F 19F 19F 19F
[ERROR]:len != 8
大佬,为啥我运行显示这个。。。串口读不出数呢
发表于 2021-6-29 23:16 | 显示全部楼层
楼主能把完整代码发一下吗?我也卡在类似的问题,代码还看不懂
发表于 2021-6-29 23:53 | 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 04:26 , Processed in 0.099629 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表