工程文件:https://github.com/A-Y-1/HNU

和串口部分第一个实验一样用C写的,然后又和同学搞了一个C++的出来,但是还是比不过python的版本╮(╯▽╰)╭,仅供参考。(改改还是能更好的,但是我开摆了)

update4.23:我更新了串口1的代码,改到能读出全部密码了,还没完成串口1的可以看看

串口使用与测量2

一.实验目的

1.熟练使用Linux下io函数read、write和epoll等

2.熟练RS485串口的信号特点

3.熟练处理流式通信数据

4.理解485总线的冲突问题

二.实验过程

RS485信号测量

本实验需要将A板与B板通过RS485接口连接并进行通信。需要使用杜邦线连接两单片机板的RS485接口,通过计算机向B板写入发送的数据(A板序列号+学号),数据将通过串口发给B板,再经RS485接口发给A板,发送后A板将发回密码,B板将密码通过串口发送到计算机,需要在计算机上读出密码。

1.测量A板波特率

将A板RS485接口接到示波器,测量如下:

波特率大约为1/50us,故可确认波特率为19200。将B板接示波器,控制摇杆调整至波特率为19200。

2.测量序列号

将A板与B板的RS485接口通过杜邦线连接,按下A板K3,在串口调试助手可以收到A板的序列号为:0e224bed。

此处由于时间有限,直接使用串口调试助手得到A板的序列号,可用示波器得到A板的序列号,使用示波器按波形读取序列号时,需要注意停止位。

3.读密码

在linux平台下的前次实验的读取串口程序中,设置缓冲区,循环中向串口写入AA55+序列号+学号

运行程序,可以收到A板发送的密码:

密码为2fe40a4b。

4.提交

将序列号及密码提交。

RS485总线数据收发

RS485总线有两条线信号线,能够传输一个逻辑信号。计算机标准的UART串口有RX、TX收发两条线,因此能够同时进行数据的接收和发送。而RS485只有一个逻辑信号,因此同一时刻只能有一个主体进行数据发送(因此叫做半双工通信串口)。

本实验需要连接两单片机板的RS485接口,A板将先发送序列号。使用计算机连接B板串口,发送学号,然后B板将发送给A板,此后A板将通过RS485接口发送密码,B板需要接收密码,取出密码发回,然后A板将发送新的密码。重复该过程至A板不再发送新的密码。

1.测量A板序列号

先使用串口调试助手接收A板的序列号,序列号为79eb7a19

2.接收密码,分析密码格式

先使用串口调试助手发送学号,接收一次A板的密码,从而判断A板发送密码的格式。得到的密码格式为aa 55 ff 5b 11 30 95,即aa 55后开始四个字节即为密码,中间只有一个字节的填充字符。

3.编写代码

已知密码格式,接下来编写程序完成B板的学号发送,密码的处理及密码的发送工作。

编写代码使用c语言在第一次实验中的代码基础上进行修改,一个字节一个字节读取数据,然后取出密码发送数据,由于这种方式需要多次读取A板发送的串,耗时很长。最终使用的代码是同学使用C++编写的程序,该程序可以一次读到足够长度的数据。以下先对该程序进行说明:

C++语言实现

程序使用c++语言进行编写,程序的读写使用的myRead和myWrite是参考网上的实现,将串口相关读写功能封装为serial类使用。具体的读写函数通过循环,确保能够读到或写足够长度的数据。数据均使用vector保存。在主程序中,先发送学号,然后while循环读取数据,读到的数据长是确定的。读取长度根据已知密码格式应该为7个字节,由于密码串开始的位置是不确定的,对读到的数据要先找到aa 55,然后通过取余的方式将数据中的密码字节读取并插入vector,再进行发送。

运行结果:

最终得到的密码为a681a302,提交:

C语言实现

主要部分如下:

读取到aa55后开始计数,start设置为4,即count=4,第四个字节而开始向缓冲区buf写入密码字节,写够4字节后向串口写入数据。由于这种实现需要一个字节一个字节读取数据,耗时很长,最后没有使用该程序,但测试时运行三分钟左右,得到的密码提交为38号密码,表明程序可以正确运行。

三.实验总结

通过实验进一步熟悉了串口通信的方法,以及使用write,read等函数进行串口数据进行读写。了解了RS485接口的使用,通过RS485实现了两板的通信和数据传输。认识了RS485的半双工通信模式,在程序运行时,有些产生的密码是错误的,即发生了冲突得到了错误数据。对于程序的编写,能够通过c语言程序实现功能,但是效果不好,还需要进一步学习。最终的实现还是参考他人的c++代码完成,后续还需要加深理解,提高代码的性能以及编写相关代码的能力。

