CN105607904A - 基于Linux平台的通信软件的快速开发框架及使用方法 - Google Patents
基于Linux平台的通信软件的快速开发框架及使用方法 Download PDFInfo
- Publication number
- CN105607904A CN105607904A CN201510952542.3A CN201510952542A CN105607904A CN 105607904 A CN105607904 A CN 105607904A CN 201510952542 A CN201510952542 A CN 201510952542A CN 105607904 A CN105607904 A CN 105607904A
- Authority
- CN
- China
- Prior art keywords
- thread
- module
- timer
- message
- daily record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/316—Aspect-oriented programming techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于Linux平台的通信软件的快速开发框架及其使用方法,该框架包括公共支撑库和多线程开发框架,所述公共支撑库包括配置文件读写模块、分级打印模块、日志长时间保存模块、定时器管理模块和通用链表模块,所述多线程开发框架包括消息管理模块、线程池管理模块、线程自启动模块。本发明一方面包括了配置文件读写、分级打印、日志长期保存、高精度定时器、通用链表等实用的公共支撑功能,另一方面,包含设计了精妙的多线程开机按序启动机制,并提供了多线程间消息交互机制,很好的支持了各通信接口间消息交互。
Description
技术领域
本发明涉及一种基于Linux平台的通信软件的快速开发框架及使用方法,属于通信技术领域。
背景技术
由于Linux/Unix系统的稳定性和开源特性,现在大量的通信设备都使用Linux或类
Linux操作系统,能更好的满足各种通信软件长时间不间断运行需求。现在很多通信软件运行于后台,无需界面,并要求交互实时性和高效性,所以大量通信软件基于C语言做开发。但是在Linux平台C项目开发过程中,开发人员会发现,该平台下缺少类似于微软系统强大的API函数库和MFC类库支撑,实际开发中来有诸多不便。如:没有提供易用的定时器功能,虽然系统包含alarm和select等函数,可实现定时功能,但使用复杂,且使用复杂,而在通信协议栈流程交互、状态机控制等过程中,定时器是广泛使用的;另在多线程开发中,消息队列和线程间收发消息交互方式使用广泛,Linux系统标准函数库,未提供消息队列交互,需开发人员自行实现。
还有一些功能是基于通信软件自身特性,所必备且可雷同的功能,但开发起来并不
简单,需花费大量人力做设计开发和调试验证。通信软件一般启动时按一定配置参数启动,然后不间断运行的,并区别于一些监控软件或有界面软件,此类软件可能没有图形化界面,运行于后台,采取定期维护或出现故障时,回溯日志来查找和定位故障的方法来维护的。
发明内容
为克服现有技术的不足,本发明提供了一种基于Linux平台的通信软件的快速开发框架及其使用方法。
本发明采取的技术方案之一是:
一种基于Linux平台的通信软件的快速开发框架,其包括公共支撑库和多线程开发框架,所述公共支撑库包括配置文件读写模块、分级打印模块、日志长时间保存模块、定时器管理模块和通用链表模块,所述多线程开发框架包括消息管理模块、线程池管理模块、线程自启动模块;
所述配置文件读写模块,用于实现配置文件读写功能,并封装成易使用的接口函数,模块内部使用文件读写、字符串处理、数字字符类型转换函数实现,供开发者调用;
所述分级打印模块,用于在日志打印时,按打印级别区分和控制日志输出;
所述日志长时间保存模块,用于保证软件运行状态可追溯,其依据时间和存储空间两条线,转存程序日志;
所述定时器管理模块,用于定时器管理,包括定时器管理结构初始化、定时器模块销毁、定时器设置、循环定时器设置、定时器中止和定时器轮询操作,实现精度达10ms以内的定时器操作;
所述通用链表模块,用于提供一套通用链表接口,供开发者使用;
所述消息管理模块,按照每个线程/任务,具有自身独用的一条消息队列,当其他线程给本线程发送消息时,即将该消息挂载到本线程的消息队列下,本线程/任务在线程执行函数中,定期轮询检测自身消息队列内是否有消息,若有则按照先进先出方式,接收后予以处理;
所述线程池管理模块,用于线程设计和划分,其包括线程是否启动标识位,线程/任务名称、线程运行函数、线程启动时间和线程启动参数;
所述线程自启动模块,该模块轮询线程池结构,按照是否启动运行的标志位,以及时间顺序,按序按要求启动设计好的各个用户线程。
进一步的,所述配置文件读写模块中配置项,以键值格式定义,以分号结束;配置文件支持多种注释方式,支持键值左右的空格符自动识别。
进一步的,所述分级打印模块提供8种打印级别,可随时修改打印级别,且各打印级别可任意组合输出。
进一步的,所述日志长时间保存模块依据时间和存储空间两条线,转存程序日志,当时间上满足一定条件时(如满10小时或1天),将日志转存至另一文件夹内,并以时间信息命名该日志文件,同时定期检测当前打印的日志文件大小,若超过一定大小(如10MB),则转存一次日志文件,在日志转存时,检测日志保存目录的总大小,若超过一定大小(如1GB),则覆盖最早的文件空间,不分配新的存储空间。
进一步的,所述定时器管理模块的内部采用互斥锁方式,满足多线程同时操作使用,其定时方式是将用户定时的时间,全部转化为系统tick计数,按超时顺序,按序管理定时器链表,通过快节奏的定期轮询方式,查看当前有哪些定时器超时,并发送超时消息。
本发明采取的技术方案之二是:
一种基于权利要求1中开发框架的使用方法,其特征在于包括如下步骤:
步骤1:设计好自身项目所需的配置项,按键值格式写好配置文件和程序内配置结构体;
步骤2:做好线程划分工作,设计好线程间交互数据,即各种消息的消息名和数据定义,写好用户自身业务各线程的线程初始化、线程循环;
步骤3:开始使用快速开发框架,完成程序开发;首先程序启动初期,调用配置文件读写模块接口,读取整个配置文件信息,到程序设计的结构体中;
步骤4:调用分级打印模块接口,设置打印输出文件;
步骤5:调用分级打印模块接口,设置程序的输出打印级别,
步骤6:调用日志长时间保存模块接口,使程序日志可永久保存,每一个程序日志文件,有最大字节数要求,且都按时间信息命名,以利于回溯管理;
步骤7:调用定时器模块接口,完成定时器模块初始化;
步骤8:调用消息管理模块接口,完成消息管理模块初始化,以便后续各业务线程启动后,完成线程间消息通信交互;
步骤9:调用线程池管理模块接口,完成线程池模块数据的初始化和设置;
步骤10:调用线程自启动模块接口,完成定时器线程、用户设计的各个业务线程的自动化的启动和运行;
步骤11:写一个while(1)循环,循环内调用sleep或者usleep函数,让主线程开始空转。
本发明的有益效果是:本发明在Linux/Unix平台C语言开发过程中,具有适用性,且运行高效可靠,大大减少开发工作量。其包括了配置文件读写、分级打印控制、日志长期保存、高精度定时器、通用链表等实用的公共支撑功能,另一方面,运用线程池技术,本发明设计了精妙的多线程开机按序启动机制,并提供了多线程间消息交互机制,很好的支持了各通信接口间消息交互。
附图说明
图1为本发明在通信设备中位置示意图。
图2为本发明模块构成示意图。
图3为本线程自启动模块处理流程图。
图4为本发明软件快速框架具体应用过程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
本发明的快速开发框架,在整个通信设备与软件研发过程中的地位如图1所示,本快速开发框架,是基于对Linux/Unix类操作系统标准库函数的封装应用,可使用gcc或arm_linux-gcc(ARM平台)编译器编译运行,为使用者封装提供了大量可重用的和基础功能开发接口,同时提供了一套多线程启动与交互机制,为使用者提供便利,使使用者无需专注于外围模块和一些公共功能的开发,而专心于具体的通信业务和流程开发。
本开发框架由两大块组成,同时又分为多个子模块。通信软件常用必备功能的封装,我们称之为公共支撑库;多线程按序自启动和交互机制,我们称之为多线程开发框架,如下图2所示。其中公共支撑库由配置文件读写模块、分级打印模块、日志长时间保存模块、定时器管理模块、通用链表模块组成,而多线程开发框架包括消息管理模块、线程池管理模块、线程自启动模块,使多线程开发变得简单易行。
(1)配置文件读写模块
在一些简易程序中,软件的启动参数,可依靠main函数携带的入参方式解决,但在实践的软件项目开发中,由于程序启动所需配置项或参数较多,此方法变得并不现实。一般的,大家都依靠读取配置文件中配置项方式解决。
本框架实现了配置文件读写功能,并封装成易使用的接口函数,模块内部使用文件读写、字符串处理、数字字符类型转换等函数实现,供开发者调用。
配置文件中配置项,以键值格式定义,以分号结束,即key1=value1;配置文件支持多种注释方式,支持键值左右的空格符自动识别。如下:
/*配置文件,模板*/
my_cfg:
{
version=1.0.0;/*softversion*/
if_name=eth0;//netinterfacename
local_ip=172.16.54.88;#localip
local_port_udp=1001;
peer_port_udp=1002;
debug_level=7;
debug_output=log;
log_backup_interval=36000;
log_backup_dir=log_backup;
};
用户可自定义相应的配置项结构体,用于存储从配置文件读入的键的值。如:
/*configurationstruct*/
typedefstruct
{
charversion[COMMON_STR_LEN];;
charif_name[COMMON_STR_LEN];
charlocal_ip[IP_ADDR_LEN];
uint16local_port_udp;
uint16peer_port_udp;
uint8debug_level;
chardebug_output[FILENAME_MAXLEN];
uint32log_backup_interval;
charlog_backup_dir[FILENAME_MAXLEN];
}Cfg_t;
开发者可在程序启动时调用配置文件读入接口,读入各配置项,接口如下:
intconfig_file_read(Cfg_t*cfg_p,constchar*cfg_filename);
(2)分级打印模块
程序根据不同的情况,需打印不同级别的log,有时仅需程序运行错误信息,有时需
告警信息,有时还需要用户级别的日志,甚至支持调试用的日志,所以在日志打印时,按打印级别区分和控制日志输出,是很有必要的。
一般的,将程序打印级别、日志保存目录、文件名,可指定在配置文件中,在系统启动时,从配置文件读入此信息,根据此信息,初始化打印输出文件和输出级别。本开发框架默认提供8种打印级别,可随时修改打印级别,且各打印级别可任意组合输出。
如配置文件中设置debug_level=7;二进制按位表示,即00000111,即打开错误打印、告警打印、一般用户打印日志,用于以后维护。打印输出位置,可以为stdout,即可输出到屏幕,亦可保存到本地具体某目录某文件中。
每条打印输出头部,包含打印时间信息、打印级别、打印所在程序的文件名、函数名、行号等详细信息。如:
//打印级别
#defineDEBUG_ERROR1//bit0
#defineDEBUG_WARN2//bit1
#defineDEBUG_USER_PRINT4//bit2
#defineDEBUG_DEBUG_PRINT8//bit3
#defineDEBUG_LEVEL516//bit4
#defineDEBUG_LEVEL632//bit5
#defineDEBUG_LEVEL764//bit6
#defineDEBUG_LEVEL8128//bit7
//设置打印文件接口
int32debug_set_output(char*filename);
//设置打印级别接口
int32debug_set_flag(uint8level,uint8op);
(3)日志长时间保存模块
通信软件一般都是监控某通信接口、或者外围输入输出设备操作,保持24小时不间断运行,且通常情况下无人值守,所以需要有一套机制,保证软件运行状态的可追溯性。
本软件框架,依据时间和空间两条线,转存程序日志。时间上满足一定条件(如满10小时或1天),将日志转存至另一文件夹内,以时间信息命名该日志文件,以利于日志回溯。另定期检测当前打印的日志文件大小,若超过一定大小(如10MB),亦转存一次日志文件。在日志转存时,检测日志保存目录的总大小,若超过一定大小(如1GB),则覆盖最早的文件空间,不分配新的存储空间。
(4)定时器管理模块
在通信流程处理、状态机控制方面,定时器的设置和应用,是必不可少的。而各Linux
平台下,一般不提供现成的定时器操作函数库。本定时器模块,提供了定时器管理功能,包括定时器管理结构初始化、定时器模块销毁、定时器设置、循环定时器设置、定时器中止、定时器轮询操作等,实现精度达10ms以内的定时器操作。
该定时器模块,内部采用互斥锁方式,满足多线程同时操作使用,定时方式是将用户定时的时间,全部转化为系统tick计数,按超时顺序,按序管理定时器链表,通过快节奏的定期轮询方式,查看当前有哪些定时器超时。用户设置定时器时,指定该定时器超时时长、超时处理的线程、超时处理参数等信息,当轮询到该定时器超时时,触发发送特定超时消息,到指定的任务/线程,消息内容包含设置定时器时,用户给予的超出处理参数,用户即可在自己的线程,执行自身定义的超时处理函数了。
(5)通用链表模块
链表是最常见最实用的数据结构,开发过程中用到的概率很高,本框架实现了一套
通用链表接口,供开发者使用,接口丰富,能满足一般性的要求。包括链表的初始化、统计链表节点个数、插入、删除、获取特定节点等一般操作,亦包含插入特定位置、删除特定位置节点、插入删除多个节点、多个链表拼接等复杂操作。
(6)消息管理模块
本框架消息管理机制,是按照每个线程/任务,具有自身独用的一条消息队列,其他
线程给本线程发送消息时,消息管理模块,即将该消息挂载到本线程的消息队列下,本线程/任务在线程执行函数中,定期轮询检测自身消息队列内是否有消息,若有按照先进先出方式,接收后予以处理。多线程同步问题,使用互斥锁解决。
(7)线程池管理模块
用户在做通信软件开发时常用到多线程并发操作。业务设计方面,需先做好线程设
计和划分,划分好线程后,即可按设计思路,初始化框架中的线程池模块,包括线程是否启动标识位(一些测试线程,在发布时无需启动),线程/任务名称、线程运行函数、线程启动时间、线程启动参数,对于不常用的参数,另行提供接口供用户做操作设置,如设置线程使用的堆栈大小,一般的按默认大小启动即可。如下为某程序线程池参数:
/*是否使用--任务ID--任务字符串名—线程/任务入口函数--启动时间(ms)--启动参数*/
T_TaskCfgItemg_atTaskTable[MAX_TASK_NUM]=
{
{IN_USED,TIMER_TASK,TIMER_TASK_NAME,timer_thread_running,30,NULL},//定时器模块的任务
{IN_USED,UART_RECV_TASK,UART_RECV_TASK_NAME,uart_recv_running,40,NULL},//串口接收线程
{IN_USED,UART_SEND_TASK,UART_SEND_TASK_NAME,uart_send_running,50,NULL},//串口发送线程
{IN_USED,SNTP_SERVER_TASK,SNTP_SERVER_TASK_NAME,sntp_server_running,60,NULL},//SNTP服务线程
{IN_USED,UDP_PKT_TASK,UDP_PKT_TASK_NAME,udp_thread_running,70,NULL},//UDP报处理线程
};
(8)线程自启动模块
线程自启动模块,一般各框架模块初始化完成后,主线程进入空转前执行。该模块
轮询线程池结构,按照是否启动运行的标志位,以及时间顺序,按序按要求启动设计好的各个用户线程,用户只需从各线程入口函数开始编码,写好自身线程的初始化与运行函数即可。线程自启动模块逻辑框图如图3所示。
对于本软件快速开发框架的使用,一般包含以下步骤,实施过程示意图,可参见图4:
步骤1:根据项目需要,设计好自身项目所需的配置项,按键值格式写好配置文件和程序内配置结构体。
步骤2:根据项目实际情况,做好线程划分工作,设计好线程间交互数据,即各种消息的消息名和数据定义,写好用户自身业务各线程的线程初始化、线程循环。
线程初始化一般包括该线程所需的数据初始化、通信接口打开和初始化等。线程循环,是指线程正常运行后,周而复始执行的周期性操作,一般包括调用消息管理模块接口收消息(若有其他线程会给该线程发消息)、通信接口数据周期性接收,如网口、串口数据接收。更上层的即是各种消息的处理和接口上通信数据的处理。
本快速开发框架,基本完成了外围常见操作,大大缩减开发周期,而用户只需专注于上层各种消息处理、通信接口数据处理接口。
接下来,用户从main()函数开始着手,开始调用一系列快速开发框架接口,快速开发框架负责用户设计的线程的调度,整个通信软件即可自动化的完成运转运行。
步骤3:用户开始使用快速开发框架,完成程序开发。第一步,程序启动初期,调用配置文件读写模块接口,读取整个配置文件信息,到程序设计的结构体中,后面多个步骤中,可能会用到该配置信息,所以此步骤优先调用。
步骤4:调用分级打印模块接口,设置打印输出文件。此过程一般会用到配置项信息,即可将打印的文件名,放在配置文件中,随后按指定方式打开此输出文件,并初始化其他一些必备数据。
步骤5:调用分级打印模块接口,设置程序的输出打印级别,这个可以根据当前程序的使用情况,如若是程序调试阶段,可打开调试打印级别,即可看到开发者设置的许多调试打印信息;如若是设备最终的部署运行,可仅打开错误打印和告警打印信息,以供维护人员更直观的掌握设备运行情况。
步骤6:调用日志长时间保存模块接口,使程序日志可永久保存,每一个程序日志文件,有最大字节数要求,且都按时间信息命名,有利于回溯管理。调用该接口,需要日志长期保存的目录名、多久保存一次、每个文件最大字节数等信息(或采用程序内默认设置信息),这些信息一般可保存在配置文件中,由步骤3读入程序内。
步骤7:调用定时器模块接口,完成定时器模块初始化。该接口实现了定时器管理结构的初始化、定时器链表的初始化等操作。
步骤8:调用消息管理模块接口,完成消息管理模块初始化,以便后续各业务线程启动后,完成线程间消息通信交互。
步骤9:调用线程池管理模块接口,完成线程池模块数据的初始化和设置,用户可根据需要,设置每个业务线程的入口函数、线程启动时间、线程启动参数、是否需要启动等信息。
步骤10:调用线程自启动模块接口,完成定时器线程、用户设计的各个业务线程的自动化的启动和运行。具体自启动的实现过程,参见线程自启动模块的描述。
步骤11:写一个while(1)循环,循环内调用sleep或者usleep等函数,让主线程开始空转即可。
按照上述11步,即可轻松完成一个通信软件的开发,用户使用本快速开发框架,只需可将主要精力放在步骤2,即用户自身的业务线程运行的开发上,实现了业务线程开发,使用本框架结构,即可迅速完成整个软件框架的搭建,用户线程由本框架自动调度。
本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
Claims (6)
1.一种基于Linux平台的通信软件的快速开发框架,其特征在于:包括公共支撑库和多线程开发框架,所述公共支撑库包括配置文件读写模块、分级打印模块、日志长时间保存模块、定时器管理模块和通用链表模块,所述多线程开发框架包括消息管理模块、线程池管理模块、线程自启动模块;
所述配置文件读写模块,用于实现配置文件读写功能,并封装成易使用的接口函数,模块内部使用文件读写、字符串处理、数字字符类型转换函数实现,供开发者调用;
所述分级打印模块,用于在日志打印时,按打印级别区分和控制日志输出;
所述日志长时间保存模块,用于保证软件运行状态可追溯,其依据时间和空间两条线,转存程序日志;
所述定时器管理模块,用于定时器管理,包括定时器管理结构初始化、定时器模块销毁、定时器设置、循环定时器设置、定时器中止和定时器轮询操作,实现精度达10ms以内的定时器操作;
所述通用链表模块,用于提供一套通用链表接口,供开发者使用;
所述消息管理模块,按照每个线程/任务,具有自身独用的一条消息队列,当其他线程给本线程发送消息时,即将该消息挂载到本线程的消息队列下,本线程/任务在线程执行函数中,定期轮询检测自身消息队列内是否有消息,若有则按照先进先出方式,接收后予以处理;
所述线程池管理模块,用于线程设计和划分,其包括线程是否启动标识位,线程/任务名称、线程运行函数、线程启动时间和线程启动参数;
所述线程自启动模块,该模块轮询线程池结构,按照是否启动运行的标志位,以及时间顺序,按序按要求启动设计好的各个用户线程。
2.根据权利要求1所述的一种基于Linux平台的通信软件的快速开发框架,其特征在于:所述配置文件读写模块中配置项,以键值格式定义,以分号结束;配置文件支持多种注释方式,支持键值左右的空格符自动识别。
3.根据权利要求1所述的一种基于Linux平台的通信软件的快速开发框架,其特征在于:所述分级打印模块提供8种打印级别,可随时修改打印级别,且各打印级别可任意组合输出。
4.根据权利要求1所述的一种基于Linux平台的通信软件的快速开发框架,其特征在于:所述日志长时间保存模块依据时间和存储空间两条线,转存程序日志,当时间上满足一定条件时,将日志转存至另一文件夹内,并以时间信息命名该日志文件,同时定期检测当前打印的日志文件大小,若超过一定大小,则转存一次日志文件,在日志转存时,检测日志保存目录的总大小,若超过一定大小,则覆盖最早的文件空间,不分配新的存储空间。
5.根据权利要求1所述的一种基于Linux平台的通信软件的快速开发框架,其特征在于:所述定时器管理模块的内部采用互斥锁方式,满足多线程同时操作使用,其定时方式是将用户定时的时间,全部转化为系统tick计数,按超时顺序,按序管理定时器链表,通过快节奏的定期轮询方式,查看当前有哪些定时器超时,并发送超时消息。
6.一种基于权利要求1中开发框架的使用方法,其特征在于包括如下步骤:
步骤1:设计好自身项目所需的配置项,按键值格式写好配置文件和程序内配置结构体;
步骤2:做好线程划分工作,设计好线程间交互数据,即各种消息的消息名和数据定义,写好用户自身业务各线程的线程初始化、线程循环;
步骤3:开始使用快速开发框架,完成程序开发;首先程序启动初期,调用配置文件读写模块接口,读取整个配置文件信息,到程序设计的结构体中;
步骤4:调用分级打印模块接口,设置打印输出文件;
步骤5:调用分级打印模块接口,设置程序的输出打印级别,
步骤6:调用日志长时间保存模块接口,使程序日志可永久保存,每一个程序日志文件,有最大字节数要求,且都按时间信息命名,以利于回溯管理;
步骤7:调用定时器模块接口,完成定时器模块初始化;
步骤8:调用消息管理模块接口,完成消息管理模块初始化,以便后续各业务线程启动后,完成线程间消息通信交互;
步骤9:调用线程池管理模块接口,完成线程池模块数据的初始化和设置;
步骤10:调用线程自启动模块接口,完成定时器线程、用户设计的各个业务线程的自动化的启动和运行;
步骤11:写一个while(1)循环,循环内调用sleep或者usleep函数,让主线程开始空转。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510952542.3A CN105607904B (zh) | 2015-12-18 | 2015-12-18 | 基于Linux平台的通信软件的快速开发框架及其使用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510952542.3A CN105607904B (zh) | 2015-12-18 | 2015-12-18 | 基于Linux平台的通信软件的快速开发框架及其使用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105607904A true CN105607904A (zh) | 2016-05-25 |
CN105607904B CN105607904B (zh) | 2019-04-16 |
Family
ID=55987858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510952542.3A Active CN105607904B (zh) | 2015-12-18 | 2015-12-18 | 基于Linux平台的通信软件的快速开发框架及其使用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105607904B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107995524A (zh) * | 2017-12-07 | 2018-05-04 | 郑州云海信息技术有限公司 | 一种连接网络视频服务器的客户端系统及其设计、数据处理方法 |
CN108762940A (zh) * | 2018-04-12 | 2018-11-06 | 武汉斗鱼网络科技有限公司 | 多线程访问方法及装置 |
CN108984160A (zh) * | 2018-06-21 | 2018-12-11 | 中国石油集团安全环保技术研究院有限公司 | 基于组件化的信息化快速开发框架及方法 |
CN109189580A (zh) * | 2018-09-17 | 2019-01-11 | 武汉虹旭信息技术有限责任公司 | 一种基于多核平台的多任务开发模型及其方法 |
CN109783142A (zh) * | 2018-12-21 | 2019-05-21 | 福建新大陆支付技术有限公司 | 一种基于pos机的多线程同步方法及pos机 |
CN113542249A (zh) * | 2021-07-08 | 2021-10-22 | 昆明学院 | 一种多协议数据发布系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490724A (zh) * | 2002-10-18 | 2004-04-21 | 上海贝尔有限公司 | 一种用于嵌入式系统软件开发的虚拟机装置 |
US20060136914A1 (en) * | 2004-11-30 | 2006-06-22 | Metreos Corporation | Application server system and method |
CN102779047A (zh) * | 2012-07-09 | 2012-11-14 | 哈尔滨工程大学 | 一种嵌入式软件支撑平台 |
CN102968311A (zh) * | 2012-12-13 | 2013-03-13 | 中国航空无线电电子研究所 | 机载嵌入式软件开发平台 |
-
2015
- 2015-12-18 CN CN201510952542.3A patent/CN105607904B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490724A (zh) * | 2002-10-18 | 2004-04-21 | 上海贝尔有限公司 | 一种用于嵌入式系统软件开发的虚拟机装置 |
US20060136914A1 (en) * | 2004-11-30 | 2006-06-22 | Metreos Corporation | Application server system and method |
CN102779047A (zh) * | 2012-07-09 | 2012-11-14 | 哈尔滨工程大学 | 一种嵌入式软件支撑平台 |
CN102968311A (zh) * | 2012-12-13 | 2013-03-13 | 中国航空无线电电子研究所 | 机载嵌入式软件开发平台 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107995524A (zh) * | 2017-12-07 | 2018-05-04 | 郑州云海信息技术有限公司 | 一种连接网络视频服务器的客户端系统及其设计、数据处理方法 |
CN108762940A (zh) * | 2018-04-12 | 2018-11-06 | 武汉斗鱼网络科技有限公司 | 多线程访问方法及装置 |
CN108762940B (zh) * | 2018-04-12 | 2020-09-04 | 武汉斗鱼网络科技有限公司 | 多线程访问方法及装置 |
CN108984160A (zh) * | 2018-06-21 | 2018-12-11 | 中国石油集团安全环保技术研究院有限公司 | 基于组件化的信息化快速开发框架及方法 |
CN108984160B (zh) * | 2018-06-21 | 2022-04-22 | 中国石油集团安全环保技术研究院有限公司 | 基于组件化的信息化快速开发框架系统 |
CN109189580A (zh) * | 2018-09-17 | 2019-01-11 | 武汉虹旭信息技术有限责任公司 | 一种基于多核平台的多任务开发模型及其方法 |
CN109783142A (zh) * | 2018-12-21 | 2019-05-21 | 福建新大陆支付技术有限公司 | 一种基于pos机的多线程同步方法及pos机 |
CN113542249A (zh) * | 2021-07-08 | 2021-10-22 | 昆明学院 | 一种多协议数据发布系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105607904B (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105607904A (zh) | 基于Linux平台的通信软件的快速开发框架及使用方法 | |
CN105446806B (zh) | 一种应用程序无响应的处理方法及装置 | |
US20100223446A1 (en) | Contextual tracing | |
CN101271415B (zh) | 嵌入式设备中监控看门狗的实现方法 | |
CN107171825A (zh) | 一种终端的重复日志过滤方法 | |
CN106201672A (zh) | 一种定时任务设置系统及其定时任务运行方法 | |
CN101719852B (zh) | 一种中间件性能的监控方法和设备 | |
CN107992407A (zh) | 使用u盘对安卓终端设备调试的系统及方法 | |
CN103428051A (zh) | 一种通信设备的测试系统及方法 | |
CN108199867B (zh) | 一种有线传感器网络的组网方法 | |
CN105635298A (zh) | 一种基于业务隔离原理的数据采集设备统一接入系统 | |
CN103117895A (zh) | 一种lxi仪器的服务监听方法 | |
CN111488181B (zh) | 任务调度方法、装置、存储介质及服务器 | |
CN112398079A (zh) | 智能化继电保护定值修改与核对系统及方法 | |
CN112131087B (zh) | 一种模拟软件通信层与业务应用层解耦系统及实现方法 | |
CN112131208A (zh) | 全量数据迁移方法、装置、设备及计算机可读存储介质 | |
CN114741400A (zh) | 一种数据同步及解析方法、装置及终端设备 | |
CN110231931A (zh) | 一种电源实时控制模块和系统 | |
CN101005420A (zh) | 一种综合接入设备的嵌入式系统跨平台实现方法 | |
WO2020073200A1 (zh) | 调试程序的方法和系统 | |
CN115221116A (zh) | 一种数据写入方法、装置、设备及可读存储介质 | |
CN113688009A (zh) | 一种云平台的云主机监控数据采集方法、系统及设备 | |
CN113835904A (zh) | 一种远程过程调用控制方法、装置、设备及存储介质 | |
Gao et al. | Multithreading Technology Based on Golang Implementation | |
CN111125231B (zh) | 一种关系型数据库数据交换系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |