通信

ZigBee无线应变采集装置

≡放荡痞女 提交于 2020-03-04 05:53:13
1 水工结构健康监测的应变采集方式 随着大型水利水电工程的陆续建设,对水工建筑物及相关土木工程结构的健康监测也变得越来越重要。特别是近些年来,一些重大事故的警示以及材料技术、计算机技术、通信技术、智能控制技术的发展,都促进了结构健康监测技术的发展和应用。 结构健康监测分为整体监测和局部监测。而无论局部监测还是整体监测,都是以传感器准确采集传输数据为前提和基础,各种结构健康监测的数据采集主要采用的是传统“有线”传感器来实现,尽管这种采集方式具有采集信号准确、抗干扰性好、产品系列化等特点,但是利用“有线”传感器组成的监测网络布线量大、安装和维护费用高、可靠性差,甚至在一些结构中无法实现布线。随着传感技术、 ZigBee 数传模块通信技术和 MEMS 技术的发展,无线传感技术得到了发展并能够克服有线传感网络的布线量大、费用高等不足,在实际应用中 ZigBee 无线模块得到了很大的发展。 应变是反映结构局部状态的重要参数,在结构局部监测中非常重要。现存的应变采集装置要么体积较大,不能布置在传感元件附近,要么没有配置无线收发接口,需要通过有线连接与控制中心通信。因此一款体积小、功耗低的无线 ZigBee 数据采集装置对于应变参数的采集是十分必要的。本文介绍一款基于 ZigBee无线模块 的电阻片式应变采集装置。 2 应变测量原理 电阻应变片在外力作用下产生机械变形,从而引起电阻变化

进程间通信之------- 命名管道

混江龙づ霸主 提交于 2020-03-04 05:48:07
我们知道管道包括三种: 1):普通管道PIPE,通常有很多限制,一是半双工,只能单向传输,二是只能在父子进程间使用 2):流管道:这种能双向传输,但是也是只能父子进程间使用。 3):命名管道,去除了以上的第二种限制,可以在许多不相关的进程间进行通讯。也是半双工的通信方式。 但是通常我们把管道分为匿名管道和命名管道。但对于匿名管道的话,只能在本机上进程之间通信,而且只能实现本地的父子进程之间的通信,局限性太大了。而这里介绍的命名管道,就和匿名管道有些不同了,在功能上也就显得强大许多,至少其可以实现跨网络之间的进程的通信,同时其客户端既可以接收数据也可以发送数据,服务器端也是可以接收数据,又可以发送数据。 匿名管道的概述    对于匿名管道而言,命名管道使用了windows安全机制,因而命名管道的服务器端可以控制哪些客户有权与其建立连接。哪些客户端是不能够与这个命名管道建立连接的。命名管道的通信是以连接的方式进行的,服务器创建一个命名管道对象,然后在此对象上等待连接请求,一旦客户连接过来,则两者都可以通过命名管道读或者写数据。   命名管道提供了两种通信模式:字节模式和消息模式。在字节模式下,数据以一个连续的字节流的形式在客户机和服务器之间流动。而在消息模式下,客户机和服务器则通过一系列不连续的数据单位,进行数据的收发,每次在管道上发出一个消息后,它必须作为一个完整的消息读入。

进程间通信 - 命名管道实现

南笙酒味 提交于 2020-03-04 05:47:46
引子 好,到这里呢,就需要介绍实现进程间通信的第四种方式了, 也就是通过命名管道来实现,前面介绍的那三种方式呢,都是有缺陷或者说局限性太强, 而这里介绍的命名管道相对来说,在这方面就做得好很多了, 比如,剪贴板的话只能实现本机上进程之间的通信, 而邮槽的话虽然是可以实现跨网络之间的进程的通信, 但麻烦的是邮槽的服务端只能接收数据,邮槽的客户端只能发送数据,太悲剧了, 而对于匿名管道的话,其也只能实现本机上进程之间的通信, 你要是能够实现本机进程间的通信也就算了, 关键是它还只用来实现本地的父子进程之间的通信,也太局限了吧? 而这里介绍的这个命名管道的话,就和他们有些不同了,在功能上也就显得强大很多了, 至少其可以实现跨网络之间的进程的通信,同时其客户端既可以接收数据也可以发送数据, 服务端也是既可以接收数据,又可以发送数据的。 命名管道概述 命名管道是通过网络来完成进程之间的通信的,命名管道依赖于底层网络接口, 其中包括有 DNS 服务,TCP/IP 协议等等机制,但是其屏蔽了底层的网络协议细节, 对于匿名管道而言,其只能实现在父进程和子进程之间进行通信,而对于命名管道而言, 其不仅可以在本地机器上实现两个进程之间的通信,还可以跨越网络实现两个进程之间的通信。 命名管道使用了 Windows 安全机制,因而命名管道的服务端可以控制哪些客户有权与其建立连接,

c# 进程间通信

