04、RS232 协议介绍

从之前的学习,我们知道了 SECS-I 使用的 RS232 来进行数据的传输,那我们也初略的了解下 RS232。

这一篇不用看也可以。

这是最低的协议层。它定义了设备上的物理接口。它是基于RS-232-C标准。使用25针式“D”型连接器(或其他接头)。以下是用于通信的引脚。

**Pin ** RS-232-C Circuit Description
1 AA Shield
2 BA Data from Equipment
3 BB Data to Equipment
7 AB Signal Ground
18 +12 to +15 volts (opt)
25 -12 to –15 volts (opt)

该设备在针脚2上发送数据,并在针脚3上接收数据。因此,它被称为“数据终端设备”(DTE,或计算机)。如果另一端(主机端)是“数据通信设备”(DCE),则在两者之间使用一条直通电缆。

但是,如果另一端(主机端)也是一个DTE,则需要一个调制解调器连接器或电缆。这就有效地交换了引脚2和脚3。

上面的内容讲的是串口通信,就是如何通过一条线来通信。具体的我也不清楚。原谅我这个菜鸡!!

本文转载于网络 如有侵权请联系删除

相关文章

  • ES6数组新方法[通俗易懂]

    大家好,又见面了,我是你们的朋友全栈君。ES6数组新方法目录ES6数组新方法1.`forEach()`和`map()`2.`filter()`3.`reduce()`4.`some()`5.`every()`6.`Array.from()`7.`Array.of()`8.`copyWithin()`9.`find()`和`findIndex()`10.`fill()`11.`entries()`,`keys()`和`values()`12.`includes()`13.`flat()`,`flatMap()`14.`at()`1.forEach()和map()forEach()会修改原来的数组,不会返回执行结果。map()方法会得到一个新的数组并返回。 map的执行速度会更快。letarr=[1,2,3,4,5]; arr.forEach((num,index)=>{ return(arr[index]=num*2); }); letdoubled=arr.map(num=>{ returnnum*2; }); //[2,4,6,8,10]复制2.filter()创建一

  • j-link接口定义及实际使用[通俗易懂]

    大家好,又见面了,我是你们的朋友全栈君。使用j-link下载程序或者在线调试的时候,有两种模式:JTAG和SWD可以在keil中选择:下面是两种模式下,分别用的接口引脚:推荐使用SWD模式,因为更省引脚而且调试功能不受影响。在SWD模式下,实际只需要4个IO口就可以了,包括下载程序和在线调试。分别为:PA13/JTMS/SWDIO、PA14/JTCK/SWCLK、VCC、GND发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140358.html原文链接:https://javaforall.cn

  • 一篇文章说清楚云原生时代 CI/CD Tekton

    1.背景1.1目前使用Jenkins遇到的问题编排引擎不稳定Jenkins是由Java编写的编排引擎,在FullGC时会StopTheWorld(STW)。在大规模构建时,STW可能会导致Jenkins无法处理新的请求。大量构建卡顿Jenkins使用磁盘文件存储数据,每条流水线、每次构建都会占用一个文件目录,产生大量文件。通常流水线数量有限,但在构建达到10000+级别时,会感受到IO对Jenkins的影响。开发插件成本高虽然Jenkins已经有很多的插件,但是面对内部庞大的各种系统,CICD系统依然有开发插件的需求。开发Jenkins插件,需要掌握Java语言,学习Jenkins的插件机制。开发插件就是以Jenkins的运行周期为切入点,对其进行扩展。首先根据需要扩展的功能,在JenkinsPackages文档中,找到扩展的类。然后,在插件的主类中extends扩展类,实现自己的业务逻辑。并发性能差由于Jenkins本身的限制,在Kubernetes上无法运行多个副本。基于Kubernetes的Jenkins并发量,构建并发量最多达到400左右时会出现明显瓶颈,继续提升需要架构层面的

  • oppo和海康嵌入式软件工程师面经总结

    哈喽,大家好。分享下春招面试的两家公司。海康和oppo是三月初的时候投递的,虽然,秋招已经签了。但是,我还是想充分利用下应届生的身份,搏一搏更大的公司和更高的待遇。海康缺口比较大,一直在招人。oppo春招不像秋招那样,卡简历卡的那么严格,普通学校的学生也有了很大的机会。两家公司的面试都不太难,问题都是提前准备到的。所以,笔试面试的一些八股文,该背还是要背的。毕竟,面试的时候,答不上来等于不会。八股文的内容,可以看下这篇文章嵌入式软件工程师笔试面试指南-C/C++。所有关于笔试面试的内容,我都会同步在github(https://github.com/ZhongYi-LinuxDriverDev/EmbeddedSoftwareEngineerInterview)上,大家可以star下,以免错过更新。大家如果想提前准备的,可以加我好友,我会把旧版本先给你。海康一面(3.23,35min)自我介绍项目介绍你做的这个项目遇到了那些问题,如何解决的?移植uboot,只做了移植吗?用的那个文件系统?移植过程中,网卡驱动做了那些工作?写过那些驱动,讲一个你熟悉的?写驱动过程中,遇到过什么问题,

  • 是不是只有线上出了bug,老板们才知道测试的价值

    测试没价值有同学说,测试没价值,我们测试团队刚被拆散了。 也有同学说,公司不重视测试,我觉得我们就是测试得太好了。哪天线上出个bug,老板们就知道测试的价值了。 还有人给测试同学规划职业发展路径,就是不做测试,技术好的转行去做开发,能说会道的去做项目经理、产品经理。也有人说,测试应该左移右移。不过左移右移的,其实是测试的工作职责和意识,而不是测试人员的肉身。 一时间,仿佛一个测试人员的成功,就是不做测试。你的表演舞台,决定了你的价值是这样的吗?从影响力的范围来说,是这样一个价值链:个体-团队-部门-公司-行业。用金融业常用的前-中-后台的说法来讲,一个测试人员的专业路径,大体上是这样的:成为高绩效员工。你测试,我放心。带领团队获得绩效。兄弟们,跟我冲。 笔者把1和2当做是一个测试的基础价值。这时候测试还属于后台服务,经过我们测试的东西,能够让老板放心,让用户舒心。同时个人和团队在测试领域也经过深耕,成为了领域专家能手,获得了成长。 切入生产链条-赋能开发、运维(质量意识、工具平台、流程制度)、业务部门。 用目前流行的词,就是测试的左移、右移,你可能还是个测试,但是已经不再固守在测试领

  • MySQL全文索引的概念

    MySQL全文索引的概念今天下午下班去吃饭,吃完饭坐电梯上三楼,竟然被困在电梯里面了,当时的感觉还是很刺激的,电梯上升着,突然就掉下来了,像跳楼机一样,突出一个刺激,索性只掉了一层。。。然后由于是下班时间,修电梯的师傅打车来公司,修了半个小时才修好的,我们3个DBA在电梯里面困了一个半小时。困在电梯里的时候,大家在开玩笑说,这个时候要是出个线上的故障,那不得了啊,公司的中流砥柱们都困在电梯里了,哈哈哈。今天回家比较晚了,简单写写全文索引的概念吧。在日常的业务场景中,我们可能通过字段的数值比较和范围过滤等方法就能完成绝大多数数的查询工作了,但是考虑这样一种场景,你需要做一些关键字的匹配查询,需要基于相似度进行查询,例如你输入"我帅哥"这两个关键字,其实需要匹配的是包含我和帅哥这两个关键字的内容,顺序可能不一致,例如返回的结果可能是:"我是帅哥","我不是帅哥"。事实上全文索引就是为这种情况设置的。这样的场景是不是感觉很熟悉,是的,百度的搜索引擎就是这样的,你输入关键字,会根据关键字来匹配相关的文章来供读者查看。这样在庞大的数据量

  • jQuery Mobile的学习 jQuery Mobile工具栏、标题栏、页脚栏的定位学习

    程序员都很赖,你懂的! 最近在做html5页面的开发,主要做智能终端设备的开发。对于内容比较少的页面,领导提出了要将页眉和页脚定位到网页的最上方和最下方。对于这样的要求,其实一点也不过分。但对于新手来说,确实很难,很不容易,今天我就将我学习的内容一起分享一下! 放置页眉和页脚的方式有三种:    Inline-默认。页眉和页脚与页面内容位于行内。    Fixed-页面和页脚会留在页面顶部和底部。    Fullscreen-与fixed类似;页面和页脚会留在页面顶部和底部 请使用data-position属性来定位页眉和页脚:  看代码:<!DOCTYPEhtml> <html> <head> <linkrel="stylesheet"href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css"> <scriptsrc="http://code.jquery.com/jquery-1.8.3.min.j

  • 配置多个git账号的ssh密钥

    背景我们在工作中会以ssh的方式配置公司的git账号,但是平时也会使用github管理自己的项目。出于各种原因,自己的github项目无法使用公司的git账号,于是我们可以为自己的github创建一个新的git账号,这就需要生成新的ssh密钥。 下面总结了创建多个互相独立的ssh密钥的步骤(以公司的和自己github的为例)。步骤(以mac为例)在文件夹~/.ssh/下创建两个文件夹,分别为company/和github/,前者存放公司的ssh密钥,后者存自己github的ssh密钥。下面的步骤以创建github密钥为例:在终端执行命令:ssh-keygen-trsa-C"your_github_email@example.com"然后会提示Enterfileinwhichtosavethekey,输入文件路径~/.ssh/github/id_rsa_github,最后就会在该路径下生成id_rsa_github和id_rsa_github.pub两个文件(若直接回车的话,会保存在~/.ssh/文件夹中)。然后出现Enterpassphrase(emptyforno

  • L015ubuntu及衍生版: 包的相关处理

    ubuntu及衍生版:包的相关处理更新软件sudoapt-getupdate sudoapt-getupgrade复制查询whereis属于哪个包sudodpkg-Swhereis或 sudodpkg-query-S/usr/bin/whereis复制下载源码sudoapt-getsourcexxx复制源码包中通常包含3个文件,分别以dsc,orig.tar.gz和diff.gz为后缀名。参考链接查询软件包

  • linux ssh 登录管理

    @(Linux命令脚本)功能类似xshell这类终端管理工具,将需要登录的机器ip信息统一记录在一个host文件中,登录直接选择对应序号就好,减少重复输入ip,账号。登录脚本jump.sh#!/bin/bash #byorientlu if[!-f"host.list"];then echo"Cant'tfindhost.list" echo"host.list:IPnamepasswdport" exit-1 fi clear echo"=====================================================" echo"Hostlist:" awk'{printf("(%d)IP:%s\t%s\t%d\n",NR,$1,$2,$4)}'./host.list echo"" echo-n"Number:" read-rnumber eval$(awk-vnu

  • 腾讯云访问管理身份提供商概述

    如果您的企业或组织已有自己的账号体系,同时希望管理组织内成员使用腾讯云资源,腾讯云支持您使用身份提供商(IdentityProvider,IdP)功能而不必在您的腾讯云账户中为每一位组织成员创建CAM子用户。使用身份提供商(IdP),您可以管理腾讯云外部用户身份,可以向这些外部用户身份授予权限使用您的腾讯云资源。 您不必自定义登录代码或进行登录验证,身份提供商(IdP)提供了身份验证,外部身份用户通过已知的身份提供商(IdP)身份验证后,将使用角色进行腾讯云登录。您可以向身份提供商角色授予使用您的腾讯云资源权限,外部身份用户将在角色的有限权限范围内进行资源访问。因外部身份用户登录腾讯云所用的是角色,而角色使用的是临时密钥,您可避免因长期使用密钥(例如云API密钥),导致难以轮换密钥以及被截取后泄露导致的安全问题。 使用场景如果您的企业或组织已建立自己的账号体系及用户,并且这些用户需要访问腾讯云资源,您可以使用腾讯云访问管理(CAM)的身份提供商(IdP)功能,不必在腾讯云账户中为这些用户创建CAM子用户。使用身份提供商(IdP)功能,您可以管理腾讯云外部用户,并使用角色功能为身份提供商

  • 外星密码

    外星密码 COGS1239 AYYZOJ1916 字符串模拟有栈的思想 不过我写完没有想到栈 经过尝试之后应该是由内向外逐层扩展(不动脑子!) 1var 2s,plus,plu:ansistring; 3i,sl,sr:longint; 4procedureget(varx,y,num:longint); 5vari,k:longint; 6nu:ansistring; 7begin 8fori:=1tolength(s)do 9ifs[i]='['thenx:=i; 10fori:=1tolength(s)do 11if(s[i]=']')and(i>x)thenbeginy:=i;break;end; 12nu:=''; 13i:=x+1; 14k:=ord(s[i])-ord('0'); 15whilekin[0..9]do 16begin 17nu:=nu+s[i]; 18inc(i); 19k:=ord(s[i])-ord('0'); 20end; 21val(nu,num); 22end; 23proceduredoit(vars:ansistring); 24va

  • 性能测试 - JMeter插件管理

    性能测试-JMeter插件管理   before win10+JMeter5.2.1 jmeter支持插件扩展,一般我们选择使用jmeter提供的插件管理器来下载插件。插件管理器使用之前要先安装。 插件管理器安装 首先要去官网下载插件管理器,下载和安装官网也说的明明白了: 将jmeter-plugins-manager-1.4.jar(此时我的版本是1.4)包放在jmeter安装目录下的lib/ext中即可: 重启jmeter,会发现快捷按钮栏多了一个"狗爪子": 使用 当你点击"JMeterPluginsManager"按钮,会出现3个选项: InstallPlugins:当前已安装的插件。 AvailablePlugins:当前可安装的插件。 Upgrades:当前可更新的插件。 我们来演示一下插件下载: 如上图,在AvailablePlugins选项中,搜索指定的插件并且在下面结果栏中勾选,然后点击右下角的ApplyChangesandRestartJMeter按钮即可,jmeter就会自动下载插件并且重启,我们可以在Insta

  • CosCos2D-android 代码总结

    CosCos2D-android学习总结 资料:   Android游戏开发视频教程   Cocos-android-1代码包下载  直接上代码: MainActivity中Cocos常规写法: //cocos2d会把图形绘制在view上 privateCCGLSurfaceViewview=null; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); view=newCCGLSurfaceView(this); //得到CCDirector一个应用程序只有一个 CCDirectordirector=CCDirector.sharedDirector(); //设置应用程序相关的属性设置游戏程序中所使用的View对象 director.attachInView(view); //设置游戏是否显示FPS值,看应用程序是否流畅 director.setDisplayFPS(true); //设置游戏FPS值,渲染一帧的时间 direct

  • MySQL安装详细步骤(附迅雷下载链接)

    环境:windows10、64bit、mysql8.0.19 迅雷下载链接8.0版本 https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-community-8.0.19.0.msi 若是已使用迅雷下载或已有安装包 直接跳转-->二、安装mysql 一、下载mysql 打开mysql官网https://www.mysql.com/downloads/ 执行图1.图2.图3.图4 图1 图2 图3 图4 由于网页下载实在太慢,进行如下图5操作 图5 到这一步就下载好了,到下载目录执行图6操作 图6 二、安装mysql 双击打开后稍等一会进入图7界面 因为本人仅学习使用,只需要安装mysqlserver,所以选择最后自定义安装 之后为了看图方便就不再每个图都说明了,图中标识的很清楚,顺序都是对的,顺次执行就可以 图7 注意 下图这样安装只选择了mysqlserver,但学习使用完全够了,根据个人情况选择 下图操作进行完会离开安装界面,进入产品配置界面 如果不是特定需求建议选择第一个

  • 推荐ietester工具 [ 光影人像 东海陈光剑 的博客 ]

    随着ie8.0正式发布,意味着我们的浏览器兼容性测试,又要多测一个浏览器了。 但是一个电脑只能装一个ie,所以推荐下用ietester工具。  IETester是来自DebugBar的一款整合了IE5.5至IE8的免费浏览器,支持在独立的标签页中开启不同版本的IE。实现界面颜色的更换、网页打印、Internet属性设置等较简单的应用功能,可以说兼具了浏览器及工具软件的特点 1.可在vista或者xp系统中,必须要装ie7.0才能使用 2.不能在ie6.0的xp系统安装,因为配置不一样 3.不能在没有sp2的xp系统中安装,因为ie8.0不能在没有sp2的xp系统中运行。   下载地址:http://www.my-debugbar.com/wiki/IETester/HomePage   这款软件相对来说体积较庞大,安装程序大小为24.3MB,而安装后所占的硬盘空间达到111MB左右。记得要装v0.3.2最新版本哦,因为其中正式版的ie8.0。   还有一款,XenocodeBrowserSandbox,改变了基于Windows的浏览器兼容测试工具的游

  • 18-3 函数一等公民 /高阶函数 / js 闭包的深刻理解(实例分解:如何实现无限累加的一个函数)

    函数的地位:一等公民 在编程语言中,一等公民可以作为函数参数,可以作为函数返回值,也可以赋值给变量。 例如,字符串在几乎所有编程语言中都是一等公民,字符串可以做为函数参数,字符串可以作为函数返回值,字符串也可以赋值给变量。 对于JavaScript来说,函数可以赋值给变量,也可以作为函数参数,还可以作为函数返回值,因此JavaScript中函数是一等公民。 在JavaScript语言中,函数可以保存到变量、作为参数传递、作为返回值返回。在JavaScript里函数可以出入任何场所,这一点在很多其他语言(比如Java、C#等)中是不太容易做到,正是因为如此,使用JavaScript可以非常轻松的实现高阶函数。 什么是高阶函数?   -参数是函数,或者返回值是函数即为高阶函数 高阶函数是对其他函数进行操作的函数,它接收函数作为参数或将函数作为返回值输出。 看图:此时fn和func就是高阶函数,函数也是一种数据类型,同样可以作为参数,传递给另外一个参数使用。最经典的就是作为回调函数。 使用高阶函数的意义 高阶函数是用来抽象通用的问题 抽象可以帮我们屏蔽细节,只需要关注与我们的目标

  • 转载《卡尔曼滤波的原理说明 》

    致敬原作者: http://zhangzhenyuan163.blog.163.com/blog/static/8581938920147148430426/   卡尔曼滤波的原理说明   在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!   卡尔曼全名RudolfEmilKalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《ANewApproachtoLinearFilteringandPredictionProblems》(线性滤波与预测问题的新方法)。如果对这编论文有兴趣,可以到这里的地址下载:http://www.cs.unc.edu/~welch/kalman/media/pdf/Kalman1960.pdf   简单来说,卡尔曼滤波器是一

  • jsp中文乱码

    1、jsp页面中文乱码问题:   在jsp页面头部添加转码: <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%> 复制 2、后台string传到前台乱码(???)问题:   SpringMVC项目:在RequestMapping注解中添加:produces="text/html;charset=UTF-8" @RequestMapping(value="/index",produces="text/html;charset=UTF-8") 复制   produces后续会细写,

  • 九的余数 http://acm.nyist.net/JudgeOnline/problem.php?pid=105

      九的余数 时间限制:3000ms | 内存限制:65535KB 难度:3   描述 现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数。   输入第一行有一个整数m(1<=m<=8),表示有m组测试数据;随后m行每行有一个自然数n。输出输出n整除九之后的余数,每次输出占一行。样例输入 3 4 5 465456541复制 样例输出 4 5 4复制 来源[苗栋栋]原创上传者苗栋栋 #include<stdio.h> #include<string.h> intmain() { intn; scanf("%d",&n); while(n--) { intlen,i,count=0; chara[1000010]; memset(a,0,sizeof(a)); scanf("%s",a); len=strlen(a); for(i=0;i<len;i++) count+=(a[i]-48); printf(

  • C# 读取json 文件 解析处理并另存

    1、代码 //Seehttps://aka.ms/new-console-templateformoreinformation usingNewtonsoft.Json; usingNewtonsoft.Json.Linq; usingSystem; namespaceApplication { classProgram { staticvoidMain(string[]args) { stringjsonPath="E:/Code/tool/monitor.json"; stringjsonStr=GetJsonStr(jsonPath); varmonitor=GetJson(jsonStr); stringjsonPathWS="E:/Code/tool/ws.json"; varwsStr=GetJsonStr(jsonPathWS,false); varws=GetJson(wsStr); varpoints=GetListPoint(ws); varjArray=(JArray)monitor; SetJsonValue(jArray,points); Consol

相关推荐

推荐阅读