通信接口

常用通信接口电气特征(三):UART

匿名 (未验证) 提交于 2019-12-03 00:05:01
UART,通用异步收发传输器(Universal Asynchronous Receiver/Transmitter).一般指TTL/CMOS电平的串口(广义也包括RS232-C电平的,甚至RS422, RS485)。 引脚定义:Tx(发送)、Rx(接收)。 传输速率:由设置的波特率决定,常用300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200。波特率与比特率的关系也可换算成:比特率=波特率 单个调制状态对应的二进制位数。如数据传送速率为240b/s,而每个字符格式包含10位(1个起始位,1个停止位,8个有效数据位),这时的波特率为240 baud (波特),比特率(有效数据位的传送速率)为240 10=2400 bps(比特每秒)。 传输类型:全双工 接口类型:TTL或CMOS电平,广义也包括RS232.一般推挽输出,内部上拉输入。 电平范围:由TTL/CMOS电平决定,高电平常用有1V8/2.5/3.3/5V,电平0V。若是RS232则高电平-15V ~ -3V,低电平3V~15V。 电平变化与逻辑关系:TTL和CMOS都是高电平为1,低电平为0。空闲时时高电平。 数据格式; UART作为异步串口通信协议的一种,工作原理是将数据的字节一位接一位地传输,如下: 空闲位:UART协议规定

I2C接口与SPI和UART接口的区别

匿名 (未验证) 提交于 2019-12-02 23:37:01
一、SPI I2C UART通信速率比较: SPI > I2C > UART 1、同步通信>异步通信; 2、同步通信时必须有一根时钟线连接传输的两端; 3、都是串行通信方式,并行通信用于内部存储间的通信,如flash; 4、适合传输的距离和通信速率成反比关系; 3-SPI:两条合一的数据线、1时钟线、1CS(设备片选线) SPI:2数据线、1时钟线、1CS(设备片选线)/串行 同步 通信全双工 I2C:1数据线、1时钟线/串行 同步 通信半双工 传输距离比UART短 UART:2数据线、 1地线/串行 异步 通信全双工 传输距离比I2C长些 (I2C接口是“器件间”接口,是在一块板子之内传输数据) (UART是 “设备间”接口,更多的是用于两台设备之间传输数据) 二、串行和并行、同步和异步的区别: 串行通信:利用一条数据线将数据一位一位的顺序传送,特点是通信线路简单,成本低,适合于长距离传送 并行通信:利用多条数据线将数据的各位同时传送,特点是传输速度快,适合于短距离传送 异步:在一个字符的传输时间范围内保持同步即可 同步:在数据传输过程中,需要一根时钟线同步,IIC总线,SPI总线 三、I2C接口与串行接口的区别: I2C 两线式串行总线 UART 通用串行异步收发器串口,UART是串行异步通信接口,它包括RS232、RS499、RS423、RS422和RS485等接口规范和

TensorFlow中的通信机制――Rendezvous(二)gRPC传输

匿名 (未验证) 提交于 2019-12-02 23:06:17
背景 [作者: DeepLearningStack ,阿里巴巴算法工程师,开源TensorFlow Contributor] 本篇是TensorFlow通信机制系列的第二篇文章,主要梳理使用gRPC网络传输部分模块的结构和源码。如果读者对TensorFlow中Rendezvous部分的基本结构和原理还不是非常了解,那么建议先从 这篇文章 开始阅读。TensorFlow在最初被开源时还只是个单机的异构训练框架,在迭代到0.8版本开始正式支持多机分布式训练。与其他分布式训练框架不同,Google选用了开源项目gRPC作为TensorFlow的跨机通信协议作为支持。gRPC的编程和使用其实是相对复杂的,TensorFlow为了能让gRPC的调用更加平滑,在调用链封装和抽象上面做了较多工作,甚至有些工作例如创建和管理gRPC channel涉及到了GrpcSession模块。从个人角度来看,利用gRPC进行Tensor通信的过程已经足够丰富,所以我们只针对gRPC传输Tensor过程进行梳理,至于涉及到gRPC管理方面的内容会在另一篇介绍分布式Session创建和管理的文章中集中梳理。 跨进程通信过程 根据之前写博客的经验,直接介绍类图结构和源码部分可能会让人懵圈,还是先从逻辑上把通信过程梳理清楚更能做到深入浅出。其实对于不是非常了解分布式系统或大规模并发系统的读者而言

JSON方式封装通信接口

匿名 (未验证) 提交于 2019-12-02 22:11:45
1.封装通信接口数据的方法 案例:生成json 注意:json_encode() 只能接收utf-8数据 测试: <?php $arr = array( 'id'=>1, 'name'=>'zhangsan' ); echo json_encode($arr); 返回:{"id":1,"name":"zhangsan"} 继续: <?php $arr = array( 'id'=>1, 'name'=>'zhangsan' ); $data = "输出json数据"; $newdata = iconv('UTF-8','GBK',$data); echo json_encode($newdata); //返回空 <?php class Response{ /** * [json description] * @param 按照json数控输出通信数据 * @param integer $code 状态吗 * @param string $message 提示信息 * @param array $data 数据 * @return string * */ public static function json($code,$message='',$data=array()){ if(!is_numeric($code)){ return ''; } $result = array(

Dubbo 在 K8s 下的思考

本秂侑毒 提交于 2019-12-02 19:10:27
作者 | 曹胜利 Apache Dubbo PMC 导读 :Dubbo 作为高性能 Java RPC 框架的刻板印象早已深入人心,在 Cloud Native 的架构选型上,Spring Cloud 或许才是业界的优先选择。实际上,Dubbo 已经悄然地衍进为 Cloud Native 基础设施,不仅承袭过去 RPC 时代的荣耀,而且也完善了现有基础设施的缺失。自从容器和 K8s 登上舞台之后,给原有的 RPC 领域带来了很大的挑战,本文主要讲述 RPC 领域遇到的问题,以及 RPC 怎么去拥抱 K8s 的一些思考。 K8s 介绍 Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用, Kubernetes 的目标是让部署容器化的应用简单并且高效, Kubernetes 提供了应用部署、规划、更新、维护的一种机制。Kubernetes 简称 K8s。 在 Kubernetes 中,最小的管理元素不是一个个独立的容器,而是 Pod 。Pod 的生命周期需要注意以下几点: 容器和应用可能随时被杀死; Pod Ip 和主机名可能变化 (除非使用 StatefulSet 进行定制); 写到本地的磁盘的文件可能消失,如果想不失效,需要用存储卷。 应用 & 容器 & Pod 的关系 应用部署在容器中,一般情况下一个应用只部署在一个容器中; 一个 Pod

Dubbo 在 K8s 下的思考

☆樱花仙子☆ 提交于 2019-12-02 17:03:43
序言 Dubbo 在 2011 开源之后,一直是国内最受欢迎的 RPC 框架,之后 Spring Boot 和 Spring Cloud 的面世,助推了微服务的火热程度。计算机的世界变化很快,自从容器和 K8s 登上舞台之后,给原有的 RPC 领域带来了很大的挑战。这个文章主要讲述 RPC 领域遇到的问题,以及 RPC怎么去拥抱 K8s 怀抱的一些思考。 K8s介绍 Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用, Kubernetes 的目标是让部署容器化的应用简单并且高效, Kubernetes 提供了应用部署,规划,更新,维护的一种机制。Kubernetes 简称 K8s。 在 Kubernetes 中,最小的管理元素不是一个个独立的容器,而是 Pod 。pod 的生命周期需要注意以下几点: 容器和应用可能随时被杀死 Pod Ip 和主机名可能变化 (除非使用 StatefulSet 进行定制) 写到本地的磁盘的文件可能消失,如果想不失效,需要用存储卷 应用,容器,Pod 的关系 应用部署在容器中,一般情况下一个应用只部署在一个容器中 一个 Pod 下可以包含一个或多个容器,一般情况下一个 Pod 只建议部署一个容器。下列场景除外: side car 一个容器的运行以来与本地另外一个容器。如一个容器下应用负责下载数据

上位机配置管理一体化软件说明【持续更新】

风流意气都作罢 提交于 2019-12-01 23:33:17
  为了更好地进行上位机开发,特意开发了一款上位机配置管理一体化软件,该软件集成配置、通信及上层接口为一体,统一进行多线程通信及数据解析,可以快速进行上位机开发,已实际运用在多个项目,并稳定运行超过1年时间。   功能如下:   【1】上位机配置      【2】上位机通信    【3】上层接口      软件截图: 来源: https://www.cnblogs.com/xiketangedu/p/11721322.html

服务接口,选择rpc还是http?

