键盘按键分类及其扫描机制解析

版权申诉
0 下载量 128 浏览量 更新于2024-10-09 收藏 49KB RAR 举报
资源摘要信息:"键盘按键扫描技术" 一、键盘的基本概念和组成 键盘作为计算机最重要的输入设备之一,是由一组规则排列的按键组成的电子设备。每一个按键对应一个或多个开关,当按下某个按键时,相应的开关被触发,通过电路将按键信号发送给计算机。键盘的核心部分包括键开关(用于检测按键动作)和键扫描电路(用于检测和识别按下的键)。当用户按下按键时,键盘的键扫描电路负责检测该信号并将其转换为可识别的键码。 二、键盘的分类 1. 按构造原理分类 - 触点式开关按键:这种类型的按键内部通常有一个机械接触点,在按键被按下时接触点闭合,从而形成电路并发送信号。这类键盘的典型代表是机械键盘和薄膜键盘。 - 无触点开关按键:无触点的键盘设计避免了物理接触点的使用,减少了磨损和机械故障。光敏、电容式和磁性开关等属于无触点的类型。 2. 按接口原理分类 - 编码键盘:编码键盘采用硬件逻辑电路来直接识别按键位置,并生成对应的键码。这种键盘的优点是速度快、响应时间短,但是成本相对较高,硬件实现复杂。 - 非编码键盘:非编码键盘不使用硬件电路来识别按键,而是依赖于外部软件来定义按键的功能和输出键码。这种方式灵活性高,可以通过软件更新来改变按键功能,但响应速度可能慢于硬件编码键盘。 三、键盘按键扫描技术 键盘按键扫描技术是实现键盘输入的关键技术之一。它是指通过一定的扫描顺序,检测并确认哪些按键被按下,以及对应的键码是什么。该技术通常包括以下几个步骤: 1. 初始化扫描:系统开始对键盘矩阵进行扫描,以确定哪个按键被按下。 2. 扫描检测:逐行逐列进行扫描,通过测量电路状态的变化来判断按键是否被触发。 3. 去抖动处理:由于按键在按下和释放过程中会产生抖动,可能导致信号不稳定。因此,需要通过软件或硬件的方法去除抖动,确保信号稳定。 4. 键码生成:在确认按键动作后,根据预设的编码规则生成对应的键码。 5. 数据传输:生成的键码被传送到计算机或设备的输入系统中,供进一步处理。 在实际的键盘设计中,以上步骤都依赖于复杂的电子电路和算法,以确保键盘的稳定性和响应速度。例如,压缩包子文件中的“去抖动.doc”文件可能详细描述了如何通过软件算法来实现稳定键输入的技术。 四、键盘扫描电路的原理 键盘扫描电路通常是一个矩阵排列的电路,它包含行线和列线。每按下一个按键,就相当于在矩阵的某一行和某一列之间形成了一个闭合电路,扫描电路通过检测行线和列线的交叉点来确定具体是哪个按键被按下。这种设计使得键盘可以用较少的引脚来控制大量的按键。 总结:通过上述内容,我们了解了键盘的基本组成、分类、按键扫描技术及其电路原理。了解这些知识点对于设计、维修或使用键盘都具有重要的意义。特别是在键盘按键扫描方面,深入理解其技术细节能够帮助我们更好地优化输入效率,解决实际问题,提高用户体验。

