一种监视串口通信数据的方法技术

技术编号:8271284 阅读:270 留言:0更新日期:2013-01-31 03:28
本发明专利技术涉及串口通信技术领域,本发明专利技术公开了一种监视串口通信数据的方法,其具体包含以下步骤:步骤1.创建远程线程进入需要监视进程的内存地址空间,通过远程线程加载动态链接库;步骤2.获取动态链接库中相关函数的原始入口地址,并将相关函数原始入口地址修改为指定指令区的执行模块地址;步骤3.根据修改后的入口地址,在执行相关函数之前,执行模块先将串口通信的数据取出,提交给显示模块,显示模块将上述提取出的串口通信数据进行显示;步骤4.将相关函数的入口地址跳转回原始入口地址。本方法在整个串口数据监视的过程中不会中断通讯程序,不影响通讯程序的正常使用,使得串口数据监视方便有效。

【技术实现步骤摘要】
本专利技术涉及通信
,尤其涉及一种监视串口通信数据的方法
技术介绍
串行接口是一种将数据连续串行发送出去的接口电路,串口按位(bit)发送和接收字节。尽管串口的通信速度比按字节(byte)的并行通信慢,但串口可以在使用一根线发送数据的同时用另一根线接收数据。另外串口很简单并且能够实现远距离通信,比如IEEE488定义并行通行状态时,规定设备线 总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。因此,串口通讯作为常用的通讯方式,在自动化控制等领域有着大量的应用。同时为了保证自动化系统的安全性及可核查性,大量的串口通讯数据又需要一种有效的监视方式进行监视。现有技术中的串口通讯的监视,一般有两种在线方式和离线方式,在线方式现在一般使用驱动程序监视,离线方式一般为串口调试工具。现有的串口监视方法普遍采用的是把电脑的一个串口连接到一个被监视的串口,然后在电脑上运行一个串口通信监视软件,这样的方法必然需要中断串口通信才能实现,同时操作非常复杂。因此,常用的串口数据监视方法离线监视或者通过串口驱动监视数据,前者明显不能监视正常的通讯数据,后者调试、使用都比较麻烦。驱动程序监视的开发调试比较麻烦,并且运行在内核驱动中,容易造成蓝屏等问题。串口调试工具只能手工操作运行收发数据,不能完全和实际情况相吻合,发送速度也受到手工操作的限制。专利号为CN200710145241. 5的方式,两个USB转串口模块,每个串口输出端分别连接到串口通信双方的发送端,每个地线连接到所述串口通信双方的共同地线,用于分别将从所述串口通信双方接收到的数据转换为USB协议数据;USB集线器模块,其USB输出端口分别连接到所述两个USB转串口模块的USB端,输入端口连接到处理器的USB接口,用于将来自所述两个USB转串口模块的USB协议数据传给所述处理器;以及所述处理器,用于对所述USB协议数据进行处理并进行显示。即使采用采用上述USB串口转换模块来实现监视串口通信数据,串口通信的仍然要被中断才能实现串口通信数据的监视,显然还不足以满足技术发展的需要。
技术实现思路
本专利技术的目的是针对现有技术中的串口监视方式存在开发困难或监视时,通信需要中断的技术问题,提供一种监视串口通信数据的方法。本专利技术的目的通过下述技术方案来实现 一种监视串口通信数据的方法,其具体包含以下步骤步骤I.创建远程线程进入需要监视进程的内存地址空间,通过远程线程加载动态链接库;步骤2.获取动态链接库中相关函数的原始入口地址,并将相关函数原始入口地址修改为指定指令区的执行模块地址;步骤3.根据修改后的入口地址,在执行相关函数之前,执行模块先将串口通信的数据取出,提交给显示模块,显示模块将上述提取出的串口通信数据进行显示;步骤4.将相关函数的入口地址跳转回原始入口地址。更进一步地,上述步骤I具体包括在需要监视的进程中分配内存,用来存放要加载的动态链接库,并将动态链接库的绝对路径写入远程线程,加载动态链接库,实现动态链接库代码的注入。更进一步地,上述步骤2中的获取动态链接库中相关函数的原始入口地址具体为通过从导入地址表中获取动态链接库中相关函数的原始入口地址。更进一步地,上述步骤2中的相关函数为API函数,其具体包括执行读写操作的函数CreateFile、ReadFiIe>WriteFile0更进一步地,上述步骤3中执行模块将串口通信的数据取出具体包括 a.保存所有的寄存器,以便处理完成后返回正常的流程; b.将所有的参数压入堆栈,参数包括文件句柄、输入/出缓冲区地址、缓冲区长度; c.调用Iogfunc函数,将缓冲区中的数据发送到显示界面。本专利技术的有益效果通过创建远程线程加载动态链接库,并修改动态链接库中相关函数的入口地址,先运行执行模块执行将串口数据提取并进行显示,使得串口通信的数据得到有效的监视,在这个过程完成后,将函数跳转回正常地址,继续执行原有函数的正常功能,不影响函数的正常功能。本方法在整个串口数据监视的过程中不会中断通讯程序,不影响通讯程序的正常使用,使得串口数据监视方便有效。具体实施例方式下面结详细说明本专利技术的具体实施方式。本专利技术公开了一种监视串口通信数据的方法,其具体包含以下步骤步骤I.创建远程线程进入需要监视进程的内存地址空间,通过远程线程加载动态链接库;步骤2.获取动态链接库中相关函数的原始入口地址,并将相关函数原始入口地址修改为指定指令区的执行模块地址;步骤3.根据修改后的入口地址,执行模块将串口通信的数据取出,提交给显示模块,显示模块将上述提取出的串口通信数据进行显示;步骤4.将相关函数的入口地址跳转回原始入口地址。通过创建远程线程加载动态链接库,并修改动态链接库中相关函数的入口地址,先运行执行模块执行将串口数据提取并进行显示,使得串口通信的数据得到有效的监视,在这个过程完成后,将函数跳转回正常地址,继续执行原有函数的正常功能,不影响函数的正常功能。本方法在整个串口数据监视的过程中不会中断通讯程序,不影响通讯程序的正常使用,使得串口数据监视方便有效。更进一步地,上述步骤I具体包括在需要监视的进程中分配内存,用来存放要加载的动态链接库,并将动态链接库的绝对路径写入远程线程,加载动态链接库,实现动态链接库代码的注入。其可以使用执行LoadLibrary函数实现加载动态链接库。其中内存分配可以采用VirtualAllocEx函数实现,动态链接库的绝对路径写入远程线程则可以采用WriteProcessMemory函数实现,加载动态链接库可以采用CreateRemoteThread函数实现。上述这些API函数(Application Programming Interface,应用程序编程接口)是一些预先定义好的函数,目的是提供给应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。本专利技术中可以采用直接采用调用API函数的方法,提高了本方法的可操作性和适应性,也使得本专利技术的方法更加容易实现。更进一地,上述步骤2中的获取动态链接库中相关函数的原始入口地址具体为通过从导入地址表中获取动态链接库中相关函数的原始入口地址。从导入地址表中获取动态连接口库中相关函数的原始入口地址方便快捷,便于实现,同时将相关函数的入口地址替换为执行模块的地址,在调用相关函数时先进入执行模块的地址进行执行,执行模块将串口数据提取并进行显示,实现串口通信数据的有效监视。更进一步地,上述步骤2中的相关函数为API函数,其具体包括执行读写操作的函数CreateFile、ReadFiIe> WriteFile0采用上述执行读写操作的函数进一步提高了本方法的可操作性和适应性,也使得本专利技术的方法更加容易实现。只需要监视上述执行读写操作的函数就可以得到串口通信的数据。将ReadFile的入口地址修改为执行模块的地址,在执行函数前,先运行执行模块,执行模块将窗口通信数据提取并进行显示,实现串口通信数据的有效监视,然后ReadFile函数的入口地址跳转回原始的ReadFile函数的 入口地址,继续执行ReadFile函数,采用上述API函数同样也提高了本方法的可操作性和适应性,使得本专利技术的方法更加容易本文档来自技高网
...

