如何写科密a1考勤管理系统系统“底层通信”

当前位置: &
& 校园机房自动收费管理系统
校园机房自动收费管理系统
校园机房自动收费管理系统
1.0 前言 &&& 信息时代的今天,计算机机房作为中小学、大专院校教学的必备教学设施目前基本普及。然而仅有的教学工作对计算机机房的使用率相对于计算机的使用寿命(一般报废年限为5年左右)、高额的维护维修费用以及管理人员的工资福利支出,往往让学校倍感资源利用的代价太高!在校学生却不能在计算机机房访问网络上的与学校自有的教育资源,而是被社会上的网吧所吸引且没有安全保障。 &&& 许多具有远见卓识的学校已经深深感觉到资源利用率对于学校机房应用成本、教学资源的利用以及学生上网管理的重要意义!纷纷推行校园机房课外上机收费管理模式,达到节省校园 机房使用成本、提高教学资源利用率以及加强学生上网管理的三重效果。
1.1系统简介 &&& 机房自动收费管理系统是本公司推出的校园一卡通系统的一部分,集射频卡技术、网络技术、通信技术与数据库技术等前沿科技技术于一体,采用飞利浦公司的Mifare系列芯片,可保证足够的安全性和稳定性。 &&& 从机房收费系统应用的特殊性上考虑,系统及数据的安全性尤为重要。射频IC卡机房自动收费系统上层软件部分全部运行于Windwos操作平台,采用VC++、Power Builder等先进的编程工具开发完成。全中文,图形化界面,易学易懂,操作简便;结合大型数据库软件SQL Server,保证数据的安全性与稳定性;学生机底层登录程序采用汇编语言开发,针对硬盘分区进行安装,与操作系统无任何关系(可安装在Unix、Linux等操作系统的PC机上),不易被破解,是目前机房收费系统中安全级别最高的登录方式。底层登录程序虽然是基于非操作系统应用,但是仍然支持任何网络协议,可跨网段/路由应用。采用UDP协议通讯,支持多校区、多机房/子网,真正实现无客户端数量限制。在实际应用中,网络版系统超过2000台PC机应用的案例超过200个。
1.2系统应用价值 本系统可达到以下预期目标: &&&&&&&& 减少值班人员、维护人员,降低管理人员费用,甚至做到机房无人值守; &&&&&&&& 增加机房的开放时间,提高设备的利用率。部分大学应用本系统后,24小时全天候开放机房; &&&&&&&& 充分利用现有设备,适当增加单位收入。平均每台计算机每月带来200元左右的收入,每个学校按照最低100台计算机测算,每月收入:200 x 100=2万元,每年:2 x 10=20万元。可解决目前大多数机房存在的设备维修资金紧张问题。
2.0系统介绍
2.1系统构成 系统软件部分:管理端、服务器端基于Windows 2000/XP操作系统,采用大型数据库SQL Server和VC++开发;学生端登陆程序采用汇编语言开发。 &&& 系统硬件部分:通过诸如服务器、PC之类的标准设备和读卡器、机柜等专用设备构成。 &&&&&&&&&& 标准设备包括:服务器(安装中心数据库)、工作站(安装管理系统上层软件)、刷卡机(安装学生端刷卡程序)、打印机等;小规模应用三台主机可用一台PC机实现; &&&&&&&&&& 专用设备包括:系统软件、IC卡读写器、感应式IC卡等。
2.2网络应用
2.3系统功能 & &&&机房自动收费管理系统最主要功能就是实现了机房管理的自动化和现代化,真正实现无人值守管理、收费。学生自由上机时,必须先刷卡才能上机;如果不刷卡,则不能启动计算机。学生下机必须正确关闭计算机,否则出门刷卡时会提示没有关闭计算机、仍然计费;借此培养学生在公共机房上机的良好习惯。系统可记录学生上机的轨迹,可查询任意时间段内,任意一台计算机的使用情况。而在学生正常上课时间,系统会按照教务排课情况不计费,可记录学生考勤情况。 &&& 系统主要功能如下: &&&&&&&& 不在入口处刷卡,不能正常启动计算机; &&&&&&&& 每刷卡一次,只能开启一台计算机; &&&&&&&& 学生下机必须正常关闭计算机,否则不能下机; &&&&&&&& 可查询任一台计算机,在过去任一段时间内上机时间表,由此可查出破坏系统者; &&&&&&&& 全自动按上机时间收取上机费用,可完全替代手工计费; &&&&&&&& 提供按课时预约功能(可根据星期和学期循环预约); &&&&&&&& 提供上机预约功能,团体可提前预约上机,预约情况一目了然; &&&&&&&& 选择上机必须刷卡方式时,智能判断收费方式收费时间,上课时间段内,不收费,早到或晚退均收费; &&&&&&&& 提供个人帐务查询、每日按帐务总结等各种帐务查询方式,打印各种报表; &&&&&&&& 基本数据维护功能。可输入学生的身份、性别、班级、账号、密码等; &&&&&&&& 提供机房设备管理功能,机房设备数量、状态、配置情况一目了然,设备损坏可标注; &&&&&&&& 可设置公费与自费,学生白天上机可选择公费; &&&&&&&& 可根据机房、计算机、用户身份、时间设置不同的计费标准; &&&&&&&& 提供产生新卡、加钱、挂失、解挂、换卡(学生转班级时使用)、修改卡信息等功能; &&&&&&&& 给不同的使用者赋予不同的管理权限; &&&&&&&& 提供远程监控和管理模块,可远程关闭和重新启动学生端计算机;(选装) &&&&&&&& 网络流量计费模块,可根据流量和时间计费;(选装) &&&&&&&& 良好的开放性和兼容性,可与校园网计费系统挂结; &&&&&&&& 可与射频卡、IC卡、磁卡、条形码等多种外设挂接; &&&&&&&& 采用大型数据库平台系统开发,选择不同的版本,可适用于任何操作系统和环境; &&&&&&&& 与电脑硬件还原卡配合能达到最佳效果
3.0系统优势 &&&&&&&& 安全性高 &&& 服务器端:采用美国微软公司的大型数据库软件SQL Server 2000,其固有的安全性能,保障计费系统有一个稳定的运行环境; &&& 学生机端:采用底层登录的方法(在操作系统启动之前就启动登录程序,底层通信采用UDP协议,不同于有三次握手机制TCP协议,所以速度非常快,几乎不占用网络带宽),保证注册系统安全,不容易被学生破坏。独创的网络硬盘锁能够有效地防止逃费,更加保证系统安全; &&& 刷卡端:与服务器连接,本地不存储数据,重要数据都保存在服务器,安全性较高,采用进口读卡头,保证数据的安全性; &&&&&&&& 稳定性好 &&& SQL Server2000固有的稳定性和管理系统良好的结合,保证系统稳定运行; &&&&&&&& 良好的开放性和兼容性 &&& 可与校园网和校园一卡通系列系统挂结,方便地扩展成“校园一卡通系统”; &&&&&&&&&&一次投资,终身受益 &&& 机房管理系统不限制客户端数量,用户可任意多,用户计算机数量增加时,不再需要投资(安装费用除外)。 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&西安康德信息科技发展有限公司&&&&&&&如题。
&&&&&&&以前一直做串口通信,协议什么的也比较清楚了。
&&&&&&&最近来了个HID设备(血氧仪),属于usb类的,还给了个相关协议,但是看着跟串口协议挺像的,不知道是不是这个协议,关键是没弄过。
&&&&&&&从网上找了很多HID通信的Demo,国内的国外的,在其中把vid和pid都设置正确了的,能正确识别设备但还是不能正确收发数据,看了看里面的代码好像也没特别的用到什么协议。
&&&&&&&不知道是用错了还是必须要什么协议支持,求高手赐教
回复讨论(解决方案)
大家帮帮忙啊
以下是有关方给的命令格式,大家帮忙看看像不像HID设备的协议:
1. 请求命令
由主设备发出,用于进行设置、请求等功能操作。
符号 SYNC CMD LEN SUM FRM_DATA
宽度 1&Byte 1&Byte 1&Byte 1&Byte LEN&Bytes
描述 同步符 命令码 长度 校验和 数据
1.1、 同步符(SYNC):为固定的指令起始符,由十六进制10&H表示;
1.2、 命令码(CMD):分为两大类&
&&&&&&&&&通用命令:&01H~7FH,其中7FH&为扩展指令;
&&&&&&&&&设备命令:&80H~FFH,其中FFH为扩展指令;
1.3、 长度(LEN):为FRM_DATA的数据长度;
1.4、 校验和(SUM):FRM_DATA中所有数据的和,取低位字节;
1.5、 数据(FRM_DATA):用于传输的数据。
2. 应答命令
由从设备发回给主设备,用于确定主设备的操作请求是否被执行成功。
符号 SYNC CMD LEN ACK
宽度 1&Byte 1&Byte 1&Byte 1&Byte
描述 同步符 请求命令码 固定为0 成功/失败
ACK&是对请求命令响应状态的标识,其中:0表示成功,非0表示失败&,详见表-1错误码表。
3. 数据返回命令
由从设备返回给主设备的请求数据。
符号 SYNC CMD LEN SUM FRM_DATA
宽度 1&Byte 1&Byte 1&Byte 1&Byte LEN&Bytes
描述 同步符 命令码 长度 校验和 数据
3.1、CMD:同主设备发出的请求命令码;
3.2、&当返回数据长度LEN为0时,表示数据返回失败,这时SUM
的作用同应答命令的ACK一致,详见表-1错误码表。
这些就是协议,&
注意HID写入数据的长度需要跟硬件一致
USB设备的HID通信应该不是很难,可研究一下别人的DEMO,做个小程序试验应该可以搞定的。我虽然做过但因程序属于产品的一部分不能多说,只能给个消息循环供参考。
我将USB通信做成了一个类,做为通信线程工作,数据和控制,还有从系统来的设备插拔消息,均通过消息转发给通信线程。
线程内初始化时分别建立了读、写事件响应线程等。
BEGIN_MESSAGE_MAP(CHidUsbThread,&CWinThread)
ON_THREAD_MESSAGE(WM_USB_READ_EVENT_MSG,OnUsbReadEventMsg)
//&收到USB读事件消息
ON_THREAD_MESSAGE(WM_USB_WRITE_EVENT_MSG,OnUsbWriteEventMsg)
//&收到USB写事件消息
ON_THREAD_MESSAGE(WM_USB_DEVICE_CHANGE_MESSAGE,OnUsbDeviceChange) //&USB设备变动
ON_THREAD_MESSAGE(WM_USB_CONTRL_MESSAGE,OnUsbControlMessag)
//&收到USB控制消息
ON_THREAD_MESSAGE(WM_SEND_MSG,OnSendMsg)
//&发送数据的消息
END_MESSAGE_MAP()
HidD_GetHidGuid
SetupDiGetClassDevs
SetupDiEnumDeviceInterfaces
这些就是协议,&
注意HID写入数据的长度需要跟硬件一致
我怎么感觉这些像串口通信的协议,同步符、命令、长度、校验和、数据,只不过之前串口的是同步符(开始标志)、命令、长度、数据、校验和、同步符(结束标志)。两个都类似吗?
而且这个usb抓包工具所需要的一些参数,都是协议需要提供的吧(比如你说的数据的长度),如图:
下载的demo里基本上找到设备打开后,都用这些DDK函数对设备读写:ReadFile、WriteFile、HidD_SetFeature、HidD_GetFeature、HidD_SetOutputReport、HidD_GetInputReport,可我调用之后返回的都是诸如87(参数错误)、
句柄无效、数据错误(循环冗余码检查)之类的错误,这些函数中所用的buff都得遵循协议传入吧?
报告描述符我也加以区分了,有厂家自定义的描述符吗?同步异步模式也跟createFile设置的一样
USB设备的HID通信应该不是很难,可研究一下别人的DEMO,做个小程序试验应该可以搞定的。我虽然做过但因程序属于产品的一部分不能多说,只能给个消息循环供参考。
我将USB通信做成了一个类,做为通信线程工作,数据和控制,还有从系统来的设备插拔消息,均通过消息转发给通信线程。
线程内初始化时分别建立了读、写事件响应线程等。
BEGIN_MESSAGE_MAP(CHidUsbThread,&CWinThread)
ON_THREAD_MESSAGE(WM_USB_READ_EVENT_MSG,OnUsbReadEventMsg)
//&收到USB读事件消息
ON_THREAD_MESSAGE(WM_USB_WRITE_EVENT_MSG,OnUsbWriteEventMsg)
//&收到USB写事件消息
ON_THREAD_MESSAGE(WM_USB_DEVICE_CHANGE_MESSAGE,OnUsbDeviceChange) //&USB设备变动
ON_THREAD_MESSAGE(WM_USB_CONTRL_MESSAGE,OnUsbControlMessag)
//&收到USB控制消息
ON_THREAD_MESSAGE(WM_SEND_MSG,OnSendMsg)
//&发送数据的消息
END_MESSAGE_MAP()
谢谢您,从找的别人的demo来看好像是不难,主要是我没做过,我想我遇到的问题应该不是这种宏观控制上的,而是DDK函数
调用上,根据协议将数据收发,目前给的协议还不知道对不对,
就我的认知,不了解设备底层通信指令,通信成功的可能性太小。
就我的认知,不了解设备底层通信指令,通信成功的可能性太小。
底层通信指令是硬件开发用的吧,通信只需要从软件层面,用到厂家协议?
HidD_GetHidGuid
SetupDiGetClassDevs
SetupDiEnumDeviceInterfaces
这些识别设备的操作我已经做到了。。现在我是想根据协议收发数据
就我的认知,不了解设备底层通信指令,通信成功的可能性太小。
底层通信指令是硬件开发用的吧,通信只需要从软件层面,用到厂家协议?
当然。举个例子,设备里的嵌入式程序如果规定通信前三个字节必须是1,2,3,那你随便发肯定错
就我的认知,不了解设备底层通信指令,通信成功的可能性太小。
所谓软件底层是介于设备硬件与应用软件接口之间的部分,也就是设备驱动,而使用HID时,Windows系统已经为我们完成驱动接口,编程唯一的是遵守接口的通信规则。另外,我们大多数的编程都工作在应用层,因为对应用而言已经足够了。仔细研究别人的DEMO,非常有好处,我在开发USB产品初期,也是从研究DEMO入手,再逐步实现自己的设想,直到完成开发。加油!楼主,相信自己。
就我的认知,不了解设备底层通信指令,通信成功的可能性太小。
所谓软件底层是介于设备硬件与应用软件接口之间的部分,也就是设备驱动,而使用HID时,Windows系统已经为我们完成驱动接口,编程唯一的是遵守接口的通信规则。另外,我们大多数的编程都工作在应用层,因为对应用而言已经足够了。仔细研究别人的DEMO,非常有好处,我在开发USB产品初期,也是从研究DEMO入手,再逐步实现自己的设想,直到完成开发。加油!楼主,相信自己。
说得好,谢谢您!
在这里能收到一些鼓励的话很有作用啊,看来这些细节具体的东西还得自己根据实际入手做。
现在在测那个通讯协议,估计那个有问题。
如果有其他的程序能操作,用bus&hound工具查看一下通讯数据。
如果有其他的程序能操作,用bus&hound工具查看一下通讯数据。
用手机端的工具测了下,协议应该没问题,但在电脑端writefile往里写数据,一直返回87(参数错误),
是不是发送命令长度不对?
调试的是这条命令:
03H&&设备连接&&*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&V1.1
ASCII : SYNC ETX NULL NULL
HEX : 10 03 00 00
从设备与主设备建立连接。
ASCII : SYNC ETX LEN ACK
HEX : 10 03 00 XX
◆ 当ACK为零时,表示连接成功;
◆ 当ACK为非零时,表示连接失败,详见表-1错误码表。
函数是这么调用的:WriteFile(m_hWriteHandle,&pcBuffer,&szLen,&&BytesWritten,&&overlapped)
第一个参数是句柄,不用多说
第二个参数根据厂家说的发送指令报不超过64字节,是个65字节的数组,第一字节放报告ID,默认0,第二三四五分别是上面的10、03、00、00,后面全是初始化0;
第三个参数是命令长度64+1=65
第四个参数取写入的字节数
第五个和createfile保持一致,采用异步方式
哪里还有错?难道是第三个参数长度得与第二个匹配,实际多少就得多长?还是?
再劳烦各位,若能帮我解决问题,除积分答谢,其他的都好商量!
&&&&&&&&&&&&&&&
如果有其他的程序能操作,用bus&hound工具查看一下通讯数据。
用手机端的工具测了下,协议应该没问题,但在电脑端writefile往里写数据,一直返回87(参数错误),
是不是发送命令长度不对?
调试的是这条命令:
03H&&设备连接&&*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&V1.1
ASCII : SYNC ETX NULL NULL
HEX : 10 03 00 00
从设备与主设备建立连接。
ASCII : SYNC ETX LEN ACK
HEX : 10 03 00 XX
◆ 当ACK为零时,表示连接成功;
◆ 当ACK为非零时,表示连接失败,详见表-1错误码表。
函数是这么调用的:WriteFile(m_hWriteHandle,&pcBuffer,&szLen,&&BytesWritten,&&overlapped)
第一个参数是句柄,不用多说
第二个参数根据厂家说的发送指令报不超过64字节,是个65字节的数组,第一字节放报告ID,默认0,第二三四五分别是上面的10、03、00、00,后面全是初始化0;
第三个参数是命令长度64+1=65
第四个参数取写入的字节数
第五个和createfile保持一致,采用异步方式
哪里还有错?难道是第三个参数长度得与第二个匹配,实际多少就得多长?还是?
再劳烦各位,若能帮我解决问题,除积分答谢,其他的都好商量!
&&&&&&&&&&&&&&&
好像有setfeature和writefile两种方式来操作hid设备。
如果有其他的程序能操作,用bus&hound工具查看一下通讯数据。
用手机端的工具测了下,协议应该没问题,但在电脑端writefile往里写数据,一直返回87(参数错误),
是不是发送命令长度不对?
调试的是这条命令:
03H&&设备连接&&*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&V1.1
ASCII : SYNC ETX NULL NULL
HEX : 10 03 00 00
从设备与主设备建立连接。
ASCII : SYNC ETX LEN ACK
HEX : 10 03 00 XX
◆ 当ACK为零时,表示连接成功;
◆ 当ACK为非零时,表示连接失败,详见表-1错误码表。
函数是这么调用的:WriteFile(m_hWriteHandle,&pcBuffer,&szLen,&&BytesWritten,&&overlapped)
第一个参数是句柄,不用多说
第二个参数根据厂家说的发送指令报不超过64字节,是个65字节的数组,第一字节放报告ID,默认0,第二三四五分别是上面的10、03、00、00,后面全是初始化0;
第三个参数是命令长度64+1=65
第四个参数取写入的字节数
第五个和createfile保持一致,采用异步方式
哪里还有错?难道是第三个参数长度得与第二个匹配,实际多少就得多长?还是?
再劳烦各位,若能帮我解决问题,除积分答谢,其他的都好商量!
&&&&&&&&&&&&&&&
好像有setfeature和writefile两种方式来操作hid设备。
setfeature是发特征报告的吧,用
NTSTATUS&__stdcall
HidP_GetCaps&(
&&&IN&&&&&&PHIDP_PREPARSED_DATA&&&&&&PreparsedData,
&&&OUT&&&&&PHIDP_CAPS&&&&&&&&&&&&&&&&Capabilities
&&&);这个方法取得的特征报告长度FeatureReportByteLength是0
报告长度InputReportByteLength、OutputReportByteLength都是64,
是不是改读取报告,而不是特征报告呢?
话说什么时候该用特征报告呢?
把你的CreateFile创建m_hWriteHandle的函数贴下,还有你的overlapped赋值处理过程贴下。第四个参数你赋值为0看看。
把你的CreateFile创建m_hWriteHandle的函数贴下,还有你的overlapped赋值处理过程贴下。第四个参数你赋值为0看看。
m_hReadHandle=CreateFile(MyDevPathName,&
GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,&
OPEN_EXISTING,
//FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
FILE_ATTRIBUTE_NORMAL,
m_hWriteHandle=CreateFile(MyDevPathName,&
GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,&
OPEN_EXISTING,
//FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
FILE_ATTRIBUTE_NORMAL,
OVERLAPPED&
memset(&overlapped,&0,&sizeof(overlapped));
overlapped.hEvent&=&m_hWriteE
m_hWriteEvent(CreateEvent(NULL,TRUE,FALSE,NULL))
第五个参数赋0吧?已经试过,不行的。第四个是取写入数据的长度,初始化就是0.
hOut=CreateFile(devName,
//&设备路径
GENERIC_READ|GENERIC_WRITE,
//&访问方式
FILE_SHARE_READ|FILE_SHARE_WRITE,
//&共享模式
//&SECURITY_ATTRIBUTES&类型指针
OPEN_EXISTING,
//&文件不存在时返回失败
FILE_FLAG_OVERLAPPED,
//&以重叠(异步)模式打开
//&模板文件句柄
厂家发测试工具了,Bus&Hound能捕获到设备和电脑的通信,
命令比文档上给的多个a5,&04,04是长度,主机往电脑写入0&a5&04&10&03&00&00&
用writefile还报参数错误,用HidD_SetOutputReport报数据错误(循环冗余检查)
写报告打开方式(同步异步)和createfile保持一致了
m_hReadHandle=CreateFile(MyDevPathName,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&GENERIC_READ,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&FILE_SHARE_READ|FILE_SHARE_WRITE,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&NULL,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&OPEN_EXISTING,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&FILE_ATTRIBUTE_NORMAL,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&NULL);&
m_hWriteHandle=CreateFile(MyDevPathName,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&GENERIC_WRITE,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&FILE_SHARE_READ|FILE_SHARE_WRITE,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&NULL,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&OPEN_EXISTING,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&FILE_ATTRIBUTE_NORMAL,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&NULL);&
创建了两个一样的啊,
函数是这么调用的:WriteFile(m_hWriteHandle,&pcBuffer,&szLen,&&BytesWritten,&&overlapped)
m_hWriteHandle这个句柄有效?
谢谢大家的回复,问题已经解决了,是我写数据命令格式有问题。各种资料上都说,命令前要加报告ID,我就把这个加上,1、2、3、4之类的,实际上要按我们自己定义的格式输入,a5&后面数据的长度&各种命令&验证码...........................
或许这个a5就是报告id吧。
我在想,要有个现成的操作HID设备的类就好了,或者dll什么的Master/Slave底层通信的体系权衡
项目需要,在写Master/Slave底层分布式通信模块,它的体系结构图:
通信模式:可以选择Socket和或者Socket之上的RPC协议来进行,考虑到项目的需求,使用了RPC来支持Master和Slave之间的通信。
Master与Slave之间实现互联的功能并不难,但是Master与Slave之间的相互感知功能,Master节点的异常或者Slave节点的宕机,都是在设计时应该考虑的问题。
1)Slave节点正常退出之前,应该通知Master。这个功能通过Slave节点运行时添加Runtime.getRuntime().addShutdownHook(?
extends Thread), 的方法来做处理, 在具体的Thread方法中仍然可以使用RPC来通知Master.
Slave节点非正常退出,这个原因可能是多方面的。这个由Master根据收到的Slave节点的心跳包的异常,比方说,Master原来是每10s收到一个心跳包,但是Slave
A已经1分钟没有发送心跳包了,这时Master会把Slave节点从active列表中取出,然后通过发送ping来验证,Slave后面的端口是否还存在。
3)Master正常退出和非正常宕机,可以将这两点统一对待,因为Master一旦不工作,将会对整个系统的影响是毁灭性的,所以,必须提高LOG的级别为SERVER.
提供Master的容错能力可以通过以下步骤来做:
Master退出之后,使用Zookeeper选择一个新的Master,需要对于记录系统执行的详细状态,并持久化到文件中。
2) 准备一个Standby Master, 在开始阶段Standby
Master不提供服务,等到一个Master宕机之后,Standby Master开始代替原Master进行工作。
3)Slave节点对于在心跳阶段条件轮询功能,探测Master节点的状态,探测Master节点not
available,则对于slave与Master通信的线程,暂时suspend,等到新的master到来之后的notify。
实现一个系统,不仅仅是功能的实现,更多的时候,还有对于整体上的把握,要是每一个模块清晰,透彻,哪怕一个很复杂的功能实现,都要经过一步一步的剖析,直到每一块都是清晰可见。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。中控考勤系统——怎样让每名员工可以自己在电脑上查看自己的打卡记录?_百度知道
中控考勤系统——怎样让每名员工可以自己在电脑上查看自己的打卡记录?
司用的是中控的指纹考勤系统,当前只有前台能看到所有员工的考勤信息?如何实施,每周&#47,因信息化实施不完善;月会将考勤异常信息告知给员工,非常不方便。中控这个考勤记录管理系统是否可以实现——每名员工可以自己在电脑上查看自己的打卡记录,让其填写加班单
提问者采纳
为保险起见不提倡这样其实就是用网线连接到你们的局域网里面,每个人电脑上安装软件,限制一定的权限就可以了
提问者评价
其他类似问题
您可能关注的推广回答者:
考勤系统的相关知识
其他4条回答
可以实现啊,我现在写的这套系统就可以在自己电脑上打卡,这个程序可以按要求写
苏州智跃人事考勤软件一般集团公司有几千员工,但是不可能每个员工都用电脑,所以你提的这种方案是片面性的。智跃人事考勤软件研发出了员工考勤工资查询系统,每个员工可以在专用的查询设备上利用自己的卡或指纹查询自己所有的考勤、请假、工资等。智跃人事考勤软件为网络版。
建议考虑试用泰格的网络考勤系统。可以在线填写加班单,申请请假等,领导审批;每名员工能自己查看了解自己的考勤情况,及申请情况,考勤数据透明,公正。
最简单的,用个网络版的软件,Tekard现在有免费试用的,给个邮箱发给你,记得给分哈
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 指纹考勤系统 的文章

 

随机推荐