MSCBSC 移动通信论坛
搜索
登录注册
网络优化工程师招聘专栏 4G/LTE通信工程师最新职位列表 通信实习生/应届生招聘职位

  • 阅读:8857
  • 回复:39
一步一步打造NSN设备专属putty
WWWSpider
初级会员



 发短消息    关注Ta 

积分 346
帖子 69
威望 7914 个
礼品券 0 个
专家指数 0
注册 2007-9-12
专业方向  烹饪和钓鱼
来自 兰州
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2012-06-12 00:33:57  只看楼主 
很早就有个打造自己专用终端软件的想法,但是一直懒+忙。
最近听说S15之后tang乱乎了,hit也乱乎了,putty和securecrt这么标准的telnet终端也乱乎了。Wireshark抓包分析后乱乎非软件之过,CRLF之过,!#¥%!#@!%……!#¥。
想用这些东西继续使的配置如下:
tang:没法改,除非有源代码。
hit:set configuation的时候,去掉Terminal页面的【Autowap】即可。
securecrt:建立连接向导里面没这一项,建立后在连接名上面点右键,在终端->仿真->模式里面勾选【新行模式】即可。
putty:Terminal选项里面勾选【Implicit CR in every LF】即可
现决定从putty修改开始,putty是Simon Tatham大牛力作,该大牛也是NASM之作者,其功力炉火纯青。
putty是开放源代码软件,全部采用ANSI C编写,写函数库容易,实现界面复杂。putty光UI部分估计就几千行代码(putty有界面吗?),不像VB,C++,Delphi,c#之类就像画图一样,但是有个好处就是效率极高。
遂努力回忆一下上学时候学的三脚猫C语言功夫,睁大眼睛看了下代码,结构清晰,代码如行云流水一般,大牛就是大牛啊。大牛保佑此次修改之旅顺利。
目前有了一些想法,也实现了一点点。怕自己懒,算是写篇日记与诸位分享,同时也是鞭策自己。
本文章将先一步一步提出想法,然后用代码实现。
如果想法有不对之处请指正,若是修改过程中遇到困难,还请各位懂C语言的不吝赐教。
扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“LTBPS”免费领取《《中国联通5G终端白皮书》
  • 2、回复“ZGDX”免费领取《中国电信5G NTN技术白皮书
  • 3、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 4、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 5、回复“5GX3”免费领取《 R16 23501-g60 5G的系统架构1
  • 6、回复“iot6”免费领取《【8月30号登载】物联网创新技术与产业应用蓝皮书——物联网感知技术及系统应用
  • 7、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书
  • 8、回复“IM6G”免费领取《6G典型场景和关键能力白皮书
  • 共获得 1 次点评 我要点评

    • kulin 威望 +10 个
      · 加分,很好的文章 详细.. 发表与:2012-7-12 20:32:26
     
    [充值威望,立即自动到帐] [VIP贵宾权限+威望套餐] 另有大量优惠赠送活动,请光临充值中心
    充值拥有大量的威望和最高的下载权限,下载站内资料无忧
    WWWSpider
    初级会员



     发短消息    关注Ta 

    积分 346
    帖子 69
    威望 7914 个
    礼品券 0 个
    专家指数 0
    注册 2007-9-12
    专业方向  烹饪和钓鱼
    来自 兰州
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-12 00:43:22  只看楼主 
    技术问题,回答得专家指数,快速升级
    初步想法:
    一)兼容NSN终端的使用习惯
    连接配置时:默认采用的是ssh,修改为默认就是telnet;默认的scrollbuffer是200行(也就是除了界面上的,向回拉保留200行)改成2000行。光标默认不闪动,改为闪动,并且Ctrl+A后变成插入光标,再按一下变回来,或者命令执行完自动回来。默认鼠标右键就是粘贴(这可不好,要是剪贴板里面很多东西那就一次全发到设备里面了),改成出现功能菜单。默认窗口太小,修改成靠桌面右侧,比整个窗口低一点,宽度自动计算。
    以上功能基本实现了。测试通过发源代码。

    [ 本帖最后由 WWWSpider 于 2012-6-12 00:46 编辑 ]

    共获得 1 次点评 我要点评

    • kulin 威望 +10 个
      · 加分,很好的文章 详细.. 发表与:2012-7-12 20:32:49
     
    [立即成为VIP会员,百万通信专业资料立即下载,支付宝、微信付款,简单、快速!]
    hblyc
    高级会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    公益·慈善勋章   纪念勋章·九周年  
    积分 2261
    帖子 448
    威望 41335 个
    礼品券 22 个
    专家指数 21
    注册 2011-9-4
    专业方向  系统工程师、项目经理
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-12 01:03:19  QQ
    已经整出来了吗 期待大作啊

    对本帖内容的看法? 我要点评

     
    最新通信职位:广东通信人才网 | 北京通信人才网 | 上海通信人才网 | 南京通信人才网 | 西安通信人才网 | 重庆通信人才网 | 中国通信人才网
    WWWSpider
    初级会员



     发短消息    关注Ta 

    积分 346
    帖子 69
    威望 7914 个
    礼品券 0 个
    专家指数 0
    注册 2007-9-12
    专业方向  烹饪和钓鱼
    来自 兰州
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-12 07:50:27  只看楼主 


    QUOTE:
    原帖由 hblyc 于 2012-6-12 01:03:19 发表
    已经整出来了吗 期待大作啊

    想整出来还不容易,主要是享受整的过程。

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    WWWSpider
    初级会员



     发短消息    关注Ta 

    积分 346
    帖子 69
    威望 7914 个
    礼品券 0 个
    专家指数 0
    注册 2007-9-12
    专业方向  烹饪和钓鱼
    来自 兰州
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-12 10:12:09  只看楼主 
    第一步修改默认值以适合DX200平台。
    注:本人在项目预处理器中定义了一个DX200。去掉DX200定义后,将是100%原始putty,加上DX200后将适合DX200平台使用。
    在项目中搜索DX200字符,就是我修改的代码部分。
    修改默认协议为Telnet
    <be_all_s.c>
    增加
    #ifdef DX200
    #define TELNET_DEFAULT
    #endif
    修改字符光标(caret)闪动
    <setting.c>
    #ifdef DX200
    gppi(sesskey, "BlinkCur", 1, &cfg->blink_cur);
    #else
    gppi(sesskey, "BlinkCur", 0, &cfg->blink_cur);
    #endif
    修改默认缓冲区为2000
    <setting.c>
    #ifdef DX200
    gppi(sesskey, "ScrollbackLines", 2000, &cfg->savelines);
    #else
    gppi(sesskey, "ScrollbackLines", 200, &cfg->savelines);
    #endif
    修改S15兼容
    <setting.c>
    #ifdef DX200
    gppi(sesskey, "LFImpliesCR", 1, &cfg->lfhascr);
    #else
    gppi(sesskey, "LFImpliesCR", 0, &cfg->lfhascr);
    #endif
    修改默认颜色(原始putty字符是灰色,背景是黑色)
    <setting.c>
    #ifdef DX200
    {
    for (i = 0; i < 22; i++) {
    static const char *const defaults[] = {
    "0,0,0", "255,255,255", "255,255,255", "85,85,85", "0,0,0",
    "0,255,0", "0,0,0", "85,85,85", "187,0,0", "255,85,85",
    "0,187,0", "85,255,85", "187,187,0", "255,255,85", "0,0,187",
    "85,85,255", "187,0,187", "255,85,255", "0,187,187",
    "85,255,255", "187,187,187", "255,255,255"
    };
    char buf[20], buf2[30];
    int c0, c1, c2;
    sprintf(buf, "Colour%d", i);
    gpps(sesskey, buf, defaults, buf2, sizeof(buf2));
    if (sscanf(buf2, "%d,%d,%d", &c0, &c1, &c2) == 3) {
    cfg->colours[0] = c0;
    cfg->colours[1] = c1;
    cfg->colours[2] = c2;
    }
    }
    }
    #else
    for (i = 0; i < 22; i++) {
    static const char *const defaults[] = {
    "255,255,255", "255,255,255", "0,0,0", "85,85,85", "0,0,0",
    "0,255,0", "0,0,0", "85,85,85", "187,0,0", "255,85,85",
    "0,187,0", "85,255,85", "187,187,0", "255,255,85", "0,0,187",
    "85,85,255", "187,0,187", "255,85,255", "0,187,187",
    "85,255,255", "187,187,187", "255,255,255"
    };
    char buf[20], buf2[30];
    int c0, c1, c2;
    sprintf(buf, "Colour%d", i);
    gpps(sesskey, buf, defaults, buf2, sizeof(buf2));
    if (sscanf(buf2, "%d,%d,%d", &c0, &c1, &c2) == 3) {
    cfg->colours[0] = c0;
    cfg->colours[1] = c1;
    cfg->colours[2] = c2;
    }
    }
    #endif
    修改鼠标为Windows类型鼠标,右键不是粘贴(点一下右键剪贴板内容自动跑进设备了,危险),而是出现右键菜单。
    设想以后新增加功能全部放到这个右键菜单里面
    <setting.c>
    #ifdef DX200
    gppi(sesskey, "MouseIsXterm", 2, &cfg->mouse_is_xterm);
    #else
    gppi(sesskey, "MouseIsXterm", 0, &cfg->mouse_is_xterm);
    #endif
    修改窗口默认出现大小,位置。原始的太小,而且位置也不太好,现在全是宽屏,就放到右边吧。
    为了不影响后面其它程序的窗口,露出<关闭,最大化,最小化>的系统区域。
    <windows.c>
    #ifdef DX200
    {
    RECT wa;
    SystemParametersInfo(SPI_GETWORKAREA, 0, (PVOID)&wa, 0);
    guess_width = extra_width + font_width * (term->cols+2);
    guess_height =wa.bottom- wa.top;
    SetWindowPos(hwnd, NULL, wa.right-guess_width, extra_height, guess_width, guess_height-extra_height,
    SWP_NOREDRAW | SWP_NOZORDER);
    }
    #else
    guess_width = extra_width + font_width * term->cols;
    guess_height = extra_height + font_height * term->rows;
    SetWindowPos(hwnd, NULL, 0, 0, guess_width, guess_height,
    SWP_NOMOVE | SWP_NOREDRAW | SWP_NOZORDER);
    #endif
    去掉窗口标题栏的菜单,因为已经将窗口上面的右键放出来了。
    #ifndef DX200
    popup_menus[SYSMENU].menu = GetSystemMenu(hwnd, FALSE);
    #endif
    目前遗留问题
    当窗口的字体等变化时,那么窗口的大小没有重新计算位置,这个完全不影响,手工调整也行,但是不完美。下一步增加。
    目前已经可以使了,增加设备(connection)时候,填写一个IP和名字,save就行了,非常舒服。下一步增加自动登录,自动保存LOG,执行批命令。

    [ 本帖最后由 WWWSpider 于 2012-6-12 10:15 编辑 ]

    对本帖内容的看法? 我要点评

     
    最新通信职位:广东通信人才网 | 北京通信人才网 | 上海通信人才网 | 南京通信人才网 | 西安通信人才网 | 重庆通信人才网 | 中国通信人才网
    WWWSpider
    初级会员



     发短消息    关注Ta 

    积分 346
    帖子 69
    威望 7914 个
    礼品券 0 个
    专家指数 0
    注册 2007-9-12
    专业方向  烹饪和钓鱼
    来自 兰州
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-12 10:30:43  只看楼主 
    putty.zip (294.53 KB)

    这个就可以使用了,已经很舒服了。填个IP,名字就好了,但是要自己敲用户名,密码。

    [ 本帖最后由 WWWSpider 于 2012-6-12 12:00 编辑 ]

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    vernon1988
    中级会员



     发短消息    关注Ta 

    积分 1087
    帖子 54
    威望 1341 个
    礼品券 0 个
    专家指数 -4
    注册 2009-6-17
    专业方向  GSM
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-12 11:30:11 
    学习了楼主很强大

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    yhl1840
    初级会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    积分 311
    帖子 62
    威望 5290 个
    礼品券 15 个
    专家指数 0
    注册 2009-7-24
    专业方向  通信工程
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-12 19:52:00 
    牛的太太,

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    yangjianxuan
    论坛元老
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    公益·慈善勋章  
    积分 28596
    帖子 3110
    威望 28214 个
    礼品券 40 个
    专家指数 20
    注册 2006-7-1
    专业方向  无线网优
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-13 14:08:53  QQ
    楼主,自动登录功能开始弄进去吧!

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    Allen87
    中级会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    积分 523
    帖子 104
    威望 18773 个
    礼品券 8 个
    专家指数 3
    注册 2012-5-26
    专业方向  无线网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-15 13:19:26 
    putty听说过,但是一直没见过,做什么的都不清楚

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    WWWSpider
    初级会员



     发短消息    关注Ta 

    积分 346
    帖子 69
    威望 7914 个
    礼品券 0 个
    专家指数 0
    注册 2007-9-12
    专业方向  烹饪和钓鱼
    来自 兰州
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-15 13:59:52  只看楼主 


    QUOTE:
    原帖由 Allen87 于 2012-6-15 13:19:26 发表
    putty听说过,但是一直没见过,做什么的都不清楚

    类似于SecureCRT,但是免费,开放源代码,纯C语言写成的。功能太多了,支持ssh,串口,反向代理什么的,性能好的帅的一塌糊涂。同样EAO比别的快
    HIT目录下BIN下面就带着呢。

    [ 本帖最后由 WWWSpider 于 2012-6-15 14:09 编辑 ]

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    WWWSpider
    初级会员



     发短消息    关注Ta 

    积分 346
    帖子 69
    威望 7914 个
    礼品券 0 个
    专家指数 0
    注册 2007-9-12
    专业方向  烹饪和钓鱼
    来自 兰州
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-15 14:06:26  只看楼主 


    QUOTE:
    原帖由 yangjianxuan 于 2012-6-13 14:08:53 发表
    楼主,自动登录功能开始弄进去吧!

    今天中午没什么事情,弄好了自动登录。

    Session页面填好IP,SavedSessions下面写个名字
    connection->telnet页面下填上用户名 密码。
    再回到session页面点save,记得save哦。

    以后双击名字就进去了。
    开log就是在session页面logging选成printable,写个文件名,支持年月日的和hostname.

    putty.zip (295.16 KB)
    下一步改写右键菜单,去掉一般没用的功能。
    增加批命令执行功能。
    增加切设备功能(CHANGE SESSION),他的只能NEW SESSION

    [ 本帖最后由 WWWSpider 于 2012-6-15 17:31 编辑 ]

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    WWWSpider
    初级会员



     发短消息    关注Ta 

    积分 346
    帖子 69
    威望 7914 个
    礼品券 0 个
    专家指数 0
    注册 2007-9-12
    专业方向  烹饪和钓鱼
    来自 兰州
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-15 14:08:15  只看楼主 
    有人感兴趣要源代码的吗?用Visual C++ 2010 Express就可以直接编译的。
    如果没人感兴趣,我就等写完了(我自己认为满意了)再放源代码。
    到时候有什么人有特殊需求的自己改。

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    WWWSpider
    初级会员



     发短消息    关注Ta 

    积分 346
    帖子 69
    威望 7914 个
    礼品券 0 个
    专家指数 0
    注册 2007-9-12
    专业方向  烹饪和钓鱼
    来自 兰州
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-06-17 09:22:51  只看楼主 
    putty.zip (294.1 KB)

    增加自动登录,右键快速切换设备,开启新设备连接。

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    迷茫中走来
    金牌会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    财富勋章·小财主  
    积分 7642
    帖子 1507
    威望 19376 个
    礼品券 10 个
    专家指数 107
    注册 2011-6-14
    专业方向  一辈子只做一件事
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-07-02 11:14:09 
    楼主 膜拜你...

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料

    快速回复主题    
    标题
    内容
     上传资料请点左侧【添加附件】

    当前时区 GMT+8, 现在时间是 2024-04-23 21:34:56
    渝ICP备11001752号  Copyright @ 2006-2016 mscbsc.com  本站统一服务邮箱:mscbsc@163.com

    Processed in 0.642628 second(s), 35 queries , Gzip enabled
    TOP
    清除 Cookies - 联系我们 - 移动通信网 - 移动通信论坛 - 通信招聘网 - Archiver