优化这个sql select FLOW_COMMON.c_business_id as business_id, (select max(f.end_time) from flow_hi_track f where f.business_id = FLOW_COMMON.c_business_id and f.action_type != 'CLAIM' ) as deal_time from template_flow_common FLOW_COMMON right join template_hollycrm1680160914000 hollycrm1680160914000 on FLOW_COMMON.c_business_id = hollycrm1680160914000.c_business_id where FLOW_COMMON.tenant_id = 'T000' and FLOW_COMMON.valid = 1 and lower(FLOW_COMMON.c_state) != 'draft' and ( ( FLOW_COMMON.c_flow_id in ('FLOW20230330152148238756') and (FLOW_COMMON.c_processing_group in ('1650685461842100265') ) or FLOW_COMMON.c_cur_assignee = '1639203916409208891' ) or FLOW_COMMON.c_creator = '1639203916409208891' or FLOW_COMMON.c_flow_id in ('FLOW20230330152148238756') or FLOW_COMMON.c_business_id in ('1650765461521956870', '1650765461521956870', '1650817085812506712', '1650831863482155082', '1654094763571281921', '1654001405104488514', '1654294361434751036', '1654445890410119245', '1654441313937915946', '1654433554383241232', '1653329109050196051', '1655380751421538376', '1655380751421538376', '1654732194700066894', '1654765190966673497', '1655862681678118938', '1654732194700066894', '1654732194700066894', '1654732194700066894', '1654441313937915946', '1656855682290286598', '1654732194700066894', '1654732194700066894', '1654732194700066894', '1656106327421747261') or (FLOW_COMMON.c_processing_group in ('1650685461842100265')) ) and FLOW_COMMON.c_workorder_type = 'C0018' and FLOW_COMMON.c_business_type = 'C00180008,C001800080001,C0018000800010001' LIMIT 572540,10;

2023-07-25 上传

