控制管理器对应暂停。
继续停止等请求调用函数调用函数开始服务任务在开机或安装后调用函数由函数打开,该线程执行服务的具体任务函数接收来自的请求开始函数告诉关于函数的信息函数告诉关于函数信息服务的文件图服务中各部分之间的关系函数,这是代码的入口。
是在这里解析任何命令行参数并进行服务的安装,移除,启动等。
提供真正服务代码的入口函数叫。
在服务第次启动的时候,将该函数的地址传递给服务管理器。
处理来自服务管理器命令消息的函数。
这个函数叫,服务回调函数,因为和函数都是由系统来调用,所以它们必须遵循操作系统的参数传递规范和调用规范。
也就是说,它们不能简单地作为个类的成员函数。
这样就给封装带来些不便,因为想把服务的功能封装在个类中。
为了解决这个问题,将和函数创建成类的静态成员。
这样就使得以创建可以由操作系统调用的函数。
但是,这样做还没有完全解决问题,因为系统不允许给被调用的函数传递任何形式的用户数据,所以我们无法确定对对象特定实例的或的调用。
在这里用了个非常简单但有局限的方法来解决这个问题。
创建个包含对象指针的静态变量。
这个变量是在该对象首次创建是进行初始化的。
这样便限制每个服务应用只有个对象。
下面是文件中的声明静态数据下面是初始化指针函数函数提供真正服务代码的入口。
它完成多项工作。
其中最为主要的是立即调用函数。
之后做些服务初始化的工作,为工作线程的运行提供必要的准备。
最后函数还开始将完成实际服务任务的工作线程。
旦线程开始,函数就等待个事件的发生。
直到服务停止,函数才返回。
之后重新调用函数,将重新开始该项服务。
流程如图开始完成实际服务任务的工作线程初始化工作图函数流程初始化工作函数函数的主要任务是初始化全局变量串口队列。
扫描服务器的串口,如果串口可用,则把此串口进入安全队列。
以备客户端请求使用。
该串口是否可用入队列下串口初始化是否还有串口结束是否图初始化工作流程相关代码串口入队列服务工作线程由函数实现由函数打开,开始完成实际服务任务的工作线程,该线程执行服务的具体任务。
该函数绑定服务器地址后监听本地端口等待客户端的连接,当客户端连接上后,创建子线程,由子线程来处理这个连接,函数继续监听本地端口。
子线程处理完链接后关闭链接套接字退出。
图服务工作线程流程相关代码地址端口号,监听连接直到服务停止运行接收连接创建子线程处理该连接,服务子线程由类的静态成员函数作为线程函数。
在线程中,首先判断服务器是否还有剩余串口可分配,也就是判断串口队列中是否为空。
若为空,则提示用户服务器串口已使用完毕,请稍后在试,断开同客户端的连接。
否则串口队列出队列个串口,分配给该客户使用,接下来就是打开串口,配置串口参数,开启串口监听线程,等待客户端发送的数据。
直到客户端断开连接,串口重新进入队列,等待下次的分配客户端处理流程相关代码初始化创建套接字建立连接,发送数据接收数据,断开连接类图图类图服务类,实现了的服务。
串口类,实现串口通信。
安全队列类,实现多线程安全访问队列。
调试与分析由于服务必须从服务控制管理器的上下文中运行,而不是从中运行,因此调试服务不像调试其他应用程序类型那样简单。
若要调试服务,必须首先启动服务,然后将个调试器附加到正在运行服务的进程中。
然后可以使用的所有标准调试功能来调试应用程序。
附加到服务的进程能够调试大多数服务代码,但并非全部例如,由于服务已经启动,因此不能用这种方法调试服务的方法中的代码,或调试用于加载服务的方法中的代码。
由于服务应用程序调试的特殊性,直接把服务应用程序里面的实际工作代码提取出来做成般的应用程序,而后调试。
这样更简单,直接。
把调试好了的应用程序里面的代码放在服务里面就可以了。
还有种方法就是写日志文件。
这也是调试服务的个比较好的方法,虽然比较笨,但是通过阅读自己留下的日志,也能起到不小的作用的。
结论经过这几个月的时间,完成了基于的串口通信服务的开发,是基于通信的客户端服务器系统。
论文描述了系统的基本理论和实现方法。
程序开发主要是实现服务串口通信串口池的管理和客户端。
由于是第次接触到这方面知识,也存在很多不足之处。
系统功能还没有那么完善,在通信基础上还可以加上具体的协议来实现真正意义上的数据通信。
这些都是有待进步开发的后续工作。
我尽量使此次分析和设计符合科学性实际操作性的原则。
但由于个人水平限制原因,我对这个课题研究还不是很深入,论文本身还存在诸多欠妥之处,恳请老师与同学们给我提出宝贵的意见,我将在以后的研究中进步完善和深化。
总而言之,要不断加强学习,时刻关注技术的发展。
在理论知识的指导下,将新的先进的技术引入到系统中,并在这个领域中不断学习研究。
参考文献乔林,杨志刚高级编程技术与多线程篇北京中国铁道出版社,。
雷斌,杨建华,黄超,何斌网络编程技术北京人民邮电出版社,。
汪翔,袁辉实践与提高网络编程篇北京中国铁道出版社,。
龚建伟,熊光明串口通信编程实践北京电子工业出版社,。
谭思亮,邹超群串口通信工程开发实例导航北京人民邮电出版社,。
郭晓鹏,李存斌高级编程及其项目应用开发北京中国水利水电出版社,。
王险峰,刘宝宏环境下的多线程编程原理与应用北京清华大学出版社,。
张锦,张俊深入学习系统服务开发与实例北京电子工业出版社,。
李凌网络编程实用教程北京清华大学出版社,。
商业源代码,全套计算机毕业设计免费下载更多全套设计联系最新设计大全了。
服务子线程退出。
串口队列为空串口出队列接收客户端发送数局从串口发送除去链接断开打开串口配置串口参数开启监听线程关闭串口串口入队列提示信息退出是否是否图服务子线程工作流程相关代码,判断队列是否为空出队列打开串口配置默认通信参数,开启监听线程连接是否断开接受客户端的数据,写串口停止监听子线程关闭串口串口入队列发送提示信息到客户端,断开连接服务的安装要使用服务,首先应进行安装。
安装过程使知道有这项服务存在,让把它添加到服务列表中。
通过调用函数,打开个到服务控制管理器的连接。
然后调用函数在数据库中安装服务。
函数的调用中使用了打开的指针,服务名,识别符以及族填充其他值的基本参数。
服务名是指在内部使用的服务的名字,删除服务时指定改名字可删除该服务,识别符是指在控制面板的服务中表示服务项的识别符。
最后关闭服务控制管理器的连接。
打开的连接创建服务关闭的连接图服务安装流程服务的卸载卸载服务时,同样需要先打开个到服务控制管理器的连接。
然后查询该服务当前是否是被停止,若还未停止,则调用函数尝试停止该服务。
这样做有利于卸载服务项如果服务在删除过程中继续运行,则控制面板中服务将保留与服务的连接,实际上服务可以继续运行当有人试图停止该孤儿服务时,服务可能就会抗议。
先停止服务再删除它,就可以避免该问题。
服务停止后,调用函数删除该服务。
打开连接服务是否停止删除服务是否关闭服务图服务卸载流程串口通信串行口在中是作为文件来进行处理的,而不是直接对端口进行操作。
在环境下,可以把串口看作由文件系统访问的设备。
使用标准的函数打开端口,再使用和函数读写数据,就如同端口只是个文件对象样。
对于串行通信,提供了相应的文件函数与通信函数,使用这些函数,可以编制出符合不同需要的通信程序。
通常实现串行通信的步骤如下按协议的设置初始化并打开串行口,这样做就是通知本应用程序需要这个串口,并封锁其他应用程序使它们不能使用此串口。
配置这个串行口。
在串口上往返地传输数据,并在传输过程中进行校验不需要此串口时,关闭串口,即释放串口以供其它应用程序使用。
在这四个步骤中,主要的程序代码集中在第步。
打开串口配置串口传输数据关闭串口图串口通信流程串口通信直接使用函数封装成类。
应用函数进行串口编程时,步骤如下打开串口函数。
建立串口通信事件函数。
初始化串口,设置串口参数函数。
建立读数据的线程建立线程简单程序中并非需要,需要用到的函数较多,如。
写数据用函数。
结束时关闭串口若程序中打开了其他线程,则先终止线程。
停止的等待以及关闭串口,平时程序会停留在的等待中,当要终止线程的时候,程序必须从中退出来,然后用关闭串口。
相关代码如下串口的打开串口的关闭设置串口参数,获得串口当前参数重新配置串口参数设置新的串口参数读写串口读串口写串口客户端相对于服务器,客户端的设计和实现比较简单。
客户端只需要建立同服务器的连接,发送数据,接受服务器发送来的数据即可。
其流程如图初始化建立连接接收和发送数据断开连接图地址空间的问题。
线程对解决客户服务器模型非常有效。
线程之间通信的两个基本问题是互斥和同步。
线程同步是指线程之间所具有的种制约关系,个线程的执行依赖另个线程的消息,当它没有得到另个线程的消息时应等待,直到消息到达时才被唤醒。
线程互斥是指对于共享的操作系统资源指的是广义的资源,而不是的文件,譬如全局变量就是种共享资源,在各线程访问时的排它性。
当有若干个线程都要使用共享资源时,任何时刻最多只允许个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。
线程互斥是种特殊的线程同步。
实际上,互斥和同步对应着线程间通信发生的两种情况当有多个线程访问共享资源而不使资源被破坏时当个线程需要将个任务已经完成的情况通知另外个或多个线程时。
在中,同步机制主要有以下几种事件信号量互斥量临界区。
安全队列队列在计算机科学中,是种先进先出的线性表。
和栈相反,它只允许在表的端进行插入,而在表的另端删除元素。
队列是种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
进行插入操作






























1、该文档不包含其他附件(如表格、图纸),本站只保证下载后内容跟在线阅读一样,不确保内容完整性,请务必认真阅读。
2、有的文档阅读时显示本站(www.woc88.com)水印的,下载后是没有本站水印的(仅在线阅读显示),请放心下载。
3、除PDF格式下载后需转换成word才能编辑,其他下载后均可以随意编辑、修改、打印。
4、有的标题标有”最新”、多篇,实质内容并不相符,下载内容以在线阅读为准,请认真阅读全文再下载。
5、该文档为会员上传,下载所得收益全部归上传者所有,若您对文档版权有异议,可联系客服认领,既往收入全部归您。
