RS232 Android获取串口数据

这篇具有很好参考价值的文章主要介绍了RS232 Android获取串口数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

串口

串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。

定义

串行接口(Serial Interface)是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。

由来

串口的出现是在1980年前后,数据传输率是115kbps~230kbps。串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备。串口也可以应用于两台计算机(或设备)之间的互联及数据传输。由于串口(COM)不支持热插拔及传输速率较低,部分新主板和大部分便携电脑已开始取消该接口。串口多用于工控和测量设备以及部分通信设备中。

接口划分标准

同步串行接口(英文:Synchronous Serial Interface,SSI)是一种常用的工业用通信接口。
异步串行是指UART(Universal Asynchronous Receiver/Transmitter),通用异步接收/发送。UART是一个并行输入成为串行输出的芯片,通常集成在主板上。UART包含TTL电平的串口和RS232电平的串口。 TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5+12V为低电平,而-12-5V为高电平,MDS2710、MDS SD4、EL805等是RS232接口,EL806有TTL接口。
串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。

RS-232

也称标准串口,最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“ [1] 数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中25芯插头座已很少采用。
RS-232采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7kΩ。所以RS-232适合本地设备之间的通信。 [2]

RS-422

标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。典型的RS-422是四线接口。实际上还有一根信号地线,共5根线。其DB9连接器引脚定义。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。接收器输入阻抗为4k,故发端最大负载能力是10×4k+100Ω(终接电阻)。RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。
RS-422的最大传输距离为1219米,最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。

RS-485

是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论四线还是二线连接方式总线上可多接到32个设备。
RS-485与RS-422的不同还在于其共模输出电压是不同的,RS-485是-7V至+12V之间,而RS-422在-7V至+7V之间,RS-485接收器最小输入阻抗为12kΩ、RS-422是4kΩ;由于RS-485满足所有RS-422的规范,所以RS-485的驱动器可以在RS-422网络中应用。
RS-485与RS-422一样,其最大传输距离约为1219米,最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mb/s。 [2]

与并口区别

串口形容一下就是一条车道,而并口就是有8个车道同一时刻能传送8位(一个字节)数据。但是并不是说并口快,由于8位通道之间的互相干扰(串扰),传输时速度就受到了限制,传输容易出错。串口没有互相干扰。并口同时发送的数据量大,但要比串口慢。 [3] 串口硬盘就是这样被人们重视的。

应用

交换机的串口

交换机的串口的英文就是trunk;是用来做下一跳路由转换用的。每个VLAN只有通过与TRUNK的路由指向后才能上外网。

电脑主板串口

进行串行传输的接口,它一次只能传输1Bit。串行端口可以用于连接外置调制解调器、绘图仪或串行打印机。它也可以控制台连接的方式连接网络设备,例如路由器和交换机,主要用来配置它们。

在window下模拟串口进行调试

window10下 使用 [串口调试助手3]+[Virtual Serial Port Driver Pro9.0 by Eltima Software]

使用[Virtual Serial Port Driver Pro9.0 by Eltima Software]创建一对连接的串口,不要使用com1和com2创建,可能会出现问题,因为com1可能是物理存在的,创建完成后,可以在此电脑→管理→设备管理器→端口处查看到,虚拟的端口,虚拟的端口是有对应关系的,然后打开两个[串口调试助手3]作为调试端口

ComAssistant V1.1版本参数配置
串口号: /dev/ttyZC1
波特率: 9600
校验位: 无校验
停止位: 1位
解码方式: 文本

Android模拟器访问PC本地串口

创建一对虚拟串口COM2和COM4,COM4作为PC串口使用,将COM2映射到夜神模拟器的串口上
PC: COM2 — COM4
|
Android: /dev/ttyS3

虚拟化后,使用Android Studio自带的Android模拟器创建一个Android系统
使用emulator.exe -list-avds显示所有模拟器,注意不要直接通过Androidstudio启动模拟器
通过emulator.exe -avd Pixel_2_API_27_2 -writable-system -qemu -serial COM2 启动Android模拟器
启动报错,安装NDK相关内容

启动模拟器后,如果进入adb shell时,前缀是类似:@generic_x86:/ $
最后是一个美元符号$,则表示不是以root身份运行。如果前缀是类似:root@generic_x86:/ #
最后是一个井号#,则表示是以root身份运行。
如果没有root,要使用root权限,则需要执行su命令,但执行后出现提示:/system/bin/sh: su: not found

找不到su命令

其实并不是找不到,只是因为没有root权限,也执行不了su命令

那么也就是说,在没有root权限的情况下要切换到root状态也需要root权限,这进入了权限许可逻辑的死循环。