优化这个sql SELECT count( 1 ) FROM ( SELECT B.ID, B.PURCHASE_REQUEST_ID, B.MATERIAL_ID, B.MATERIAL_CODE, B.MATERIAL_NAME, B.STANDARD, B.MODEL_ID, B.BILL_ROW_ID, B.BILL_NO, BILL_NAME, B.MODEL_CODE, B.MODEL_NAME, B.PARENT_MODEL_ID, B.PARENT_MODEL_CODE, B.PARENT_MODEL_NAME, B.UNIT_CODE, B.UNIT_NAME, B.PURCHASE_TYPE_CODE, CAST( NVL( B.APPLY_NUM, 0 ) AS NUMBER ( 24, 10 ) ) AS APPLY_NUM, CAST( NVL( B.DEAL_NUM, 0 ) AS NUMBER ( 24, 10 ) ) AS DEAL_NUM, CAST( NVL( B.RETURN_NUM, 0 ) AS NUMBER ( 24, 10 ) ) AS RETURN_NUM, B.DEAL_USER_ID, B.DEAL_USER_NAME, CAST( NVL( B.PRICE, 0 ) AS NUMBER ( 24, 10 ) ) AS PRICE, CAST( NVL( B.AMOUNT, 0 ) AS NUMBER ( 24, 10 ) ) AMOUNT, B.IMPLEMENT_CODE, B.IMPLEMENT_NAME, B.IMPLEMENT_INVEST_AMOUNT, B.PURCHASE_MANAGER_ID, B.PURCHASE_MANAGER_NAME, B.PROVIDER_ID, B.PROVIDER_NAME, B.REMARK, B.DELIVER_AREA, B.DELIVER_ADDRESS, B.RECEIVE_PEOPLE, B.RECEIVE_PEOPLE_PHONE, B.ITEM_STATUS, B.COST_CENTER, B.COST_BUDGET_CODE, B.COST_IMPLEMENT_NAME, B.FRAME_CONT_ID, B.FRAME_CONT_CODE, B.FRAME_CONT_NAME, B.DETAIL_CONFIG, B.PURCHASE_CATEGORY_CODE, B.INVOICE_TITLE_CODE, B.INVOICE_SEND_ADDRRSS, B.MATERIAL_REQUEST_ITEM_ID, B.YEAR, B.DELETE_FLAG, B.PROVINCE_CODE, B.REASON, B.PARENT_ITEM_ID, B.FRAME_CONT_ITEM_ID, B.SUB_MATERIAL_REQUEST_ID, B.SUB_MATERIAL_REQUEST_CODE, B.MATERIAL_URL, B.RECOMMEND_PROVIDER_NAMES, C.PURCHASE_REQUEST_CODE, C.PURCHASE_REQUEST_NAME, C.APPLY_TYPE_CODE, C.CREATOR_NAME, C.APPLY_TELEPHONE, C.COMPANY_NAME, C.DEPT_NAME, B.CREATE_TIME, TO_CHAR( B.CREATE_TIME, 'YYYY-MM-DD' ) CREATE_TIME_STR, C.ARRIVE_TIME, C.IS_TO_END, C.MONEY_WAY_CODE, C.OWN, C.APPLY_CATEGORY_CODE, C.manu_Type, C.BILL_ID, MMD.MATERIAL_TYPE_CODE, B.BRANCH_COMPANY_DEAL_USER_ID, B.BRANCH_COMPANY_DEAL_USER_NAME, ( SELECT ORG_NAME FROM ORGANIZATIONS WHERE DELETE_FLAG = '0' AND ORG_CODE = ( SELECT PARENT_COMPANY_NO FROM ORGANIZATIONS WHERE ID = B.MATERIAL_DEPT_ID )) AS MATERIAL_COMPANY_NAME, B.ORIGINAL, B.PROVIDER_PRODUCT_MODEL, B.PROVIDER_PRODUCT_NAME, B.PRODUCT_DESC, B.Back_Flag, CASE WHEN MMD.material_type_code = 'WZ' THEN '1' WHEN MMD.material_type_code = 'FW' THEN '2' ELSE '3' END apply_category_code_item, NVL( C.IS_CARDSYSTEM_REQUEST, '0' ) IS_CARDSYSTEM_REQUEST, B.APPLY_GROUP_AUTHORITES, B.SCIENTIFIC_RESEARCH_ID, B.SCIENTIFIC_RESEARCH_CODE, B.SCIENTIFIC_RESEARCH_NAME, B.PREQUALFY_CODE, nvl( C.IS_QUICK, '0' ) AS IS_QUICK, C.PURCHASE_WAY_CODE, C.PURCHASE_TYPE_CODE PURCHASE_TYPE_CODE_P, C.ORIGINAL_TYPE, C.PURCHASE_REQUEST_BILLS_TYPE, B.IS_FRAME_CONT_MONAD FROM PURCHASE_REQUEST_ITEM B LEFT JOIN PURCHASE_REQUEST C ON B.PURCHASE_REQUEST_ID = C.ID LEFT JOIN MATERIAL_DATA MMD ON MMD.ID = B.MATERIAL_ID AND MMD.DELETE_FLAG = '0' WHERE B.delete_flag = '0' AND B.Item_Status IN ( 1 ) AND NOT EXISTS ( SELECT * FROM purchase_request_item_log pril WHERE B.id = pril.purchase_request_item_id AND pril.lock_status = '1' AND pril.delete_flag = '0' ) AND ( ( c.apply_type_code NOT IN ( '20', '41', '3' ) AND nvl( B.Apply_Num, 0 ) > nvl( B.Deal_Num, 0 )) OR c.apply_type_code IN ( '20', '41', '3' ) ) AND B.Deal_User_Id =: 1 AND C.MONEY_WAY_CODE =: 2 AND C.APPLY_TYPE_CODE =: 3 AND C.PAY_OUT_TYPE_CODE =: 4 AND C.APPLY_CATEGORY_CODE =: 5 AND NVL( C.IS_CARDSYSTEM_REQUEST, '0' ) = : 6 AND NOT EXISTS ( SELECT * FROM purchase_request_item p left join material_province mp ON p.material_id = mp.material_id WHERE p.delete_flag = 0 AND mp.delete_flag = 0 AND mp.material_status = 03 AND mp.org_code = p.province_code AND p.id = B.id ) ORDER BY C.ID, B.ID ASC)

2023-06-08 上传