精华内容
下载资源
问答
  • 此文件类型检测器支持许多格式(图像,档案,文本,文档,音频,视频,字体等)。 它还包括Microsoft OLE复合文件类型检测器的算法具有特殊功能,可通过使用其BOM(字节顺序标记)来检测文本文件类型(如HTML,...
  • Javascript静态类型检测器 Flow 中文参考指南
  • 查看驱动时,往往需要知道驱动是属于什么类型的,才能进行读写操作,具体实现方法请看下面的程序:  var x:integer;driver:pchar;begindriver:=f:\;x := GetDriveType(driver);Case x of2: Label1.Caption := ...

      查看驱动器时,往往需要知道驱动器是属于什么类型的,才能进行读写操作,具体实现方法请看下面的程序:

      var x:integer;
    driver:pchar;
    begin
    driver:=f:\;
    x := GetDriveType(driver);
    Case x of
    2: Label1.Caption := 该驱动器是可移动驱动器;
    3: Label1.Caption := 该驱动器是固定驱动器;
    4: Label1.Caption := 该驱动器是网络驱动器;
    5: Label1.Caption := 该驱动器是CD-ROM驱动器;
    6: Label1.Caption := 该驱动器是虚拟驱动器;
    Else Label1.Caption := 该驱动器无效;
    End;
    end;

    转载于:https://www.cnblogs.com/tecsoon/archive/2009/03/04/1403039.html

    展开全文
  • 本文介绍了目前常用的光学传感器和检测器类型,并对每种类型的适用性进行了评估。
  • Flow (一个 JavaScript 静态类型检测器) ## Flow开发工具插件 (Flow Language Support) 在vscode中安装插件 Flow Language Support,则不符合类型检查的代码都会被标记出来 ## 安装和检查 1. 通过如下步骤...

    项目网址:https://gitee.com/big-right-right/flow_-a_-static_-type_-checker_-for_-java-script

     

    ## 介绍

    Flow (一个 JavaScript 静态类型检测器)

     

    ## Flow开发工具插件 (Flow Language Support)

    在vscode中安装插件 Flow Language Support,则不符合类型检查的代码都会被标记出来

     

    ## 安装和检查

    1. 通过如下步骤安装 flow-bin:

    执行 cnpm install flow-bin --save-dev

    2. 通过如下步骤在项目根目录下添加一个 .flowconfig 文件:

    执行 yarn flow init

    .flowconfig 文件内容如下:

    [ignore]
    
    [include]
    
    [libs]
    
    [lints]
    
    [options]
    
    [strict]
    

    3. 在源代码文件夹src下,在需要进行静态类型检测的文件首行,添加 // @flow

    4. 通过如下步骤对文件进行静态类型检查:

    执行 yarn flow

    此时会看到控制台,输出了类型检查错误。


    ## 移除源代码中的类型标记

    由于带上flow类型检查标记的文件,不是纯正的js文件,无法正常执行,所以需要移除源代码中的类型标记。

     

    ### 用 flow-remove-types 移除源码中的flow类型标记

    1. 通过如下步骤安装 flow-remove-types:

    执行 cnpm install flow-remove-types --save-dev

    2. 通过如下步骤把源码编译为无标记的代码:

    执行 yarn flow-remove-types src -d dist

    此时,就会在目标代码文件夹dist中,发现已经移除了类型标记的代码文件。

     

    ### 用 babel 移除源码中的flow类型标记

    1. 通过如下步骤安装 babel:

    执行 cnpm install @babel/core @babel/cli @babel/preset-flow --save-dev

    2. 在项目根目录下添加babel的配置文件 .babelrc

    .babelrc文件内容如下:

    {
    
    "presets": ["@babel/preset-flow"]
    
    }

    3. 通过如下步骤把源码编译为无标记的代码:

    执行 yarn babel src -d dist2

     

    ## Flow类型参考

    1.Flow官网类型描述文档

    2.第三方的类型手册:

    https://www.saltycrane.com/cheat-sheets/flow-type/latest

     

    ## Flow使用代码示例

    // @flow
    
    function sum(a: number , b: number){
        return a + b
    }
    sum(1, 2)
    sum(1, '2') // flow报语法错误
    
    
    // Flow原始类型
    const a: string = 'ab'
    const b: number = NaN // Infinity // 10
    const c: boolean = true
    const d: null = null
    const e: void = undefined
    const f: symbol = Symbol('foo')
    
    
    // Flow数组类型
    const arr1: Array<number> = [1, 3, 4]
    const arr2: number[] = [1, 2]
    
    // 固定元素个数的数组 叫元组
    const foo: [string, number] = ['foo', 100]
    
    
    // Flow对象类型
    const obj1: { foo: string, bar?: number} = {
        foo: 'foo',
        bar: 200
    }
    
    const obj3: { [string]: string } = {}
    obj3.key1 = 'value1'
    obj3.key2 = '100'
    
    
    // Flow函数类型
    function f1(callback: (string, number) => void){
        callback('string', 100)
    }
    f1(function(str, n){
        return undefined
    })
    
    
    // Flow特殊类型
    const a: 'foo' = 'foo'
    const type: 'success' | 'warning' | 'danger' = 'success'
    type StringOrNumber = string | number
    const b: string | number = 100
    const c: StringOrNumber = 'str1'
    
    // 注解的类型前面加 ? 还允许null 和 undefined
    let gender: ?number = undefined
    gender = null
    gender = 1
    
    
    // Flow mixed 和 any类型
    // mixed - 任何类型都可以 是强类型
    // any - 任何类型都可以 是弱类型(允许随意的隐式类型转换)
    // any要少用 主要为了兼容老代码
    function passMixed(value: mixed){
        if(typeof value === 'string'){
            value.substr(1)
        }
        if(typeof value === 'number'){
            value * value
        }
    }
    passMixed(10)
    passMixed('str')
    
    function passAny(value: any){
        value.substr(1)
        value * value
    }
    passAny(null)
    passAny(true)
    
    
    // Flow 类型推断
    function square(n){
        return n * n
    }
    square('100')   // flow报语法错误
    
    // Flow 类型注解
    let num: number = 100
    num = '10'      // flow报语法错误
    function foo(): number {
        return 'a'  // flow报语法错误
    }
    
    // Flow对运行环境提供的API的支持
    document.getElementById('ab')
    document.getElementById(100) // flow报语法错误
    
    const element: HTMLElement | null = document.getElementById('ab')
    

    本文 完。

    展开全文
  • 点击打开链接代码路径:/kernel/msm-3.18/drivers/usb/phy/phy_msm_usb.c msm_otg_probe (1)工作队列初始化INIT_WORK(&amp;motg-&gt;sm_work, msm_otg_sm_work); INIT_DELAYED_WORK(&...充电类...

    代码路径:/kernel/msm-3.18/drivers/usb/phy/phy_msm_usb.c
    msm_otg_probe
    (1)工作队列初始化

    INIT_WORK(&motg->sm_work, msm_otg_sm_work);
    INIT_DELAYED_WORK(&motg->chg_work, msm_chg_detect_work);充电器类型检测的work
    INIT_DELAYED_WORK(&motg->id_status_work, msm_id_status_w);batt id状态的work
    
    • 1
    • 2
    • 3
    • 4

    (2)注册power supply

    motg->usb_psy.name = "usb";//文件节点/sys/class/power_supply/usb
        motg->usb_psy.type = POWER_SUPPLY_TYPE_USB;
        motg->usb_psy.supplied_to = otg_pm_power_supplied_to;
        motg->usb_psy.num_supplicants = ARRAY_SIZE(otg_pm_power_supplied_to);
        motg->usb_psy.properties = otg_pm_power_props_usb;//所有支持的property
        motg->usb_psy.num_properties = ARRAY_SIZE(otg_pm_power_props_usb);
        motg->usb_psy.get_property = otg_power_get_property_usb;
        motg->usb_psy.set_property = otg_power_set_property_usb;
        motg->usb_psy.property_is_writeable
            = otg_power_property_is_writeable_usb;
    
        if (!msm_otg_register_power_supply(pdev, motg))
            psy = &motg->usb_psy;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    下面来重点分析两个工作队列sm_work和chg_detected_work

    msm_otg_sm_work
    case OTG_STATE_B_IDLE:
    switch (motg->chg_state) {
        case USB_CHG_STATE_UNDEFINED://代码里面定义了USB chg detection涉及的多个状态
            motg->chg_state = USB_CHG_STATE_IN_PROGRESS;//状态设置为检测中
            msm_chg_detect_work(&motg->chg_work.work);//启动充电器类型检测的work
        case USB_CHG_STATE_DETECTED://充电器类型检测完毕,也就是说上面的chg detect work
    完毕后一定会设置该状态。
    switch (motg->chg_type) {
            case USB_DCP_CHARGER:
            /* fall through */
            case USB_PROPRIETARY_CHARGER:
                msm_otg_notify_charger(motg,dcp_max_current);
                if (!motg->is_ext_chg_dcp)
                    otg->phy->state =OTG_STATE_B_CHARGER;
                        break;
            case USB_UNSUPPORTED_CHARGER:
                msm_otg_notify_charger(motg, 0);
                if (!motg->is_ext_chg_dcp)
    otg->phy->state =OTG_STATE_B_CHARGER;
                        break;
            case USB_CDP_CHARGER:
                msm_otg_notify_charger(motg,IDEV_CHG_MAX);
                        /* fall through */
            case USB_SDP_CHARGER:
                msm_chg_check_dcd_flchg(motg);
    msm_otg_start_peripheral(otg, 1);
                otg->phy->state =OTG_STATE_B_PERIPHERAL;
                mod_timer(&motg->chg_check_timer,CHG_RECHECK_DELAY);
                break;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    根据不同的充电器类型都调用了msm_otg_notify_charger函数,该函数一个参数为电流

    msm_otg_notify_charger(struct msm_otg *motg, unsigned mA)
    dev_dbg(motg->phy.dev, "Requested curr from USB = %u, max-type-c:%u\n",mA, motg->typec_current_max);//打印log信息
    /* Save bc1.2 max_curr if type-c charger later moves to diff mode */
    ->  motg->bc1p2_current_max = mA;
    -->if (msm_otg_notify_chg_type(motg))//通知PMIC充电器类型
            dev_err(motg->phy.dev,"Failed notifying %d charger type to PMIC\n",motg->chg_type);
        msm_otg_notify_power_supply(motg, mA);//设置其他property属性
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    msm_chg_detect_work:
    switch (motg->chg_state) {
        case USB_CHG_STATE_UNDEFINED:
        case USB_CHG_STATE_IN_PROGRESS:
            ……
            motg->chg_state = USB_CHG_STATE_WAIT_FOR_DCD;
            break;
        case USB_CHG_STATE_WAIT_FOR_DCD:
            msm_chg_enable_primary_det(motg);
            motg->chg_state = USB_CHG_STATE_DCD_DONE;
    case USB_CHG_STATE_DCD_DONE:
            vout = msm_chg_check_primary_det(motg);
    if (vout && !dm_vlgc) { /* VDAT_REF < DM < VLGC */
                if (line_state) { /* DP > VLGC */
                    motg->chg_type = USB_PROPRIETARY_CHARGER;//到这里检测出第一种充电器类型proprietary,具体是啥类型也不清楚。
                    motg->chg_state = USB_CHG_STATE_DETECTED;
                    delay = 0;
                } else {
                    msm_chg_enable_secondary_det(motg);//再做进一步的类型检测
                    motg->chg_state = USB_CHG_STATE_PRIMARY_DONE;
                }
    else { /* DM < VDAT_REF || DM > VLGC */
                if (line_state) /* DP > VLGC or/and DM > VLGC */
                    motg->chg_type = USB_PROPRIETARY_CHARGER;
                else if (!dcd) {
                    if (motg->pdata->enable_floated_charger== FLOATING_AS_DCP)
                        motg->chg_type = USB_DCP_CHARGER;//根据配置设置这种情况下的充电器类型到底是DCP还是unsupported的,enable_floated_charger可以在dtsi中配置。
                    else if (motg->pdata->enable_floated_charger== FLOATING_AS_INVALID)
                        motg->chg_type =USB_UNSUPPORTED_CHARGER;
                } else {
                    motg->chg_type = USB_SDP_CHARGER;//检测到SDP充电器
                }
                motg->chg_state = USB_CHG_STATE_DETECTED;//状态设置为检测完成。
                delay = 0;
            }
    case USB_CHG_STATE_PRIMARY_DONE:
            vout = msm_chg_check_secondary_det(motg);
            if (vout)
                motg->chg_type = USB_DCP_CHARGER;
            else
                motg->chg_type = USB_CDP_CHARGER;//在secondary检测阶段区分是DCP还是CDP
            motg->chg_state = USB_CHG_STATE_SECONDARY_DONE;
    case USB_CHG_STATE_SECONDARY_DONE:
            motg->chg_state = USB_CHG_STATE_DETECTED;// secondary检测完毕整个类型检测完毕,状态设置为detected
    case USB_CHG_STATE_DETECTED://下面看检测完毕后又做了哪些工作?看注释!!!
    /* Notify the charger type to power supply owner as soon as we determine the charger.*/
    msm_otg_notify_chg_type(motg);
    queue_work(motg->otg_wq, &motg->sm_work);再次去调度sm_work
    
    展开全文
  • 您可以使用这对函数为要测试的位序列(在受噪声、衰落、多径等影响的通信信道中传输之后)生成 n-CRC,以检测此位序列是否包含某种类型的错误。
  • 基于MAX9060比较的插孔自动检测电路设计 基于MAX9060比较的插孔自动检测电路设计
  • 检测所有驱动类型(3KB)
  • 检查文件类型的imgurs,没有更多的惊喜! 打开图像时检查imgurs,以查看是否具有动画效果。 这是专为实时流媒体设计的,旨在帮助他们避免受到显示非法内容的gif的禁止。 支持语言:English (United States)
  • 文中利用Monte-Carlo仿真方法分析了该检测器在均匀背景下、多目标环境和杂波边缘环境中的检测性能,并与其他类型检测器进行比较。仿真结果表明:在均匀背景下,该检测器性能接近CA-CFAR检测器,在多目标环境和杂波...
  • VB之网络精彩编程-检测所有驱动类型(3KB)
  • 1 普通熔断的分类及特点  普通熔断俗称保险管或保险丝,是一种不可恢复性元器件。普通熔断的外形和电路符号如图1所示。 图1 普通熔断的外形和电路符号  1.1 普通熔断的特点  普通熔断通常由...
  • 加密狗型号检测器

    2018-08-07 13:26:25
    此款为加密狗检测器,是一款可以侦察。对于cracker来说,是一款非常好用方便的加密解密工具软件,它可以帮助用户快速识别文件的加密方式类型,并提供相应的破解方式和破解技巧,让你可以在电脑上快速完成各种文件的...
  • JS数据类型检测

    2018-08-21 21:31:13
    JavaScript中如何检测数据类型?有四种检测的方式: typeof:检测数据类型的运算符 instanceof : 检测某个实例是否属于这个类(什么是类) constructor: 获取当前实例的构造 Object.prototype.toString.call :...
  • jquery检测浏览器类型

    2015-12-17 20:24:00
    使用jquery如下代码检测浏览器版本时:出问题,在检测IE浏览,如果版本是IE11时,会出现 $.browser.msie的返回值是false,$.browser.mozilla的返回值是true,即把IE11检测成火狐了 结局办法 判断IE浏览用 !!...

    使用jquery如下代码检测浏览器版本时:出问题,在检测IE浏览器,如果版本是IE11时,会出现 $.browser.msie的返回值是false,$.browser.mozilla的返回值是true,即把IE11检测成火狐了

     

    结局办法  判断IE浏览器用  !!window.ActiveXObject || "ActiveXObject" in window方法。

    function JudgeBroswer() {
            if($.browser.msie) {
                alert("this is msie!"); //IE
            }
            else if($.browser.safari)
            {
                alert("this is safari!"); //Safari
            }
            else if($.browser.mozilla)
            {
                alert("this is mozilla!");  //Firefox
            }
            else if($.browser.opera) {
                alert("this is opera");     //Opera
            }
        }

     

    改进成:

    function JudgeBroswer() {
            if(!!window.ActiveXObject || "ActiveXObject" in window) { //改进处
                alert("this is msie!"); //IE
            }
            else if($.browser.safari)
            {
                alert("this is safari!"); //Safari
            }
            else if($.browser.mozilla)
            {
                alert("this is mozilla!");  //Firefox
            }
            else if($.browser.opera) {
                alert("this is opera");     //Opera
            }
        }

     

    但是以上这种判断方法,没法完成繁杂的浏览器的判断需求:有个很不多的文章关于判断浏览器的类型和型号:http://xiakuai.blog.51cto.com/8682834/1371459

    转载于:https://www.cnblogs.com/huangshuqiang/p/5055222.html

    展开全文
  • 设备检测器-源码

    2021-02-25 09:22:20
    设备检测器 该库的目的是从用户代理字符串中获取尽可能多的信息。 如果提供了有效的用户代理,则确定以下信息: 僵尸与否 对于非机器人: 浏览器或应用程序 操作系统 设备类型 设备品牌 特征 超过200种机器人 近50...
  • 一个简单的tensorflow图像分类,用于解决检测车体类型并从与我的工作相关的图像中提取其他特征的图像分类问题。 我安装tensorflow中的virtualenv模式在doc解释。 此存储库包含一个图像下载python脚本(img_dl....
  • 可燃气体检测仪器,是对单一或多种可燃气体浓度响应的探测。可燃气体检测仪器有催化型、红外光学型两种类型
  • 1 普通熔断的分类及特点  普通熔断俗称保险管或保险丝,是一种不可恢复性元器件。普通熔断的外形和电路符号如图1所示。 图1 普通熔断的外形和电路符号  1.1 普通熔断的特点  普通熔断通常由...
  • 需要检测相对功率水平的RF系统用户可以选择三种主要类型检测器IC,通常称为RMS,日志和峰值类型。这些不同的探测器提供响应时间,峰值与RMS值的灵敏度,动态范围和的不同组合,引用一些关键规范。每种类型都使用...
  • NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink ...//创建检测器,检测类型是linke(可改成检测别的) NSArray *matches = [detector matchesInString:textStri...
  • 车辆检测器 使用超声波声纳检测车辆的类型

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,302
精华内容 1,720
关键字:

检测器类型