只谈情不闲聊 提交于 2020-03-04 05:47:34
一、 进程间通讯的方式 进程间通讯的方式有很多,常用的有共享内存(内存映射文件、共享内存DLL、剪切板等)、命名管道和匿名管道、发送消息等几种方法来直接完成,另外还可以通过 socket 口、配置文件和注册表 等来间接实现进程 间数据 通讯任务。以上这几种方法各有优缺点,具体到在进程间进行大数据量数据的快速交换问题上,则可以排除使用配置文件和注册表的方法;另外,由于管道和 socket 套接字的使用需要有网卡的支持,因此也可以不予考虑。这样,可供选择的通讯方式只剩下共享内存和发送消息两种。 二、 发送消息实现 进程间通讯前准备 下面的例子用到一个windows api 32函数 [DllImport("User32.dll", EntryPoint = "SendMessage")] private static extern int SendMessage(IntPtr wnd,int msg,IntPtr wP,IntPtr lP); 要有此函数,需要添加using System.Runtime.InteropServices;命名空间 此方法各个参数表示的意义 wnd:接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。 msg

GPS(北斗)拓展无线同步模块GSYN1000系列在电力、大坝、隧道、核电、密闭厂房的应用方案

痴心易碎 提交于 2020-03-04 05:30:28
转自 http://www.cnblogs.com/heartjoin01/p/8820718.html GPS(北斗)拓展无线同步模块GSYN1000系列在电力、大坝、隧道、核电、密闭厂房的应用方案 摘要:   GPS和北斗的应用已无处不在,但前提是得接收到卫星信号。GSYN1000系列无线同步模块把UTC时间和秒脉冲拓展进接收不到卫星信号的大坝厂房、隧道工程、核电等密闭厂房内,精度达到百纳秒(100nS)级,为移动式巡检监测系统的时间同步和秒脉冲同步提供了新的实现方案。 关键词:   GPS,北斗,GSYN1000,无线同步模块,时间同步,1PPS,秒脉冲同步。 前言:   GPS和北斗的应用已无处不在,但前提是要接收到卫星信号。在接收不到信号的大坝厂房、隧道工程、核电等密闭厂房内,只能依靠时间同步服务器来同步。 在监测领域,出于方便和安全考虑,有些系统不得不采用无线通信的方式,特别是对于移动式巡检监测系统, 只能通过无线方式实现时间同步和秒脉冲同步。 在这样一个无线通信的应用系统,如何使多个设备达到时间同步和秒脉冲同步,进行同步采样,以期提高测量精度,是一个不小的难题。 技术现状:   当前,在接收不到信号的大坝厂房、隧道工程、核电等密闭厂房内,只能依靠时间同步服务器来同步。如果要实现无线应用,一般的时间同步无线传感网络,其同步精度一般在10uS以上

计网知识梳理——概述

时光毁灭记忆、已成空白 提交于 2020-03-04 03:59:12
概述 网络的网络 网络:结点(计算机、集线器、交换机、路由等)+链路 因特网:不同的网络之间连接 ISP ISP(Internet Service Provider),因特网服务提供商(联通电信移动)。 ISP从管理机构申请IP地址,用户付费使用IP地址接入互联网 ISP层次:主干ISP,地区ISP,本地ISP。 IXP(Internet xChange Point):允许两个网络直接相连转发分组 主机之间通信方式 C/S:客户-服务器 P2P:对等连接 电路交换与分组交换 电路交换: 用于电话连接,建立连接→通话→释放连接,过程中始终占用资源,效率低,不到10%。 分组交换 采用存储转发技术,将要发送的整块数据(报文)分成多个分组,不占用传输线路。 时延 总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延 排队时延 分组在路由器的输入队列和输出队列中排队等待的时间,取决于网络当前的通信量。 处理时延 主机或路由器收到分组时进行处理所需要的时间,例如分析首部、从分组中提取数据、进行差错检验或查找适当的路由等。 传输时延 主机或路由器传输数据帧所需要的时间。 传播时延 电磁波在信道中传播所需要花费的时间,电磁波传播的速度接近光速。 计算机网络体系结构 五层协议 应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。

CCF 201709-4 通信网络(100分)

旧时模样 提交于 2020-03-04 03:37:12
问题描述   某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只能单向传递信息,即一条从部门a到部门b的通路只能由a向b传递信息。信息可以通过中转的方式进行传递,即如果a能将信息传递到b,b又能将信息传递到c,则a能将信息传递到c。一条信息可能通过多次中转最终到达目的地。   由于保密工作做得很好,并不是所有部门之间都互相知道彼此的存在。只有当两个部门之间可以直接或间接传递信息时,他们才彼此知道对方的存在。部门之间不会把自己知道哪些部门告诉其他部门。   上图中给了一个4个部门的例子,图中的单向边表示通路。部门1可以将消息发送给所有部门,部门4可以接收所有部门的消息,所以部门1和部门4知道所有其他部门的存在。部门2和部门3之间没有任何方式可以发送消息,所以部门2和部门3互相不知道彼此的存在。   现在请问,有多少个部门知道所有N个部门的存在。或者说,有多少个部门所知道的部门数量(包括自己)正好是N。 输入格式   输入的第一行包含两个整数N, M,分别表示部门的数量和单向通路的数量。所有部门从1到N标号。   接下来M行,每行两个整数a, b,表示部门a到部门b有一条单向通路。 输出格式   输出一行,包含一个整数,表示答案。 样例输入 4 4 1 2 1 3 2 4 3 4 样例输出 2 样例说明   部门1和部门4知道所有其他部门的存在。