于是,我们要跳出解决权限问题的思维!

解决方法:

我一开是采用的Android Studio安卓模拟器的版本是根据所学习的教程推荐的Android 7.0。

但是,Android 7.0的模拟器是没有root权限的!

所以只需要重新安装一个非Android 7.0版本的模拟器,如Android 6.0,或者连接一台获得了root权限的安卓设备

运行后会发现,当进入adb shell后,命令提示符里前缀就已经变成了:root@generic_x86:/ #

带有root权限的adb shell

那也就不需要su命令了,可以直接访问所有的文件,问题就解决了。

其他问题:

在使用adb的时候,有时候会遇到在命令提示符打不开adb shell的情况,提示:adb sever is out of date.killing

则有可能是你打开了两个adb,Android Studio在运行安卓模拟器时,会自行初始化并打开adb。如果此时你再手动打开adb shell,会出现两个adb抢占5037端口,导致两个都不能使用的问题。

那么我的解决方法比较简单粗暴:

重启电脑再打开Android Studio,并且只用AS里自带的Terminal命令控制符打开adb shell,尚可解决

adb使用命令

adb shell连接默认设备
adb -s 设备名 shell 指定某个设备执行命令
ADB命令用法大全

参考的博客
Android调试串口无法连接串口设备的问题及解决办法
Android模拟器实现windows虚拟串口通信调试
Android模拟器调试串口
Android Windows虚拟串口调试
使用ANDROID模拟器调试串口功能
Android 串口打开失败几种原因及解决办法

连接Android方式

  1. Androidstudio中启动Android模拟器
  2. 使用adb root设置adb为root模式
  3. adb shell setenforce 0 临时关闭selinux防火墙,强制模式, adb shell getenforce,获取当前状态,如果为Enforcing则执行
    组合命令:adb root & adb shell setenforce 0
    adb root & adb shell setenforce 0 & adb shell chmod 777 /dev/tty & adb shell chmod 777 /dev/ttyS0 & adb shell chmod 777 /dev/ttyS1 & adb shell chmod 777 /dev/ttyS2 & adb shell chmod 777 /dev/ttyS3
  4. 进入/dev文件夹
  5. 设置权限chmod 777 ttyS3
    组合命令:adb shell chmod 777 /dev/tty & adb shell chmod 777 /dev/ttyS0 & adb shell chmod 777 /dev/ttyS1 & adb shell chmod 777 /dev/ttyS2 & adb shell chmod 777 /dev/ttyS3
  6. 关闭Android模拟器,使用emulator命令启动模拟器,重新从第2步开始执行
    emulator.exe -avd Pixel_2_API_25 -writable-system -qemu -serial COM2
  7. 使用安卓串口调试工具调试串口,下载安卓8.1版本的串口调试助手,安装root工具Superuser,安装手机端terminal.apk,
    切换为Android 7.1.1,API 25
    注意, 每次重启Android模拟器都需要重新设置adb参数
梳理一下现在市面上常见的CPU架构类型,如下:

1、armeabi-v7a: 第7代及以上的 32位ARM 处理器
2、arm64-v8a: 第8代、64位ARM处理器
3、armeabi: 第5代、第6代的32位ARM处理器,早期的手机在使用,现在基本很少了。
4、x86: Intel 32位处理器,在平板、模拟器用得比较多。
5、x86_64: Intel 64位处理器,在平板、模拟器用得比较多。

  1. 在安卓串口助手上选择可用的串口,点击打开,然后在电脑端点击响应连接的串口,点击打开,如果打开时发现安卓7.1.1的模拟器直接卡死关机,这就说明已经连接上了,这个时候直接上自己开发的Android代码连就行

开发完成后直接真机测试,就不要用模拟器测试了,因为模拟器不清楚是内部什么原因卡死。据说网上飘来的答案说是5.1以上的Android系统不能使用,串口权限没有打开。但是我这里想了一下,我修改了权限了的,而且是在模拟器打开的时候是正常的,
是主机打开串口的时候卡死的,这就说明连接是正常的,也有可能是纯粹不大兼容吧
排查原因,数据位不能超过8位,设置成7位试试,不行…
Android选择4.4版本的,Android API 19再试

收获

了解了大名鼎鼎的串口是啥,究竟是干嘛的,在学习使用RS232协议进行串口通信的过程中,学习了Android开发的部分知识,了解了Java JNI在链接C/C++时发挥的作用文章来源地址https://www.toymoban.com/news/detail-701641.html

