⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 args.c

📁 linux下的一个串口调试程序的源代码
💻 C
字号:
#include <stdio.h>              /* printf */#include <limits.h>             /* CHAR_MAX */#include <getopt.h>             /* getopt_long */#include <stdlib.h>             /* atoi */#include <string.h>             /* strrchr */#include <ctype.h>              /* toupper */#include "types.h"#include "args.h"static void     usage (INT32 status, const char *program_name, int eargc);static void     version (FILE * stream, const P_PACKAGE_INFO pPkgInfo);void parse_arguments (int argc, char **argv, int eargc,                      P_PACKAGE_INFO pPkgInfo, P_PORT_INFO pPortInfo){    enum LONG_OPTIONS {        ARG_HELP = CHAR_MAX + 1,        ARG_VERSION    };    INT32           c;    INT32           option_index = 0;    static struct option long_options[] = {        {"baudrate", required_argument, 0, 'b'},        {"cs", required_argument, 0, 'c'},        {"debug", no_argument, 0, 'd'},        {"echo", no_argument, 0, 'e'},        {"flowcontrol", required_argument, 0, 'f'},        {"tty", required_argument, 0, 't'},        {"stopbit", required_argument, 0, 's'},        {"parity", required_argument, 0, 'p'},        {"help", no_argument, 0, ARG_HELP},        {"version", no_argument, 0, ARG_VERSION},        {0, 0, 0, 0}    };    static const char *short_options = "b:c:def:p:s:t:";    while (-1 != (c = getopt_long (argc, argv, short_options, long_options,                                   &option_index))) {        switch (c) {        case 0:            break;        case 'b':            pPortInfo->baudrate = atoi (optarg);            break;        case 'c':            pPortInfo->databit = atoi (optarg);            break;        case 'd':            pPortInfo->debug = 1;            break;        case 'e':            pPortInfo->echo = 1;            break;        case 'f':            pPortInfo->fctrl = atoi (optarg);            break;        case 'p':            pPortInfo->parity = toupper (optarg[0]);            break;        case 's':            pPortInfo->stopbit = optarg;            break;        case 't':            pPortInfo->port = atoi (optarg);            break;        case ARG_HELP:            usage (0, pPkgInfo->program_name, eargc);            break;        case ARG_VERSION:            version (stdout, pPkgInfo);            break;        default:            break;        }    }    if (argc < optind + eargc) {        usage (1, pPkgInfo->program_name, eargc);    }}/* The name this program was run with. */static void usage (INT32 status, const char *program_name, int eargc){    if (status != 0) {        fprintf (stderr, "Try `%s --help' for more information.\n",                 program_name);        exit (status);    }    printf ("Usage: %s [OPTION] %s\n", program_name,            eargc ? "SOURCE" : "");    printf ("\n\  -b, --baudrate=BAUDRATE   set baudrate to BAUDRATE, default:115200\n\  -c, --CS=DATABIT          set databit, 5, 6, 7, 8; default:8\n\  -d, --debug               set debug mode\n\  -e, --echo                set echo mode\n\  -f, --flowcontrol         set flow control, default: 1\n\                            0: none, 1: hardware, 2: software\n\  -p, --parity=PARITY       set parity to PARITY, 'N': no parity, 'E':even\n\                            'O': odd, default: 'N' (no parity)\n\  -s, --stopbit=STOPBIT     set stopbit, 1, 1.5, 2; default: 1\n\  -t, --tty=TTY             set tty to TTY, default: 0, /dev /ttyS0\n\                            /dev/ttyS0 equals COM1 in DOS\n\      --help                display this help and exit\n\      --version             output version information and exit\n\  Examples:\n  %s --baudrate 115200 --tty=1 --debug %s \n", program_name, eargc ? "*.c" : "");    puts ("\nReport bugs to <ding_baohua@yahoo.com>.");    exit (status);}static void version (FILE * stream, const P_PACKAGE_INFO pPkgInfo){    char           *version_etc_copyright =        _("Copyright (C) 2002 Paul Studio.");    if (pPkgInfo->program_name)        fprintf (stream, "%s (%s) %s\n", pPkgInfo->program_name,                 pPkgInfo->package, pPkgInfo->version);    else        fprintf (stream, "%s %s\n", pPkgInfo->package, pPkgInfo->version);    fprintf (stream, _("Written by %s.\n"), pPkgInfo->authors);    putc ('\n', stream);    fputs (version_etc_copyright, stream);    putc ('\n', stream);    fputs (_("\This is free software; see the source for copying conditions.  There is NO\n\warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), stream);    exit (0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -