前言

  上一篇已经将Qt移植过去了,此时我们移植整体应用不是什么问题了,那么现在应用对外得接口使用了RS485接口,板载了一个RS485,于是需要调通,兼容这个开发板得RS485。

 

补充

  看起来很简单,弄起来不懂得就是不懂,懂得虽然懂还得花时间去研究一下开发板特性,与厂家沟通下,改下代码,得益于之前使用HI3559DV300做过类似得RS485,所以这次弄起来花费了不太麻烦。

 

调通RS485过程

步骤一:RS485调试设备与开发板连线

  先得有个RS485调试转USB,这样才能调试,界限,笔者得是绿联得RS422/485口,如下图:
  

  开发板485口原理图:
  

  于是接线,对了,这个口子是2.54mm得4dip得dip接插件,这个做硬件得一般都会备点货,属于通用接口,当年各种都备货了一点:
  

  剪一根的一半,然后按照加插件插入的顺序接入,因为看到1和4引脚是联通的地,万用表测了对覆铜层通的(GND),直接1和4接到一起了,然后接A对应T/R+,B对应T/R-,如下图:
  

  接入发开饭:
  

  另外一头usb接入PC电脑,用串口打开即可(PS:485的usb模块对于pc来说就是一路串口)。

步骤二:打开开发板RS485调试工具

  这里的话,因为开发板使用的buildroot,去打开RS485这个类似于串口的设备还真没有,得益于笔者项目研发都会产出阶段性调试工具,于是便有了如下工具(PS:官方有个RS485调试Qt的demo,读者可以使用官方的):
  

  (对了,这里还有相关工具的交叉编译移植,其实跟x86下编译类似,不赘述了,不懂得可以查看《RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试》得demo编译过程,其实是一样的。

步骤三:调试工具轮询接收测试485口

  因为调试工具是被动接收485数据的,所以pc端打开485之后,1s发送一次,每一个端口依次打开,测试485口试哪个口。
  
  然后,结果试每个口都不行,这时候就怀疑:

  • 是否试AB的正负线接反了,可以直接交换,测一轮,也可以核对一次。
  • Rs485口是否有特殊的,需要自行拉上拉下(这里得到官方验证,默认是拉上的,只能发出不接收)
    (PS:通过客服技术支持,得到口为ttyS7,且需要上下拉,默认是上拉,只发送)

  于是加了一个按钮,直接发送出去测试一下:
  

  PC端收到了发送过来的消息:
  

  确认了,是需要上下拉,这时候查阅官方文档,并没有关于上下拉的描述,只能通过官方提供的RS485的Qtdemo来提取了。

步骤四:提取官方QT调试RS485的demo中的关键上下拉逻辑代码

  

  

  直接抠代码,一般是通过echo输入到一个设备文件、file打开设备文件,或者ioctl的方式,这三种方式稍微提一下区别(何种方式看开发板方案上是怎么提供的):

  • echo方式:cmd的方式,程序中用system,qt中可以用QProcess,这个方式效率相对有点低,不适合频发发送接收的状态
  • file方式:file方式是文件方式,兼容linux系统和qt开发最合适的方式,当作文件写入控制,很好的处理了环境问题,效率比echo高,比ioctl低,但是5ms足够几百字节的完成切换了(具体要按照实际情况发送调)。
  • ioctl方式:ioctl的方式在qt中不是很好,在某些情况下,qt根本不需要接触到sysroot下面的依赖库,直接qt交叉编译自己的库就可以,本开发板是已经融合好了  (PS:像海思这种,就只能将qt反向弄到sample里面去,因为环境都是makefile配置的)
      以上三种各有优缺点,但是其实选择权不在我们,而在主板方案提供商,所以拿过来用,能用就行了,别死磕。
      提取代码如下:
      

  

步骤五:改造我们的串口代码

  添加一个宏定义:
  

  在串口设备管理模块添加相关代码.
  在打开的时候,添加代码:
  

  在发送的时候,添加代码:
  

  在关闭的时候,添加代码:
  

  改在完以后,再交叉编译协议调试工具过去测试。

步骤六:调试解析成功

  在目标板上打开应用,打开对应的串口,然后实现收发成功:
  

 

小结

  RS485调试通了,大项目中的调试工具也通了,那么剩下的就是移植应用了,移植应用中,遇到了新的问题(做嵌入式,轮上都是没问题,实际上问题一个又一个,运气好不麻烦,运气不好卡个一两天,麻烦的一两周都常有的事)

RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo的更多相关文章

  1. nrf开发笔记一开发软件

    nrf52810 的开发环境,比较主流的可以使用keil,iar亦可.sdk中,使用的是pca10040e,s112.虽然开发板共用一个型号(pca10040) keil5中,cmsis 需要4.5. ...

  2. Qwt开发笔记(二):Qwt基础框架介绍、折线图介绍、折线图Demo以及代码详解

    前言   QWT开发笔记系列整理集合,这是目前使用最为广泛的Qt图表类(Qt的QWidget代码方向只有QtCharts,Qwt,QCustomPlot),使用多年,系统性的整理,本系列旨在系统解说并 ...

  3. VUE依赖webpack分别给开发环境和生产环境配置不同的常量值并在项目中动态引用

    当在开发和产品上线的时候,我们经常会遇到在同一个地方由于环境的不同而地址也不同的情况,这时候如果在代码中将该地址写死,那势必会造成上线时手动改动,多人开发及多处使用该地址难以维护等一系列问题,为避免这 ...

  4. Yocto开发笔记之《Tip-应用程序无法在目标机运行》(QQ交流群:519230208)

    官方app编译环境编译的应用程序可以在开发板自带的系统中运行,自己编译并烧写了系统,却提示: root@imx6ulevk:/root# ./VTTerminal -sh: ./VTTerminal: ...

  5. APPCAN开发笔记:html页面之间的参数传递:使用js获取url中的参数,以及在APPCAN中不能使用的解决方法

    用PHP的GET/POST方式来传递方式已经是司空见惯了,但是如果我的页面是一个静态的html的页面,想传递参数的时候要怎么办呢?在APPCAN的开发中我们会经常遇到这样的问题,因为所有的页面都是静态 ...

  6. wp8开发笔记之开发环境的搭建

    开发工具的下载: Windows phone sdk 8.0下载地址: http://www.microsoft.com/ZH-CN/download/details.aspx?id=35471 开发 ...

  7. Delphi For Android 开发笔记 1 - 开发工具介绍

    在开始前,推荐喜欢delphi或者pascal的朋友,如果想将原来Windows的软件工程移植到Android,可使用CodeTyphon+Delphi XE7进行开发. 1.CodeTyphon C ...

  8. 安卓开发笔记(二十):利用夜神模拟器调试运行Android Studio的apk

    一.首先来到夜神模拟器的安装目录下 如下图所示: 再把这整个文件夹添加到我们的windows环境变量里.然后再把android studio 和夜神模拟器都打开,注意必须同时打开而且不能够把夜神模拟器 ...

  9. odoo开发笔记 -- 日常开发注意点总结(持续补充)

    (1) odoo视图字段,如果是readonly,默认该数据是不会往后台传递的,因此,保存数据的时候,该字段的数据是不会存到数据库中的.(待确认,字段中增加默认值,保存) (2)视图界面,注释的时候, ...

  10. vue全家桶+Koa2开发笔记(8)--开发网页

    1.使用 mongoose 动态倒入数据 mongoimport -d student -c areas areas.dat -d 后面是数据库名称: -c后面是表名称 最后是数据源 2.使用vue的 ...

随机推荐

  1. [转帖]【软件测试】Jmeter性能测试(性能测试,Jmeter使用与结果分析)

    文章目录 前言 一.性能测试 1. 什么是性能测试? 2. 性能测试的重要性 3. 性能指标--QPS和TPS ①QPS ②TPS 二.压测工具Jmeter 1. 什么是Jmeter? 2. Jmet ...

  2. IIS 实现autoindex的简单方法 能够下载文件等.

    之前使用nginx 的autoindex on 的参数 能够实现了 nginx的 目录浏览查看文件 但是那是linux上面的 windows 上面很多 使用的 其实是 iis的居多 然后看了下 其实也 ...

  3. 一文搞懂Go GC演进史,讲的太细致了!

    最近在和 Go就业训练营 的朋友讨论Go GC的问题,发现了刘丹冰老师总结的内容,写的太好了,和大家分享一下. 我们的讨论和思考也整理到这篇文章中了,希望对你有启发. 垃圾回收(Garbage Col ...

  4. 如何将数据库中的树结构表导出EXCEL

    我们常常会遇到这样的需求,将数据库中父子结构的表数据导出作为表头 我们实现的开发中就遇到这样的需求:将所有用户的权限表导出,权限作为表头 思路:sql求出每一条权限数据应该跨的行数,在代码中填充这些数 ...

  5. IDM全版本激活工具

    前往IDM官网下载IDM IDM官网 下载破解工具 IDM激活工具.zip 解压打开激活工具选择1 然后回车耐心等待激活完成即可

  6. Go语言的100个错误使用场景(一)|代码和项目组织

    目录 前言 1. Go: Simple to learn but hard to master 1.1 Go 语言概述 1.2 简单不等于容易 1.3 使用 Go 的100个错误 2. Code an ...

  7. 21.7 Python 使用Request库

    Request库可以用来发送各种HTTP请求,该框架的特点是简单易用,同时支持同步和异步请求,支持HTTP协议的各种方法和重定向.它还支持Cookie.HTTPS和认证等特性. Request库的使用 ...

  8. Python通过SNMP监控网络设备

    前段时间,为了实现自动化巡检,我开发了自动化巡检工具,由于我的系统设备版本比较多,所以我是分别开发的客户端程序,服务端使用dll文件与客户端通信,服务端的dll在与python通信,通过Python丰 ...

  9. IDEA破解激活

    !!!不要使用最新2021.2.3以后的版本,没有30天免费试用.推荐使用2021年之前的版本!!! 1: IDEA安装后使用30天免费试用进入,然后找到图中位置点击 2: 点击下图链接下载破解jar ...

  10. Advanced Installer设置安装最后一步启动软件

    左侧用户界面中选择对话框-ExitDialog 在完成操作项中勾选"安装结束时启动应用程序",在弹出的对话框中选择需要启动的exe文件