【技术保护点】
一种监视串口通信数据的方法,其具体包含以下步骤:步骤1.创建远程线程进入需要监视进程的内存地址空间,通过远程线程加载动态链接库;步骤2.获取动态链接库中相关函数的原始入口地址,并将相关函数原始入口地址修改为指定指令区的执行模块地址;步骤3.根据修改后的入口地址,在执行相关函数之前,执行模块先将串口通信的数据取出,提交给显示模块,显示模块将上述提取出的串口通信数据进行显示;步骤4.将相关函数的入口地址跳转回原始入口地址。

【技术特征摘要】
1.一种监视串口通信数据的方法,其具体包含以下步骤步骤I.创建远程线程进入需要监视进程的内存地址空间,通过远程线程加载动态链接库;步骤2.获取动态链接库中相关函数的原始入口地址,并将相关函数原始入口地址修改为指定指令区的执行模块地址;步骤3.根据修改后的入口地址,在执行相关函数之前,执行模块先将串口通信的数据取出,提交给显示模块,显示模块将上述提取出的串口通信数据进行显示;步骤4.将相关函数的入口地址跳转回原始入口地址。2.如权利要求I所述的监视串口通信数据的方法,其特征在于所述步骤I具体包括在需要监视的进程中分配内存,用来存放要加载的动态链接库,并将动态链接库的绝对路径写入远程线程,加载动态链接库,实现动态链接库代码的注入。3.如权利要求I所述...

【专利技术属性】
技术研发人员:毛虎林翟纯玉付明
申请(专利权)人:成都四为电子信息股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1