精华内容
下载资源
问答
  • ESP8266成功连上手机热点, 但是不能识别到指定IP地址通信   这种情况下, 我更改了网络调试助手的IP地址, 改成了和ESP8266相同的网关, 这样应该在同一局域网中, 结果成功了. GitHub Gitee SHOUT OUT TO ESP2866...

    主要功能

    1. STM32采集温湿度信息.
    2. 人体红外感应模块, 检测到有人活动, LED3亮.
    3. 手机APP通过WIFI连接, 可查看温湿度信息, 可控制LED1, LED2, 蜂鸣器.
    4. STM32与电脑上位机串口连接, 可查看调试信息.
    5. 手机APP可发送信息给电脑上位机.

    物料清单

    1. 野火STM32F103指南者开发板(自带ESP8266的WIFI模块)
    2. DHT11温湿度传感器
    3. HC-SR501人体红外感应传感器
    4. 网络调试助手(秉火物联)

    功能框图

    功能框图


    代码分析

    (源码及相关文件随后放在文末, 可根据源码结合过程解读理解)

    基本上是以野火的ESP8266模块的源码为基础, 在其上添加了串口调试信息显示, 去掉了手机APP控制LED3的功能, 改为人体红外感应模块检测控制LED3.

    ESP8266与STM32通信过程解读:
    就是手机APP发送"一些命令"给ESP8266
    ESP8266就发给STM32
    sSTM32中断接收"这些命令"放到strEsp8266_Fram_Record结构体里
    接收完毕进入程序 失能中断 看"这些命令"包含了什么
    如果有开灯, 则开灯, 然后把结果放到cStr中
    如果有开蜂鸣器, 则开蜂鸣器, 然后把结果放到cStr中
    如果有接收数据, 则接收数据, 然后把结果放到cStr中
    如果要发回APP, 则把cStr发回给APP
    APP根据结果, 更改(温湿度)信息

    使用手机APP后总结:
    所以可以自定义APP发送数据通过ESP8266到stm32上
    但是不能显示stm32通过ESP8266发回给APP的数据
    因为这涉及到APP的源码


    过程中所遇到的问题

    1. 在用野火的AT指令测试调试的代码时, ESP8266上电串口调试助手出现乱码
        乱码的部分是ESP8266发送给STM32的部分显示乱码, STM32发送给串口调试助手的部分显示正常, 个人认为应该是波特率的问题, 随后将STM32与ESP8266通信的波特率从115200改为74880, 显示正常了.

    2. 上电后显示正常, 但是发送AT指令后, ESP8266回复信息显示乱码
        个人认为还是波特率的问题, 又将波特率从74880改回115200, 虽然上电后显示乱码, 但是AT指令回复显示正常了.

    3. 部分指令回复ERROR
        这个问题可能有2种情况, 第一种情况是可能指令格式不对, 不符合当前的模式. 比如如果你之前设置了多连接模式(CIPMUX=1), 接着发送数据没有带网络连接ID号(AT+CIPSEND=<length>), 这时会返回ERROR; 第二种情况是查询波特率(AT+UART_CUR?)之类的命令返回ERROR, 对于这种情况我暂时没找到原因, 在此先挖一个坑, 有机会以后回来填一下, 当然如果有知道原因的朋友们可以说一下, 万分感谢!

    4. ESP8266成功连上手机热点, 但是不能识别到指定IP地址通信
        这种情况下, 我更改了网络调试助手的IP地址, 改成了和ESP8266相同的网关, 这样应该在同一局域网中, 结果成功了.


    GitHub Gitee


    SHOUT OUT TO
    ESP2866常见问题,问题集锦,总有您想要的!
    ESP8266作为客户端通过路由器连接服务器的简单实现
    WiFi模块调试问题:AT+CIPSTART=“TCP”,“192.168.43.212”,8080 ERROR CLOSED

    展开全文
  • APP运维的时候,不知道什么地方出错,是否APP传的参数有误,要怎么才能监控APP传过来的参数?有两个解决方案:1.配置IIS的 applicationhost.config 文件,如果不知道路径在哪里,vs 运行程序时右键点击右下角的...

    做APP运维的时候,不知道什么地方出错,是否APP传的参数有误,要怎么才能监控到APP传过来的参数?

    有两个解决方案:

    1.配置IIS的 applicationhost.config 文件,如果不知道路径在哪里,vs 运行程序时右键点击右下角的IIS标识


    ,显示所有应用程序,找到对应的程序,点击会显示IDE对应的配置文件,


    在IDE运行的端口,绑定 局域网的 端口


    这样,开发APP的局域网设备就可以访问你IDE开启的程序了,我们可以在代码中做断点,监控追踪参数是否正确。

    2. 第二种方法:我们在自己本地数据库创建一个参数记录表

    create table spy(
    paraName varchar(50),
    value  varchar(50)

    )

    然后在后台中间链路层写个参数插入的方法,在要监控某个方法的参数是否正确时,调用这个方法,在数据查询数据。




    展开全文
  • 视频监控安卓App客户端其开发环境是Android Stdio。该软件实现了门禁系统的实时监控的视频的移动端的查看。该软件的设计较为简洁,采用两个文本输入框用于输入嵌入式Linux端服务器的IP地址,以及数据流推送的端口。...

    概述:

           视频监控安卓App客户端其开发环境是Android Stdio。该软件实现了门禁系统的实时监控的视频的移动端的查看。该软件的设计较为简洁,采用两个文本输入框用于输入嵌入式Linux端服务器的IP地址,以及数据流推送的端口。该基于Webview框架设计的软件,在局域网中可以实时地接收嵌入式Linux端Mjpg-streamer服务器推送的视频数据流 。该客户端软件的执行流程如下图所示。

    安卓客户端软件流程图
    安卓客户端软件流程图

                            

    测试:

           安卓客户端测试需要在IP地址栏输入服务端的IP地址,本次测试中IP为192.168.43.235,端口号栏填入服务的端口号,本次测试中端口号为8080,点击登录,跳转至视频查看窗口。如图6-4所示,在该图的左侧为用户的登录界面,图右侧为实时监控界面,测试效果良好。退出程序使用系统的返回快捷方式即可,关闭程序点击退出按钮。

     

    主要源码:

    文件:MainActivity

    package com.example.administrator.smartdoor;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity{
    
     //   Button button1, button2;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
        }
    
        public void connect(View v)
        {
            Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
    
            //获取编辑框的IP地址
            EditText editText = findViewById(R.id.editText);
            String val = editText.getText().toString();
    
            //获得编辑器的端口号
            EditText editText1 = findViewById(R.id.editText1);
            String val1 = editText1.getText().toString();
    
            //跳转到界面2
            Intent intent = new Intent(MainActivity.this,Main2Activity.class);
            intent.putExtra("val",val);
            intent.putExtra("val1",val1);
            startActivityForResult(intent,0x01);
    
        }
    
        public void quit(View v)
        {
            Toast.makeText(MainActivity.this, "退出成功", Toast.LENGTH_SHORT).show();
            System.exit(0);
        }
    
    }
    

    文件:Main2Activity

    package com.example.administrator.smartdoor;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.content.Intent;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Toast;
    
    public class Main2Activity extends AppCompatActivity {
    
        private WebView myWebView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
            //得到IP和端口号
            Intent intent = getIntent();
            String ip_addr = intent.getStringExtra("val");
            String port = intent.getStringExtra("val1");
            Toast.makeText(Main2Activity.this, ip_addr+" port"+port, Toast.LENGTH_SHORT).show();
    
            Init(ip_addr, port);
            //socket函数,返回一个与服务器连接的对象
            //发送的方法
        }
    
            public void Init(String ip_addr,String port){
    
                myWebView = (WebView) findViewById(R.id.WebView);//获取view
    
                WebSettings WebSet = myWebView.getSettings();    //获取webview设置
                WebSet.setJavaScriptEnabled(true);              //设置JavaScript支持
    
                WebSet.setSupportZoom(true);            // 设置可以支持缩放
    
                WebSet.setBuiltInZoomControls(true);    // 设置出现缩放工具
    
                WebSet.setUseWideViewPort(true);        //扩大比例的缩放
    
                WebSet.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);   //自适应屏幕
                WebSet.setLoadWithOverviewMode(true);
    
                myWebView.loadUrl("http://"+ip_addr+":"+port+"/?action=stream");
    
                //开启socket编程,获取服务端连接的对象
    
                //myWebView.loadUrl("http://www.baidu.com/");
                //设置webview打开的链接
    
                myWebView.setWebViewClient(new WebViewClient(){  //设置不适用第三方浏览器打开网页
                    @Override
                    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                        //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
                        view.loadUrl(url);
                        return true;
                    }
                });
            }
    
        @Override
        public void onBackPressed() {
    
            if (myWebView.canGoBack()) {
                myWebView.goBack();//返回上一页面
            } else {
                System.exit(0);//退出程序
            }
        }
    
    }
    

    文件:activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical"
        tools:context=".MainActivity">
        
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <TextView
                android:text="@string/ip_addr"
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                 />
    
            <EditText
                android:id="@+id/editText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:hint="请输入IP地址"
                android:inputType="textPersonName" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <TextView
                android:text="@string/port"
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                />
    
            <EditText
                android:id="@+id/editText1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:hint="默认端口8080"
                android:inputType="textPersonName" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <Button
                android:onClick="connect"
                android:textSize="@dimen/button_size"
                android:text="@string/connect"
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                />
    
            <Button
                android:onClick="quit"
                android:textSize="@dimen/button_size"
                android:text="@string/quit"
                android:id="@+id/button2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                 />
    
        </LinearLayout>
    
    </LinearLayout>

    文件:activity_main2.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".Main2Activity"
        tools:layout_editor_absoluteY="81dp">
    
        <WebView
            android:id="@+id/WebView"
            android:layout_width="432dp"
            android:layout_height="415dp"
            android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
    
        </WebView>
    
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="175dp"
            android:layout_height="142dp"
            android:layout_marginStart="118dp"
            android:layout_marginTop="11dp"
            android:layout_marginEnd="118dp"
            android:layout_marginBottom="34dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/WebView"
            app:layout_constraintVertical_bias="0.0"
            app:srcCompat="@drawable/ic_android_logo" />
    
    </android.support.constraint.ConstraintLayout>

    PS:详细的源码上传至Github,在此贴上传送门:https://github.com/tancolin/App4Mjpg-streamer.git

    展开全文
  • 随着物联网的发展,工业自动化平台需要实现手机APP、网页远程监控,传统的组态软件一般只能用于局域网系统,如果需要做成手机APP和网络监控,以前是需要网络工程师配合定制,耗费时间长成本高。随着需求的增多,工控...

     

          组态软件是一种用于工业自动化行业的数据采集与过程控制的专用软件,它们是用于自动控制系统监控层一级的平台软件。自动化工程师比较习惯使用组态软件来开发监控平台。随着物联网的发展,工业自动化平台需要实现手机APP、网页远程监控,传统的组态软件一般只能用于局域网系统,如果需要做成手机APP和网络监控,以前是需要网络工程师配合定制,耗费时间长成本高。随着需求的增多,工控自动化行业的已经开发出了成熟的云组态系统,按照工控自控化工程师的使用习惯,能将开发好的监控平台系统,直接转为网络平台和手机APP监控。本文以广州巨控电子成熟云组态webgui为开发基础,完整的介绍自控工程师怎么做手机APP来远程监控PLC的。

    • PLC系统数据采集和通讯

          传统的组态和PLC通讯都是采用以太网、485,、422、232等通讯方式,是需要通过有线连接。由于手机或网络终端的位置不固定,所以传统的数据采集方式就不适合,因此PLC控制系统里面需要加一个网络数据采集模块。WEBGUI是采用的是巨控的 GRM系列远程控制模块,来实现PLC系统的网络数据通讯。通讯原理如下:

          巨控的 GRM系列远程控制模块内置了差不多所有主流的PLC协议,还有MODBUS rtu、modbus tcp协议,还支持OPC UA协议。GRM远程模块能将各种通讯协议转为网络通讯协议,webgui能直接获取硬件内部配置的通讯变量。变量通讯配置可以见巨控GRM系列模块的操作使用手册。GRM支持的通讯协议见下图。

    • 云组态工程配置

    2.1新建工程:

        可选存放工程目录,修改工程名称,功能描述,调整合适的画面分辨率大小,工程分辨率默认1140*600。

    2.2获取数据变量

    WEBGUI云组态的数据变量是来源于巨控的GRM远程模块,不用单独再建立变量,只需要输入巨控模块的11位SN号和密码,就能通过网络从采集模块内部导入变量数据

    2.3画面编辑

    2.3.1基础画面配置

    画面编辑和常规组态软件一样,利用各种组态的各种控件或者自己的素材图片,来配置工程画面。

    2.3.2控件功能和变量绑定,实现控制和动画功能

    组态的各种控件是需要和变量绑定,来实现数据显示,动画闪烁、隐藏、流动等。这些操作和wincc,组态王基本一致。

    2.3.3工程编译-压缩打包上传

    组态工程编译好后,云组态是在巨控的阿里云服务器上运行的,因此先需要在巨控购买一个阿里云后台,申请一个账号,这个账号是一次性购买,没有后续费用。账号购买好后,将组态工程直接上传到云空间后台。

    1. 编译:工程编译查找错误
    2. 本地调试运行:指本地电脑IE运行,操作对远程模块起作用,请在安全情况下用。
    3. 压缩打包:工程完成以后打包,上传服务器运行(需要输入购买的账号名字与登录密码)

    这一步做完,APP的开发工程就做完了,基本操作都和常规组态一样,一般的自控工程师都能完成,无需软件开发工程师配合了。

    • 云组态工程运行和查看

    云组态工程可以通过网页和APP来浏览和控制,网页登录口是www.yunplc.com,在登陆口输入云组态的账号和密码,进入后就可以打开云组态工程,监控实时数据和远程控制PLC。手机端可以直接下载一个APP,也是通过在APP端直接输入账号和密码,登录查看。云组态工程支持多个客户终端同时访问的,所以网页和APP是不冲突的。

     

     

    展开全文
  • 刚不久开发一款了教育类app,需要实现教师端对学生移动设备进行远程操控,比如对学生平板进行解锁屏,共享电脑屏幕到学生端,监控学生屏幕内容等。 网络环境 教师端网线或WIFI接入,iPad和Android Pad通过WIFI接入,...
  • ★ 什么是EZViewEZView是一款移动监控客户端软件,应用于Android和iOS系统,可在各移动应用商店免费下载安装,通过网络直接接入宇视科技视频监控产品,实现在移动终端上查看实况、云台控制、回放录像、推送告警、...
  • 查看charles,端口 勾选上上面的,点击确定 2)ipconfig,查看自己电脑的ip地址 3)手机通过设置http代理服务器,连接到电脑服务器输入电脑的ip 与电脑同一个局域网端口和charles的端口一致, 4) 如果没有连接上...
  • iptraf是一个基于ncurses的IP局域网监控器,用来生成包括TCP信息、UDP计数、ICMP和OSPF信息、以太网负载信息、节点状态信息、IP校验和错误等等统计数据。 AD:51CTO首届中国APP创新评选大赛正在
  • 工业上越来越多的人需要将局域网内的plc数据或者单片机的数据上传到手机app上,实现远程的操作监控。实现的方法是借助plc支持modbus协议,通过dtu模块实现串口透传到云服务器,之后开发手机app实现手机读写plc数据。...
  • 用安卓手机实现视频监控

    千次阅读 2019-06-14 22:58:59
    APP用一部闲置手机作为监控相机,在另一部手机上实现远程监控。 作为监控摄像机的手机称为服务器端,观看监控视频的手机称为客户端。 对于使用环境的要求是服务器端通过无线路由器WIFI接入互联网,客户端通过...
  • 由于没有现成的摄像头,我想有没有可以把手机摄像头变成监控app,在网上找了找发现还真有,名字叫做ip摄像头,顾名思义 配置界面如下 通过本地广播设置端口号和用户名以及密码,因为是局域网我没有设置...
  • ROS 机器人双路视频手机监控

    千次阅读 2017-06-30 23:24:29
    这几天心血来潮,把家里的旧摄像头装在Diego1#上,再加上原来的Letv Xtion就形成了双路视频摄像头,再通过手机APP实现了双路视频远程监控,先上个图: 手机监控的画面,上面的画面是Letv_Xtion传输的数据,下面的是...
  • 当我们看到app ...初步估算下,如果同一个局域网有十个人同时打开app store进行更新,那么百兆带宽瞬间就可以被占满。如下图:网络管理员们,如果你们发现来自apple.com的流量占用很大,而且带宽又不...
  • USB大小的东西,电脑一插,手机就可以无线上网了,但是企业局域网来说,其实是个让网络管理头疼的东西,随身WIFI的带宽用的都是局域网带宽资源,员工或者什么人偷偷把随身WIFI接在电脑上,看视频,玩APP,占用带宽,...
  • 监控摄像头与云服务器

    千次阅读 2018-10-24 16:26:56
    局域网:直播流   萤石云 APP 功能分析: 播放/暂停 静音/音量 单视图/多视图 画质(超清、高清、标清) 全屏 截图 录像 回放 活动检测提醒 视频封面(摄像机自动抓图、固定图片) 其它   需求: ...
  • 1、如果网络摄像头不支持RTMP网络协议,那么就需要在本地(也就是局域网的电脑)主动使用FFmpeg等格式转换推流软件,将摄像头的比如RTSP数据流转换成RTMP同时推流到你的远程RTMP流媒体服务器,这个流媒体服务器一般...
  • 目前有项目园区已有50台摄像机,5台录像机,非同一网段、同一局域网,能上网,可通过互联网登录到萤石云平台建立监控云,手机端上安装萤石的app来实现观看。产业园里面的保安通过它来监控所辖区域的楼宇、各种
  • -有技术功底,能定制出合适的APP,从摄像头拉数据,到解析,到服务器重新转发,到手机端解码,全部都由我们的代码完成。 -绝非市面上,拿厂家的DEMO就说手机视频监控。 -安卓/Android客户端,苹果/Ios客户端,...
  • 本文转自博客:http://blog.csdn.net/xinlanbobo/article/details/53156742 近期工作中需要开发一套视频监控系统,实现WEB端、手机APP端预览局域网内的道路监控摄像机,我负责一些后台服务的开发工作。 由于之前...
  • 相比有很多人都想用手机实现视频监控吧,今天这个教程,将会教大家用spydroid-ipcamera搭建局域网监控环境。  准备工作:1.准备一部带有摄像头的,API level在9以上的手机; 2.从...
  • 目前我国污水处理站众多,但是站点分散, 难以集中监控,分级分权限管理,流程有多个监控点,包括液位、PH值、溶氧、浊...1、水厂、污水处理厂自动化水平不高,大多局限于单点监控或者局域网监控。但系统需要扩展时,由
  • 近期工作中需要开发一套视频监控系统,实现WEB端、手机APP端预览局域网内的道路监控摄像机。 由于之前项目中的程序大都采用了私有协议、使用各摄像机厂商的SDK进行视频监控系统的开发,这种方式应用此次项目
  • 近期工作中需要开发一套视频监控系统,实现WEB端、手机APP端预览局域网内的道路监控摄像机,我负责一些后台服务的开发工作。 由于之前项目中的程序都是采用私有协议、各摄像机厂商的SDK进行视频监控系统开发,这种...
  • 近期工作中需要开发一套视频监控系统,实现WEB端、手机APP端预览局域网内的道路监控摄像机,我负责一些后台服务的开发工作。  由于之前项目中的程序都是采用私有协议、各摄像机厂商的SDK进行视频监控系统开发,...
  • 最近的一次开发工作中,需要开发一个app里面包含海康威视摄像机的监控和控制部分,通过和海康sdk工程师联系已经网上的资源,终于实现的所需要的功能,下面是我开发过程中的监控部分的代码和步骤,分享给大家,希望...
  • 基于海康威视网络摄像机的Android二次开发

    万次阅读 多人点赞 2018-08-14 12:14:43
    最近的一次开发工作中,需要开发一个app里面包含海康威视摄像机的监控和控制部分,通过和海康sdk工程师联系已经网上的资源,终于实现的所需要的功能,下面是我开发过程中的监控部分的代码和步骤,分享给大家,希望...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

局域网监控app