吃可爱长大的小学妹 提交于 2019-12-01 01:41:04
从通信内容/功能上看 http应用于web环境,rpc应用于分布式调度 从功能上看没有太大区别,很多情况下rpc与消息中间件结合通信实现分布式调度 从用法上看 两者都是c/s结构,无太大区别 从实现上看 类型 底层协议 从性能上看 1、听说rpc是长链接,http是三次握手。 长链接虽然,可以减少tcp开销,相对的它会导入新的缺点,是否会对连接数数量有限制呢? 2、假如rpc的性能比http高,无非就是socket多连接了三次。如果http结合非阻塞io服务器(例如tornado),这三次连接开销真没啥消耗。 当然网络也会有一点消耗. 非阻塞io服务器可以将rpc与http的性能差距拉平 从链接开销上,比较性能问题,本就是错误,两者是在解决不同问题,所有没有必要在这个问题上纠结。请继续看下面 从概念上看 rpc远程调用 http超文本传输协议 该如何选择呢? 1、思考这个问题,应该用最简单的方式,相信协议设计者,会选择最好方式来解决它面临的问题(毕竟协议代表着公认),我们只用关注它解决什么问题。 rpc解决什么问题呢?远程调用。“调用”属于程序内部之间。调用总不可能只传简单参数,会涉及到对象序列化, 这个对象在开发是代码总不会用两套吧,server与client很可能是在一起的属于一个组件. 2、连接数不该是”调用”考虑的事。在创建一个全局连接后,不会再频繁创建连接.

【Java】分布式RPC通信框架Apache Thrift 使用总结

↘锁芯ラ 提交于 2019-11-30 18:50:34
简介   Apache Thrift是Facebook开源的跨语言的RPC通信框架,目前已经捐献给Apache基金会管理,由于其跨语言特性和出色的性能,在很多互联网公司得到应用,有能力的公司甚至会基于thrift研发一套分布式服务框架,增加诸如服务注册、服务发现等功能。   RPC即Remote Procedure Call,翻译为远程过程调用。任何RPC协议的实现终极目标都是让使用者在调用远程方法的时候就像是调用本地方法一样简单,从而提高使用远程服务的效率。   现代互联网架构多数基于SOA思想而搭建,即面向服务化的架构。服务提供方称为Provider,服务的使用方称为Consumer,有时也把服务提供方称为Server端,使用方称为Client端,即典型的CS模型。这里的远程调用,主要指跨进程的调用,Provider和Consumer可能是同一机器的不同进程,也可能在不同的机器,通过网络相互通信,大部分情况下两者会部署在不同的物理机器上,这种情况下由于网络通信的开销就会对RPC框架的性能要求极高。 下面分别从服务端和客户端的视角来介绍Thrift在RPC中的应用。 服务端(Server) 服务端需要发布一个服务给别人使用,首先要约定好服务的接口,包括以下几个部分: 服务的名称 服务使用时的参数 返回结果 Thrift自己规定了一套接口定义语言(IDL)来描述服务,用后缀为

那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程

落爺英雄遲暮 提交于 2019-11-30 10:37:39
本文转载自: 熬夜与烟 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程 https://www.cnblogs.com/aoyeyuyan/p/5495219.html 那些年,空气中仿佛还能闻到汉唐盛世的余韵,因此你决不允许自己的脸上有油光,时刻保持活力。然而,你一定曾为这些“高深术语”感到过困扰——依赖倒置•控制反转•依赖注入•面向接口编程。也许时至今日,你仍对它们一知半解。不过就在今天,这一切都将彻底改变!我将带领你以一种全新的高清视角进入奇妙的编程世界,领略涵泳在这些“高深术语”中的活泼泼的地气,以及翩跹于青萍之末的云水禅心。 ·内聚 内聚,通俗的来讲,就是自己的东西自己保管,自己的事情自己做。 经典理论告诉我们,程序的两大要素:一个是数据( data),一个是操作( opration)。而 PASCAL之父 Nicklaus Wirth则进一步提出了“程序 = 数据结构 + 算法”的著名公式。虽然提法上有所差异,但是其根本内涵却是一致的,微妙的差别在于,“数据 + 操作”是微观的视域,“数据结构 + 算法”则是中观的视域。而在宏观的视域下,我认为“程序 = 对象 + 消息”。对象是什么?对象就是保管好自己的东西,做好自己的事情的程序模块——这就是内聚!传统的面向过程编程方法由于割裂了数据结构和算法,使得软件的内聚性普遍低迷,曾一度引发了软件危机。试想