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

📄 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 "vardef.h"#include "args.h"#define VERSION "0.03"Arguments       args = {    "serfile",                  /* program */    "serutils",                 /* package */    VERSION,                    /*version */    "Paul Dean",                /* author */    115200,                     /* baudrate */    NULL,                       /* device */    0,                          /* debug */    0,                          /* echo */    0,                          /* port */    8,                          /* databit */    "1",                        /* stopbit */    'N'};void parse_arguments (int argc, char **argv){    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'},        {"databit", required_argument, 0, 'c'},        {"stopbit", required_argument, 0, 's'},        {"device", required_argument, 0, 'd'},        {"port", required_argument, 0, 'p'},        {"parity", required_argument, 0, 'P'},        {"DEBUG", no_argument, 0, 'D'},        {"echo", no_argument, 0, 'e'},        {"help", no_argument, 0, ARG_HELP},        {"version", no_argument, 0, ARG_VERSION},        {0, 0, 0, 0}    };    static const char *short_options = "b:c:d:p:s:P:De";    while (-1 != (c = getopt_long (argc, argv, short_options, long_options,                                   &option_index))) {        switch (c) {        case 0:            break;        case 'b':            args.baudrate = atoi (optarg);            break;        case 'c':            args.databit = atoi (optarg);            break;        case 'd':            args.device = strrchr (optarg, 'S');            if (NULL == args.device) {                break;            }            args.device++;            sscanf (args.device, "%d", &args.port);            break;        case 'p':            args.port = atoi (optarg);            break;        case 's':            args.stopbit = optarg;            break;        case 'P':            args.parity = toupper (optarg[0]);            break;        case 'D':            args.debug = 1;            break;        case 'e':            args.echo = 1;            break;        case ARG_HELP:            usage (0, args.program_name);            break;        case ARG_VERSION:            version (stdout, args.program_name, args.package, args.version,                     args.authors);            break;        default:            break;        }    }    if (argc <= optind) {        usage (1, args.program_name);    }}/* The name this program was run with. */void usage (INT32 status, const char *program_name){    if (status != 0)        fprintf (stderr, "Try `%s --help' for more information.\n",                 program_name);    else {        printf ("Usage: %s [OPTION]\n", program_name);        printf ("Send files via serial port.\n\\n\  -b, --baudrate=BAUDRATE   set baudrate to BAUDRATE, default:115200\n\  -c, --CS=DATABIT\n\      --databit=DATABIT     set databit, 5, 6, 7, 8; default:8\n\  -d, --device=DEVICE       set device to DEVICE, default: /dev/ttyS0 [COM1]\n\                            if [--port] has been set, [--device] is ignored.\n\  -p, --port=PORT           set port to PORT, default: 0 [COM1]\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\  -D, --DEBUG               set debug mode\n\  -e, --echo                set echo mode\n\      -- help display this help and exit \n\      -- version output version information and exit \n\Examples:\n\  %s -b 38400 --port 1 *.c --DEBUG\n\  %s * --debug --device=/dev/ttyS0\n", program_name, program_name);        puts ("\nReport bugs to <ding_baohua@yahoo.com>.");    }    exit (status);}void version (FILE * stream, const char *program_name,              const char *package, const char *version,              const char *authors){    char           *version_etc_copyright =        _("Copyright (C) 2002 Paul Studio.");    if (program_name)        fprintf (stream, "%s (%s) %s\n", program_name, package, version);    else        fprintf (stream, "%s %s\n", package, version);    fprintf (stream, _("Written by %s.\n"), 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 + -