多线程,线程通信,线程池和lambda表达式

随声附和 提交于 2020-03-04 03:29:05
多线程,线程通信,线程池和lambda表达式 1.多线程waiting(无限次等待) 此线程被执行wait时,需要等另一个线程唤醒 public void wait(); 所在线程进入等待并开启锁对象 public void notify(); 唤醒和锁有关的任意一个等待的线程,并开启锁 public void notifyAll(); 唤醒所有与锁有关的等待的线程并开启锁, 2.线程通信 多个完全无关的线程共享资源为同一个事物,需要解决共享资源问题,解决的办法是:创建多个线程对象时,使用同一个商品类对象,作为构造方法参数进行初始化操作 3. 线程池 继承Thread和遵从Runnable接口,都要重写Run方法,每一个线程对象只能执行一次,之后就被销毁。 利用Runnable接口来提供执行目标,而且借助于Thread执行线程。 线程池 ==> 可以容纳多个线程的容器,程序可以从线程池获取线程来完成目标代码,同时也可以将线程归还给线程池。省去了创建线程和销毁线程这样非常繁琐的操作。 使用方法 public static ExecutorService newFixedThreadPool(int nThreads); 得到一个线程对象,初始化参数是要求的当前线程池中的线程数 public Future submit(Runnable target); 从线程池中获取一个线程对象

高并发、多线程、分布式都不懂,你拿什么跳槽阿里、腾讯、京东?

本小妞迷上赌 提交于 2020-03-04 02:04:44
Java多线程与高并发实战实践 先来看看高并发多线程一些大厂并发面试题,看你能答出几道! (1)synchronized的CPU原语级别是如何实现的? (2) 无锁、偏向锁、轻量级锁、重量级锁 有什么差别,升级过程如何? (3) 线程 间通信, 同机器进程 间通信, 跨机器进程 间通信,各有什么方法? (4)下列三种业务,应该如何使用线程池: 高并发、任务执行时间短 的业务 并发不高、任务执行时间长 的业务 并发高、业务执行时间长 的业务 (5)秒杀系统,如何能够撑住100W级别TPS(淘宝最高54万TPS)? 如果平时只有CRUD的经验,不了解多线程与高并发,面对这样面试题,大概率一头雾水。 Java高并发常问面试题 synchronized关键字的字节码原语; volatile关键字的字节码原语; synchronized与volatile的硬件级实现; 无锁、偏向锁、轻量级锁、重量级锁的升级过程; 内存屏障的基本概念; JVM规范如何要求内存屏障; 硬件层级内存屏障如何帮助java实现高并发; 面试第3题(线程间通讯)的8种解法; Java多线程一线互联网常问面试题 线程池的学与思; 使用线程池的好与不好; 为什么阿里开发手册建议自定义线程池; 自定义线程池的最佳实践; 常见线程池类型与应用场景: 1)CachedPool 2)FixedThreadPool 3

Day 22多线程、线程通信、线程池和Lambda表达式

ⅰ亾dé卋堺 提交于 2020-03-04 01:18:39
Day 22 Author:ScorpioDong 1. 多线程 1.1 WAITING(无限等待) 当某一线程被执行wait()方法,需要等待其他线程进行唤醒操作。 public void wait(); 当前线程进入无线等待状态 开启锁对象 public void notify(); 唤醒一个当前锁对象有关的无线等待线程,随机选择 开启锁对象 public void notifyAll(); 唤醒所有和当前锁对象有关的线程 开启锁对象 进入锁对象抢占过程,有可能进入锁阻塞状态 2. 线程通信 现在存在两个完全无关的线程,生产者和消费者,但是商品会作为他们两者之间的共享资源。 生产者和消费者中都有一个成员变量 商品类型 【解决方案】 创建生产者或者消费者线程对象时,使用同一个商品类对象,作为构造方法参数进行初始化操作 3. 线程池 不管是继承Thread还是遵从Runnable接口,都需要重写Run方法,而且每一个线程对象有且只能执行一次,之后就会被销毁。 利用Runnable接口来提供执行目标,而且借助于Thread执行线程。 线程池 ==> 可以容纳多个线程的容器 程序可以从线程池获取线程来完成目标代码 同时也可以将线程归还给线程池。 省去了创建线程和销毁线程这样非常繁琐的操作。 线程池使用: public static ExecutorService