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

📄 gsmsiexfer.cc

📁 对各种手机进行编程的工具包源码gsmlib 1.9版本。
💻 CC
字号:
// *************************************************************************// * GSM TA/ME library// *// * File:    gsmsiexfer.cc// *// * Purpose: Siemens ME file transfer program// *// * Author:  Christian W. Zuckschwerdt  <zany@triq.net>// *// * Created: 2001-12-16// *************************************************************************#ifdef HAVE_CONFIG_H#include <gsm_config.h>#endif#include <gsmlib/gsm_nls.h>#include <string>#ifdef WIN32#include <gsmlib/gsm_win32_serial.h>#else#include <gsmlib/gsm_unix_serial.h>#include <unistd.h>#endif#if defined(HAVE_GETOPT_LONG) || defined(WIN32)#include <getopt.h>#endif#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <gsmlib/gsm_me_ta.h>#include <gsm_sie_me.h>#include <gsmlib/gsm_util.h>#include <gsmlib/gsm_sorted_phonebook.h>#include <iostream>using namespace std;using namespace gsmlib;#ifdef HAVE_GETOPT_LONGstatic struct option longOpts[] ={  {"xonxoff", no_argument, (int*)NULL, 'X'},  {"init", required_argument, (int*)NULL, 'I'},  {"destination", required_argument, (int*)NULL, 'd'},  {"source", required_argument, (int*)NULL, 's'},  {"baudrate", required_argument, (int*)NULL, 'b'},  {"type", required_argument, (int*)NULL, 't'},  {"subtype", required_argument, (int*)NULL, 'i'},  {"help", no_argument, (int*)NULL, 'h'},  {"version", no_argument, (int*)NULL, 'v'},  {"verbose", no_argument, (int*)NULL, 'V'},  {(char*)NULL, 0, (int*)NULL, 0}};#else#define getopt_long(argc, argv, options, longopts, indexptr) \  getopt(argc, argv, options)#endif// I f*ck up this file IO thing.// read binary object from stdinBinaryObject readBinaryFile(istream &ifs, string filename){  size_t size = 10000; // Bad coder, no biscuits!  BinaryObject bnr;  bnr._data = new unsigned char[size];  ifs.read(bnr._data, size);  bnr._size = ifs.gcount();  return bnr;}// read binary object from fileBinaryObject readFile(string filename){  // open the file  ifstream ifs(filename.c_str());  if (ifs.bad())    throw GsmException(stringPrintf(_("cannot open file '%s'"),                                    filename.c_str()),                       OSError);  // and read the file  return readBinaryFile(ifs, filename);}// read binary object from stdinBinaryObject readFile(bool fromStdin){  // read from stdin//  if (fromStdin)  return readBinaryFile(cin, (string)_("<STDIN>"));}// write binary object to filevoid writeBinaryFile(ostream &ofs, string filename, BinaryObject bnw){  // well just dump the data  ofs.write(bnw._data, bnw._size);}// write binary objectvoid writeFile(string filename, BinaryObject obj){  // open the file  ofstream ofs(filename.c_str());  if (ofs.bad())    throw GsmException(stringPrintf(_("cannot open file '%s'"),                                    filename.c_str()),                       OSError);  // and read the file  writeBinaryFile(ofs, filename, obj);}// write binary object to stdoutvoid writeFile(bool toStdout, BinaryObject obj){//  if (toStdout)  writeBinaryFile(cout, (string)_("<STDIN>"), obj);}// *** main programint main(int argc, char *argv[]){  try  {    // handle command line options    string destination;    string source;    string baudrate;    string type;    string subtype;    int subtypeN;    bool verbose = false;    string initString = DEFAULT_INIT_STRING;    bool swHandshake = false;    Ref<SieMe> sourceMeTa, destMeTa;    BinaryObject sourceObject;    int opt;    int dummy;    while((opt = getopt_long(argc, argv, "XI:s:d:b:hvVt:i:", longOpts,                             &dummy))          != -1)      switch (opt)      {      case 'X':        swHandshake = true;        break;      case 'I':        initString = optarg;        break;      case 'V':        verbose = true;        break;      case 't':        type = optarg;        break;      case 'i':        subtype = optarg;	subtypeN = atoi(optarg);        break;      case 'd':        destination = optarg;        break;      case 's':        source = optarg;        break;      case 'b':        baudrate = optarg;        break;      case 'v':        cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"),                                        VERSION, __DATE__) << endl;        exit(0);        break;      case 'h':        cerr << argv[0] << _(": [-b baudrate][-c][-d device or file][-h]"                             "[-I init string]\n"                             "  [-p phonebook name][-s device or file]"                             "[-t charset][-v]"                             "[-V][-y][-X]") << endl             << endl             << _("  -b, --baudrate    baudrate to use for device "                  "(default: 38400)")             << endl             << _("  -c, --copy        copy source entries to destination")             << endl             << _("  -d, --destination sets the destination device to "                  "connect \n"                  "                    to, or the file to write") << endl             << _("  -D, --destination-backend sets the destination backend")             << endl             << _("  -h, --help        prints this message") << endl             << _("  -i, --index       takes index positions into account")             << endl             << _("  -I, --init        device AT init sequence") << endl             << _("  -p, --phonebook   name of phonebook to use") << endl             << _("  -s, --source      sets the source device to connect to,\n"                  "                    or the file to read") << endl             << _("  -t, --charset     sets the character set to use for\n"                  "                    phonebook entries") << endl             << _("  -S, --source-backend sets the source backend")             << endl             << _("  -v, --version     prints version and exits") << endl             << _("  -V, --verbose     print detailed progress messages")             << endl             << _("  -X, --xonxoff     switch on software handshake") << endl             << _("  -y, --synchronize synchronize destination with source\n"                  "                    entries (destination is overwritten)\n"                  "                    (see gsmpb(1) for details)")             << endl << endl;        exit(0);        break;      case '?':        throw GsmException(_("unknown option"), ParameterError);        break;      }    // check if all parameters all present    if (destination == "" || source == "")      throw GsmException(_("both source and destination must be given"),                         ParameterError);    // start accessing source mobile phone or file    if (source == "-")      sourceObject = readFile(true);    else if (isFile(source))      sourceObject = readFile(source);    else    {      if (type == "")        throw GsmException(_("type be given"), ParameterError);      if (subtype == "")        throw GsmException(_("subtype be given"), ParameterError);      sourceMeTa = new SieMe(new#ifdef WIN32                            Win32SerialPort#else                            UnixSerialPort#endif                            (source,                             baudrate == "" ? DEFAULT_BAUD_RATE :                             baudRateStrToSpeed(baudrate), initString,                             swHandshake));      sourceObject = sourceMeTa->getBinary(type, subtypeN);    }    // make sure destination.c_str file exists    if (destination != "")    {      try      {        ofstream f(destination.c_str(), ios::out | ios::app);      }      catch (exception)      {      }    }    // start accessing destination mobile phone or file    if (destination == "-")      writeFile(true, sourceObject);    else if (isFile(destination))      writeFile(destination, sourceObject);    else    {      if (type == "")        throw GsmException(_("type must be given"), ParameterError);      if (subtype == "")        throw GsmException(_("subtype must be given"), ParameterError);      destMeTa = new SieMe(new #ifdef WIN32                          Win32SerialPort#else                          UnixSerialPort#endif                          (destination,                           baudrate == "" ? DEFAULT_BAUD_RATE :                           baudRateStrToSpeed(baudrate), initString,                           swHandshake));      destMeTa->setBinary(type, subtypeN, sourceObject);    }  }  catch (GsmException &ge)  {    cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl;    return 1;  }  return 0;}

⌨️ 快捷键说明

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