串口使用及测量实验2相关推荐

  1. 串口使用及测量实验1

    工程文件:https://github.com/A-Y-1/HNU 串口部分的实验和综合实验(RS485总线评分系统)我都是使用c或c++编写,结果不是很好(上课用老师的代码速通了,懒得改,直接一个字 ...

  2. 实验二 无线网络环境RSSI测量实验

    无线网络技术教程第四版实验二 无线网络环境RSSI测量实验 目录 无线网络技术教程第四版实验二 无线网络环境RSSI测量实验 1 实验要求和目的 2 实验原理和背景 3 实验环境和软件 4 实验过程与 ...

  3. 计算机串口使用与测量

    计算机串口使用与测量 3.1准备工作 这里由于直接下载好了VMWork Workstation 16 ,所以选择直接使用VMWork Workstation 16 . 3.2Linux操作系统平台 一 ...

  4. 眼图观测实验报告_眼图观察测量实验

    实验 12 眼图观察测量实验 一.实验目的 1. 学会观察眼图及其分析方法,调整传输滤波器特性. 二.实验仪器 1. 眼图观察电路(底板右下侧) 2 . 时钟与基带数据发生模块,位号: G 3 . 噪 ...

  5. 光敏传感器实验报告_光敏传感器光电特性测量实验分析报告.ppt

    思考题 1.光电效应有哪些分类? 光电效应可以分为外光电效应和内光电效应. 2.光敏电阻的物理基础是什么? 内光电效应. * * 光敏传感器的光电特性测量实验 实验简介 光敏传感器是将光信号转换为电信 ...

  6. 声速的测量的实验原理和应用_示波器的原理和使用声速测量实验报告.docx

    示波器的原理和使用声速测量实验报告.docx 示波器的原理和使用.声速测量一实验目的1了解示波器的基本结构及其工作原理,学习并掌握示波器的基本使用方法2学习电信号有关参数的基本概念及其测量3了解声波在 ...

  7. matlab模拟超声波信号_MATLAB模拟超声波声速测量实验

    MATLAB 模拟超声波声速测量实验 曾凡平 ; 田浩 [期刊名称] <高校实验室工作研究> [年 ( 卷 ), 期] 2009(000)001 [摘要] 为了实验教学演示和深入地揭示驻波 ...

  8. 切削力matlab数据处理,基于MATLAB的切削力测量实验数据的处理及分析

    基于MATLAB 的切削力测量实验数据的处理及分析 卞化梅 , 牛小铁 , 陈金英 , 郭 勇 (北京工业职业技术学院 , 北京 100042) 摘 要 : 以曲面铣削加工实验数据的处理为例 ,介绍了 ...

  9. 眼图观测实验报告_实验2 眼图观察测量实验

    姓名裴振启指导教师邵军花日期 实验 2 眼图观察测量实验 一. 实 验目的 学会观察眼图及其分析方法,调整传输滤波器特性. 二. 实 验仪器 1. 眼图观察电路 2 .时钟与基带数据发生模块,位号: ...

最新文章

  1. bzoj 1233 or 3549
  2. android sqlitejian监听,tencent/sqlite.md · zhoujian/AndroidInterView - Gitee.com
  3. python做数据库压力测试_Python 写的一个MongoDB压力测试
  4. 【HDU - 5492】Find a path(dp,tricks)
  5. ppt怎么加注解文字_PPT怎么在演示稿中添加批注的方法
  6. 标识符的命名规定java 0126
  7. 学习笔记:平衡树-splay
  8. VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试
  9. Python数据处理(一)
  10. 设置eMMC和DDR的工作频率
  11. OPENWRT-LUCI开发总结-LUCI添加新页面总结
  12. 获取选股宝7x24小时数据
  13. unity基础学习九,Unity常用API
  14. 基于FPGA的USB高速数据采集系统(免做上位机)
  15. 企业群呼系统呼叫中心系统
  16. 《STL源码剖析》总结
  17. DP DD VTL 备份 NBU
  18. 15个最好的PDF转word的在线转换器,将PDF文件转换成doc文件
  19. 表格中编辑后进行数据比较的方法介绍-比较两套数据
  20. 多多情报通:拼多多可以看到什么软件?拼多多的大数据分析软件是什么?

热门文章

  1. 鸿蒙手机游戏,鸿蒙传奇手游
  2. destoon系统变量的分类
  3. Spring Boot入门教程(五十四): ETL kettle
  4. 用Python定制一本个性化日历,快来领取你的新年礼物啦~
  5. 大家快来a水题 n 55!w ! pue n a^o7 ! n paau ! (sdut oj2413)
  6. 倒计时 总结 Timer Handler CountDownTimer RxJava MD
  7. .net4.0运行时安装说明(xp,win7,win10)
  8. 数独解题程序的JAVA实现
  9. 黎明觉醒服务器维护什么时候结束,黎明觉醒终极测试什么时候结束 黎明觉醒最终测试多久...
  10. Web程序设计基础期末大作业——模仿QQ飞车手游S联赛官网编写的网页