`

getopt函数和getopt_long函数学习笔记

阅读更多

getopt函数和getopt_long函数学习笔记

1.头文件

Cpp代码 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="14" height="15" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"> <param name="flashvars" value="clipboard=%23include%20%3Cstdio.h%3E%0A%23include%20%3Cstdlib.h%3E%0A%23include%20%3Cunistd.h%3E%0A%23include%20%3Cgetopt.h%3E"> <param name="src" value="http://kenby.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf"> <embed type="application/x-shockwave-flash" width="14" height="15" src="http://kenby.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%23include%20%3Cstdio.h%3E%0A%23include%20%3Cstdlib.h%3E%0A%23include%20%3Cunistd.h%3E%0A%23include%20%3Cgetopt.h%3E"></embed></object>
   1. #include <stdio.h>  
   2. #include <stdlib.h>  
   3. #include <unistd.h>  
   4. #include <getopt.h>  
 

2.函数原型

int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);

longindex参数如果没有设置为NULL,那么它就指向一个变量,这个变量会被赋值为寻找到的长选项在longopts中的索引值

3.全局符号

(1)

Cpp代码 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="14" height="15" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"> <param name="flashvars" value="clipboard=struct%20option%20%7B%0A%20%20%20%20char%20*name%3B%0A%20%20%20%20int%20has_arg%3B%0A%20%20%20%20int%20*flag%3B%0A%20%20%20%20int%20val%3B%0A%7D%3B"> <param name="src" value="http://kenby.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf"> <embed type="application/x-shockwave-flash" width="14" height="15" src="http://kenby.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=struct%20option%20%7B%0A%20%20%20%20char%20*name%3B%0A%20%20%20%20int%20has_arg%3B%0A%20%20%20%20int%20*flag%3B%0A%20%20%20%20int%20val%3B%0A%7D%3B"></embed></object>
   1. struct option {  
   2.     char *name;  
   3.     int has_arg;  
   4.     int *flag;  
   5.     int val;  
   6. };  
 

一般每个长选项都对应一个短选项,两者是等价的,option结构就是用来定义长选项对应哪个短选项,name表示长选项的名称,val表示对应的短选项,比如{ "no-proxy", no_argument, NULL, 'N' },说明--no-proxy对应与-N。

has_arg可以取值如下:

no_argument 0 选项没有参数

requierd_argument 1 选项需要参数

optional_argument 2 选项参数可选

比如我们可以定义如下选项:

Cpp代码 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="14" height="15" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"> <param name="flashvars" value="clipboard=static%20const%20struct%20option%20longopts%5B%5D%20%3D%20%7B%0A%20%20%20%20%7B%20%22no-proxy%22%2C%20no_argument%2C%20NULL%2C%20'N'%20%7D%2C%0A%20%20%20%20%7B%20%22output%22%2C%20required_argument%2C%20NULL%2C%20'o'%20%7D%2C%0A%20%20%20%20%7B%20%22user-agent%22%2C%20required_argument%2C%20NULL%2C%20'U'%20%7D%2C%0A%20%20%20%20%7B%20%22verbose%22%2C%20no_argument%2C%20NULL%2C%20'v'%20%7D%2C%0A%20%20%20%20%7B%20%22quiet%22%2C%20no_argument%2C%20NULL%2C%20'q'%20%7D%2C%0A%20%20%20%20%7B%20%22help%22%2C%20no_argument%2C%20NULL%2C%20'h'%20%7D%2C%0A%20%20%20%20%7B%20%22version%22%2C%20no_argument%2C%20NULL%2C%20'V'%20%7D%2C%20%20%20%0A%20%20%20%20%7B%20NULL%2C%20no_argument%2C%20NULL%2C%200%20%7D%0A%7D%3B"> <param name="src" value="http://kenby.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf"> <embed type="application/x-shockwave-flash" width="14" height="15" src="http://kenby.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=static%20const%20struct%20option%20longopts%5B%5D%20%3D%20%7B%0A%20%20%20%20%7B%20%22no-proxy%22%2C%20no_argument%2C%20NULL%2C%20'N'%20%7D%2C%0A%20%20%20%20%7B%20%22output%22%2C%20required_argument%2C%20NULL%2C%20'o'%20%7D%2C%0A%20%20%20%20%7B%20%22user-agent%22%2C%20required_argument%2C%20NULL%2C%20'U'%20%7D%2C%0A%20%20%20%20%7B%20%22verbose%22%2C%20no_argument%2C%20NULL%2C%20'v'%20%7D%2C%0A%20%20%20%20%7B%20%22quiet%22%2C%20no_argument%2C%20NULL%2C%20'q'%20%7D%2C%0A%20%20%20%20%7B%20%22help%22%2C%20no_argument%2C%20NULL%2C%20'h'%20%7D%2C%0A%20%20%20%20%7B%20%22version%22%2C%20no_argument%2C%20NULL%2C%20'V'%20%7D%2C%20%20%20%0A%20%20%20%20%7B%20NULL%2C%20no_argument%2C%20NULL%2C%200%20%7D%0A%7D%3B"></embed></object>
  1. static   const   struct  option longopts[] = {  
  2.     { "no-proxy" , no_argument, NULL,  'N'  },  
  3.     { "output" , required_argument, NULL,  'o'  },  
  4.     { "user-agent" , required_argument, NULL,  'U'  },  
  5.     { "verbose" , no_argument, NULL,  'v'  },  
  6.     { "quiet" , no_argument, NULL,  'q'  },  
  7.     { "help" , no_argument, NULL,  'h'  },  
  8.     { "version" , no_argument, NULL,  'V'  },     
  9.     { NULL, no_argument, NULL, 0 }  
  10. }; 
       1. static const struct option longopts[] = {  
       2.     { "no-proxy", no_argument, NULL, 'N' },  
       3.     { "output", required_argument, NULL, 'o' },  
       4.     { "user-agent", required_argument, NULL, 'U' },  
       5.     { "verbose", no_argument, NULL, 'v' },  
       6.     { "quiet", no_argument, NULL, 'q' },  
       7.     { "help", no_argument, NULL, 'h' },  
       8.     { "version", no_argument, NULL, 'V' },     
       9.     { NULL, no_argument, NULL, 0 }  
      10. };  
    
    
(2)

Cpp代码 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="14" height="15" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"> <param name="flashvars" value="clipboard=extern%20char%20*optarg%0Aextern%20int%20optind%2C%20optopt%2C%20opterr"> <param name="src" value="http://kenby.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf"> <embed type="application/x-shockwave-flash" width="14" height="15" src="http://kenby.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=extern%20char%20*optarg%0Aextern%20int%20optind%2C%20optopt%2C%20opterr"></embed></object>
   1.  extern char *optarg 
   2. extern int optind, optopt, opterr  
 

假设使用下载工具axel:

axel -q --no-proxy --max-speed=150 http://blog.csdn.net/kenby/index.html

初始时,optind的值为1,指向第1个参数,每调用一次getopt_long,optind就向后移一个单位,指向第二个参数,这样optind总是指向下一个要处理的参数,optarg表示参数的值,比如但处理max-speed时,optarg的值为150

4.函数返回值

(1)若没有命令行参数,返回-1

(2)若碰到匹配的短选项, 返回对应的字符,比如碰到-N, 返回'N',若碰到匹配的长选项,返回在option数组里面定义的val,

比如碰到--no-proxy, 返回'N'。

(3)若碰到无法识别的短选项,返回-1, 若碰到无法识别的长选项,返回'?'

 

 

#################################################################

 

 

Linux系统下,需要大量的命令行选项,如果自己手动解析他们的话实在是有违软件复用的思想,不过还好,GNU C library留给我们一个解析命令行的接口(X/Open规范),好好使用它可以使你的程序改观不少。

使用getopt_long()需要引入头文件

#include <getopt.h>

     现在我们使用一个例子来说明它的使用。

一个应用程序需要如下的短选项和长选项。


      短选项               长选项                           作用

      -h                      --help                           输出程序命令行参数说明然后退出
      -o filename        --output filename      给定输出文件名
      -v                      --version                       显示程序当前版本后退后

为了使用getopt_long函数,我们需要先确定两个结构:

1.一个字符串,包括所需要的短选项字符,如果选项后有参数,字符后加一个":"符号。本例中,这个字符串应该为"ho:v"。(因为-o后面有参数filename,所以字符后面要加":")

2.一个包含长选项字符串的结构体数组,每一个结构体包含4个域,第一个域为长选项字符串,第二个域是一个标识,只能为0或1,分别代表没有、有。 第三个域永远为NULL。第四个域为对应的短选项字符串。结构体数组的最后一个元素全部为NULL和0,标识结束。在本例中,它应该像一下的样子:

 

const struct option long_options[] = {
         { "help",        0, NULL, 'h' },
         { "output",      1, NULL, 'o' },
         { "version", 0, NULL, 'v' },
         { NULL,          0, NULL, 0}
      };
 

 

调用时需要把main的两个参数argc和argv以及上述两个数据结构传给getopt_long。
每次调用getopt_long,它会解析一个符号,返回相应的短选项字符,如果解析完毕返回-1。所以需要使用一个循环来处理所有的参数,而相应的循环 里会使用switch语句进行选择。如果getopt_long遇到一个无效的选项字符,它会打印一个错误消息并且返回'?',很多程序会打印出帮助信息 并且中止运行;当getopt_long解析到一个长选项并且发现后面没有参数则返回':',表示缺乏参数。当处理一个参数时,全局变量optarg指向 下一个要处理的变量。当getopt_long处理完所有的选项后,全局变量optind指向第一个未知的选项索引。

这一个例子代码为下:

 

/

/编译使用gcc -o getopt_long getopt_long.c
#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>

/*程序的名字*/
const char* program_name;

/* 打印程序参数 */
void print_usage (FILE* stream, int exit_code)
{
fprintf (stream, "Usage: %s options [ inputfile ... ]\n", program_name);
fprintf (stream, " -h --help                       显示这个帮助信息.\n"
                             " -o --output filename 将输出定位到文件.\n"
                             " -v --version                  打印版本信息.\n");
exit (exit_code);
}


/* 主程序 */
int main (int argc, char* argv[])
{
int next_option;//下一个要处理的参数符号
int haveargv = 0;//是否有我们要的正确参数,一个标识
           
/* 包含短选项字符的字符串,注意这里的‘:’ */
          
const char* const short_options = "ho:v";
              
/* 标识长选项和对应的短选项的数组 */
              
const struct option long_options[] = {
                   { "help",        0, NULL, 'h' },
                   { "output",      1, NULL, 'o' },
                   { "version", 0, NULL, 'v' },
                   { NULL,         0, NULL, 0     }};//最后一个元素标识为NULL
                    
    /* 此参数用于承放指定的参数,默认为空 */
const char* output_filename = NULL;
/* 一个标志,是否显示版本号 */
int verbose = 0;

/* argv[0]始终指向可执行的文件文件名 */
                             
program_name = argv[0];
    
do
{
    next_option = getopt_long (argc, argv, short_options, long_options, NULL);
    switch (next_option)
    {
     case 'h':     /* -h or --help */    
       haveargv = 1;
       print_usage (stdout, 0);
     case 'o':     /* -o or --output */
         /* 此时optarg指向--output后的filename */
      output_filename = optarg;
      haveargv = 1;
      break;
     case 'v':     /* -v or    --version */
      verbose = 1;
      haveargv = 1;
      break;
     case ':':     /* 缺乏长选项内容 */
      break;
     case '?':     /* 出现一个未指定的参数*/
      print_usage (stderr, 1);
     case -1:      /* 处理完毕后返回-1 */
             if (!haveargv)
             {
                   print_usage (stderr, 1);
             }
      break;
     default:      /* 未指定的参数出现,出错处理 */
      print_usage (stderr, 1);
                                  break;
    }
}while (next_option !=-1);
                            
if (verbose)
{

    //假如这样运行程序,。./demo_getopt -v 123

    //结果输出:123
    int i;
    for (i = optind; i < argc; ++i)
    printf ("Argument: %s\n", argv[i]);
}                           
                        
return 0;
}
 
分享到:
评论

相关推荐

    Command Line Options: getopt_long() Learning Note

    本篇学习笔记将深入探讨`getopt_long()`的使用方法、功能和相关知识点。 `getopt_long()`函数是`getopt()`函数的扩展版,它允许我们定义和处理带有“--”前缀的长选项。`getopt()`只能处理单个字符的选项,而`...

    Linux系统编程学习笔记

    ### Linux系统编程学习笔记 #### 一、IO **1.1 标准I/O (stdio)** - **fopen/fclose**: `fopen` 用于打开或创建一个文件,并返回一个指向该文件的 `FILE *` 类型的指针。`fclose` 用于关闭一个已经打开的文件。...

    log4j-slf4j-impl-2.12.0.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    spring-data-jpa-2.0.9.RELEASE.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    snappy-java-1.1.7.1.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    基于RS2指令的通讯例程:3u平台实现远程控制与多设备互联互通

    内容概要:本文档详细介绍了如何利用3u平台通过RS2指令与打印机及其他多种外界元件(如触摸屏、RFID读写器、扫码枪、电磁流量计等)进行通讯。它不仅涵盖了与打印机通讯的具体例程,还提供了丰富的应用场景和技术细节。文档强调了RS2指令作为一种常见串行通信协议的重要性和应用范围,展示了如何通过编写带有详细注释的代码实现远程控制和数据交互。此外,文档还提到了这些技术在工业自动化、智能家居、物流仓储等领域的广泛应用。 适合人群:从事嵌入式系统开发、工业自动化、物联网等相关领域的工程师和技术人员。 使用场景及目标:① 学习如何通过RS2指令实现与打印机和其他设备的通讯;② 掌握远程控制和数据读写的编程技巧;③ 提升在工业自动化、智能家居等领域的项目开发能力。 其他说明:文档提供了详尽的代码注释和注解,便于读者理解和实践。对于有兴趣深入了解RS2指令及其应用的读者,文档还提供了进一步的学习资源和联系方式。

    jackson-jaxrs-base-2.7.8.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    swagger-models-1.5.3.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    【车辆控制】基于matlab LQR自动驾驶车辆控制【含Matlab源码 13280期】.zip

    Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    Simpack轨道客车模型中非线性临界速度300的应用与分析

    内容概要:本文详细介绍了Simpack模拟软件在轨道客车模型中的应用,重点讨论了非线性临界速度300公里/小时的问题。文章首先概述了Simpack的功能及其在轨道交通领域的广泛应用,接着从多个角度分析了非线性临界速度的影响因素,包括列车动力学特性、轨道线路条件和信号控制系统。通过对这些因素的综合分析,揭示了轨道客车在不同条件下的运行特性和潜在挑战。最后得出结论,指出非线性临界速度问题是复杂但可以通过深入研究来解决的技术难题。 适合人群:从事轨道交通研究的专业人士和技术爱好者。 使用场景及目标:适用于希望深入了解Simpack软件在轨道客车建模中的应用,特别是关注非线性临界速度问题的研究人员和技术人员。目标是帮助他们更好地理解轨道客车的运行机制,提高模型的准确性和可靠性。 其他说明:随着技术的进步,更多先进的技术和方法将会被引入到轨道交通领域,进一步提升列车的安全性和效率。

    bugreport-2025-05-11-204343.zip

    bugreport-2025-05-11-204343.zip

    多类别水果目标检测与实例分割数据集.zip

    数据集介绍:多类别水果目标检测与实例分割数据集 一、基础信息 数据集名称:多类别水果目标检测与实例分割数据集 图片数量: - 训练集:11,110张图片 - 验证集:635张图片 - 测试集:316张图片 - 总计:12,061张农业场景图片 分类类别: 苹果、香蕉、哈密瓜、无花果、葡萄、葡萄柚、柠檬、芒果、橙子、桃子、梨、菠萝、石榴、草莓、西瓜 标注格式: - YOLO格式,包含边界框及多边形坐标标注,兼容目标检测与实例分割任务 - 数据格式:农业场景实拍图片,覆盖不同光照条件、果实成熟度及遮挡场景 二、适用场景 农业自动化分拣系统: 支持构建水果识别与定位模型,用于智能分拣设备视觉模块开发,提升水果分类效率。 农业机器人视觉模块: 适用于果园巡检机器人,实现多类别水果实时检测与空间定位。 水果产量预估系统: 通过实例分割标注可精确计算果实分布密度,为产量预测提供数据支持。 农产品质量检测: 支持检测果实表面缺陷、形态异常等特征,适用于自动化质量分级系统。 计算机视觉算法研究: 为多目标检测、小样本实例分割等前沿算法提供高质量农业领域验证数据。 教育实训案例: 可作为农业AI应用开发课程的实践数据集,覆盖数据标注、模型训练全流程。 三、数据集优势 多任务适配性: 同时包含目标检测(边界框)与实例分割(多边形)标注,支持两种计算机视觉任务联合训练。 高类别完备性: 覆盖15种全球主要经济水果,包含常见热带水果(如芒果、菠萝)与温带水果(如苹果、梨)。 真实场景多样性: 数据采集涵盖果园、仓储、运输等多场景,包含果实重叠、枝叶遮挡、不同成熟度等实际工况。 标注专业性强: 所有标注经过农业专家校验,确保果实边界的精确标注,特别针对易混淆品种(如柑橘类)提供区分标注。 算法兼容度高: YOLO格式可直接应用于主流深度学习框架(YOLOv5/v7/v8、MMDetection等),

    HikariCP-java7-2.4.12.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    jetty-http-9.4.11.v20180605.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    基于ICA曲线峰值与高斯过程回归的电池SOH估算方法及其应用

    内容概要:本文详细介绍了基于ICA曲线峰值和高斯过程回归的电池SOH(State of Health)估算方法。首先,通过绘制电池容量增量曲线并进行卡尔曼滤波,提取出ICA曲线的峰值作为健康特征。接着,使用高斯过程回归建立电池状态估计模型,以ICA曲线峰值为输入,SOH为输出进行训练。该方法结合了电池充放电行为特征和先进机器学习技术,适用于电动汽车和移动设备的电池性能评估。文中还提供了具体的代码实现指导,包括数据预处理、IC曲线绘制、卡尔曼滤波和高斯过程回归模型的构建。 适合人群:从事电池管理系统研究的技术人员、电动汽车和移动设备制造商的研发人员、对电池健康管理感兴趣的科研工作者。 使用场景及目标:① 提供一种有效的电池SOH估算方法,提高电池性能评估的准确性;② 探索ICA曲线峰值与高斯过程回归在电池健康管理中的应用潜力;③ 为相关领域的研究人员提供实践案例和技术支持。 其他说明:该方法不仅有助于电池性能和寿命的评估与优化,也为未来的电池管理技术发展提供了新的思路。

    基于西门子PLC与组态王的八层电梯控制系统设计及动画实现

    内容概要:本文详细介绍了基于西门子S7-1200 PLC和组态王软件平台的八层电梯控制系统的设计与实现。主要内容涵盖电梯控制逻辑、硬件选型(如SM1223 IO模块)、关键控制算法(如格雷码处理、位置判断梯形图)以及组态王中的动画效果实现方法。文中还讨论了门机控制的安全互锁机制,并分享了一些实用技巧,如通过VBS脚本实现电梯轿厢平滑移动、利用按钮颜色动态变化来减少IO点占用等。 适合人群:从事工业自动化领域的工程师和技术人员,特别是对PLC编程和SCADA系统有一定了解的人群。 使用场景及目标:适用于需要理解和掌握现代电梯控制系统设计原理及其具体实施细节的专业人士。目标是帮助读者深入了解从硬件选型到软件编程的完整流程,提高实际项目开发能力。 阅读建议:建议读者结合实际工程案例进行学习,在理解理论的同时注重实践操作,尤其是对于梯形图编程、VBS脚本编写及组态王配置部分应多加练习。

    风光柴储混合微电网储能电池系统互补能量管理Simulink模型分析

    内容概要:本文详细探讨了风光柴储混合微电网中储能电池系统的互补能量管理Simulink模型。首先介绍了风光柴储混合微电网的概念及其组成部分,强调了储能电池系统在平衡供需和平滑输出方面的重要作用。接着阐述了如何使用Simulink构建包含风力、太阳能、柴油发电和储能电池等模块的仿真模型,涉及数据采集与处理、先进控制算法的设计以及仿真实验的验证。最后指出,该模型有助于提高微电网的供电可靠性、经济性,并促进可再生能源的发展。 适合人群:从事微电网研究、可再生能源开发及相关领域的科研人员和技术工程师。 使用场景及目标:适用于希望深入了解风光柴储混合微电网储能电池系统互补能量管理机制的研究者,旨在帮助他们掌握Simulink建模方法,提升微电网的性能。 其他说明:文中提到的Simulink模型不依赖任何特定版本的Matlab,但需要注意的是,该模型并不兼容所有版本的Matlab。

    基于Matlab的并网逆变器VSG预同步控制仿真模型:结合三相准PR控制、PWM与锁相环技术

    内容概要:本文详细介绍了基于Matlab的并网逆变器VSG预同步控制仿真模型的设计与实现。主要内容涵盖VSG核心算法、预同步控制模块、电流双环控制以及锁相环和三相准PR控制的应用。文中提供了具体的MATLAB/Simulink代码片段,如VSG转动方程、预同步控制中的相位差补偿、准PR控制器的离散化实现等。此外,还提到了一些仿真过程中需要注意的问题,如PWM载波频率限制、初始相位差设置和并网瞬间电流冲击等问题。附有相关参考文献,帮助读者深入理解VSG预同步控制的技术背景。 适合人群:电力电子领域的初学者和技术爱好者,尤其是对并网逆变器和VSG控制感兴趣的读者。 使用场景及目标:适用于希望深入了解并网逆变器VSG预同步控制机制的研究人员和工程师。通过本模型可以掌握VSG控制的基本原理及其在实际应用中的实现方法,解决并网仿真的同步难题。 其他说明:文中提供的仿真模型可以在GitHub上获取,方便读者进行实验和验证。后续计划探讨VSG的黑启动技术,进一步扩展研究范围。

    commons-collections-2.1.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    25kHz二阶低通滤波器仿真

    25kHz二阶低通滤波器仿真

Global site tag (gtag.js) - Google Analytics