到了这里,关于RS232 Android获取串口数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA实现串口通信(RS232)含代码

    带有CH340的FPAG开发板 该模块的功能是接收通过 PC 机上的串口调试助手发送的固定波特率的数据,串口接收模块按照串口的协议准确接收串行数据,解析提取有用数据后需将其转化为并行数据;简单的说,接收模块的功能就是 解析+串转并 ; 具体实现步骤如下: 1、算出波特

    2024年02月02日
    浏览(52)
  • 【以太网通信】RS232 串口转以太网

    最近和 RK 研发同事在调试通信接口,排查与定位 RK3399 接收数据出错的问题。FPGA 与 RK3399 之间使用一路 RS232 串口进行通信,由于串口数据没有分包,不方便排查问题,想到可以开发一个 RS232 串口转以太网的工具,将串口接收到的数据封装为 UDP 数据报文,并通过网线传输到

    2024年02月11日
    浏览(57)
  • STM32CubeIDE开发(二十二), stm32的RS485/232串口通信开发要点

    目录 一、stm32串口通信         1.1 硬件流控          1.2 软件流控         1.3 串口通信参数 二、新建RS485通信工程         2.1 项目实现背景信息         2.2 项目配置         2.3 代码实现    三、RS485驱动调用及测试         3.1 接口调用        3.2 编

    2024年01月20日
    浏览(52)
  • 学习笔记|串口通信的基础知识|同步/异步|RS232|常见的串口软件的参数|STC32G单片机视频开发教程(冲哥)|第二十集:串口通信基础

    百度百科:串口通信的概念 什么是通信? 例如U盘和电脑,我们电脑需要往U盘存东西,而U盘上只有四个触点,除去一个电源一个地,只剩下两个引脚了。此时我们坑定不能像点亮LED那样单纯的给他两个引脚上输出个高低电平就能写数据了对吧。总不至于输出一个高电平就能

    2024年02月07日
    浏览(58)
  • Android:usb转232串口通信

    准备工作 首先得adb进入盒子root模式,将/dev/ttys1这个文件改为777,使得所有用户可操作 adb root adb remount   adb shell  进入设备的root模式,执行 chmod 777 /dev/ttys1 执行完成后退出 exit 再执行 adb shell  chmod 666 /dev/ttyS1  如果没有报错的话,再执行串口就不会报错了 调试的demo我用的

    2023年04月22日
    浏览(35)
  • RS232&RS485串口的区别

    一、接口物理结构不同  1、RS232接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组RS232 接口,分别称为COM1和COM2。 2、RS485接口没有具体的物理形状,是根据工程的实际情况而采用的接口。 二、接口电子特性不同 RS232接口的信号电平值较高,易损

    2024年02月05日
    浏览(42)
  • 串口RS232、RS485最本质区别

    由下图可看出不管是RS232还是RS485,其本质都是串口通信,只不过是串口通信电平上的变种而已。所以,我们首先从串口通信讲起。 1、串口通信 任何一种通信都要有物理接口和通信协议。串口通信物理接口如下图: 串口通信协议首先要约定好帧格式和波特率。下图是我们常

    2024年02月09日
    浏览(46)
  • 串口通讯UART/RS232/RS485/RS-422笔记

    串口通讯是指数据按位(bit)发送和接收字节的一种传输方式。一个字节的数据传输要分为8次进行,由低位到高位按顺序一位一位的进行传送。 由于串行通信的数据是逐位传输的,所以发送方和接收方都需要具有固定的时间间隔来发送/接收每一位,也就是要保证通讯双方具

    2024年02月15日
    浏览(86)
  • 1、串口(UART/COM/TTL/RS232/RS485)

    目录 串口简介 串行通讯制式 UART 2.1 简介 2.2 电平标准 TTL RS232 RS485 2.3、电平转换(重点讲解RS232-TTL) USB转TTL USB转RS232 USB转RS485  RS232、RS485互转 RS-232、TTL互转  2.4 串口通讯协议(RS232/TTL) 参考资料 请参考百度百科:串行接口_百度百科 首先,串口、UART口、COM口、USB口是指的

    2024年02月02日
    浏览(40)
  • FPGA—串口RS232(附实现代码)

    目录 1. 理论 1.1 串口简介 1.2 RS232信号线 1.3 RS232通信协议简介 2. 实操 2.1 硬件资源 2.2  顶层模块 2.2.1 模块说明 2.2.2 RTL 代码 2.2.3  仿真验证 2.3 串口数据接收模块 2.3.1 模块说明 2.3.2 波形设计 2.3.3 RTL代码 2.3.4 仿真验证 2.4 串口数据发送模块 2.4.1 模块说明  2.4.2 波形设计 ​

    2023年04月22日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包