本技术涉及汽车,具体涉及一种光耦开关的信号检测方法、装置及电子设备。
背景技术:
1、相关技术下,常使用中断法来检测光耦开关的信号,将光耦开关的一个输出端连接到微控制器的一个支持中断功能的gpio引脚,另一个输出端连接到微控制器的一个普通gpio引脚,配置连接到支持中断功能的gpio引脚的工作模式为中断模式,配置gpio引脚中断的触发条件为电平触发。当旋转光耦开关时,触发中断,根据配置的触发条件,在中断处理函数中对上述普通gpio引脚进行电平高低判断,电平低,则表示顺时针旋转;电平高,则表示逆时针旋转。但是在使用中断法对光耦开关进行信号检测的过程中,会存在震荡干扰,这种震荡干扰会降低光耦开关的信号检测的准确性。
2、因此,亟需一种光耦开关的信号检测方法、装置及电子设备来解决震荡干扰会降低光耦开关的信号检测的准确性的问题。
技术实现思路
1、本技术提供了一种光耦开关的信号检测方法、装置及电子设备,能够提高光耦开关的信号检测的准确性。
2、第一方面,本技术实施例提供了一种光耦开关的信号检测方法,所述方法包括:
3、获取光耦开关的第一输出端口和第二输出端口的第一输入状态,所述第一输入状态采用两位二进制数表示;
4、轮询所述第一输出端口和所述第二输出端口,在所述第一输入状态发生状态转变的情况下,获取所述第一输出端口和所述第二输出端口的第二输入状态,将所述第一输入状态向高位移动两位,并在所述第一输入状态的低位补充所述第二输入状态,得到中间状态;
5、在所述第二输入状态发生状态转变的情况下,获取所述第一输出端口和所述第二输出端口的第三输入状态,将所述中间状态向高位移动两位,并在所述中间状态的低位补充所述第三输入状态,得到检测状态;
6、根据所述检测状态,判断所述光耦开关的转动状态;
7、在所述转动状态为有效转动状态的情况下,根据所述检测状态确定所述光耦开关的旋转方向和旋转次数,得到检测结果。
8、通过采用上述技术方案,获取光耦开关的第一输出端口和第二输出端口的第一输入状态,第一输入状态采用两位二进制数表示,方便后续的组合和判断;轮询第一输出端口和第二输出端口,在第一输入状态发生状态转变的情况下,获取第一输出端口和第二输出端口的第二输入状态,将第一输入状态向高位移动两位,并在第一输入状态的低位补充第二输入状态,得到中间状态;在第二输入状态发生状态转变的情况下,获取第一输出端口和第二输出端口的第三输入状态,将中间状态向高位移动两位,并在中间状态的低位补充第三输入状态,得到检测状态,每一次状态转变只有一个二进制位的跳变,能够降低震荡干扰对光耦开关的信号检测的影响;根据检测状态,判断光耦开关的转动状态,可以验证光耦开关转动的有效性;在转动状态为有效转动状态的情况下,根据检测状态确定光耦开关的旋转方向和旋转次数,得到检测结果,可以确定旋转方向是顺时针转动还是逆时针转动,还可以统计旋转次数。本技术的实施例能够提高光耦开关的信号检测的准确性。
9、在本技术的一些实施例中,在所述获取光耦开关的第一输出端口和第二输出端口的第一输入状态,所述第一输入状态采用两位二进制数表示之前,所述方法还包括:
10、使用预设的gpio接口读取得到光耦开关的第一输出端口的第一输入值和第二输出端口的第一输入值,所述第一输出端口的第一输入值和所述第二输出端口的第一输入值为高电平或低电平;
11、使用预设的组合方式将所述第一输出端口的第一输入值和所述第二输出端口的第一输入值进行组合,得到所述光耦开关的第一输出端口和第二输出端口的第一输入状态。
12、通过采用上述技术方案,使用预设的gpio接口读取得到光耦开关的第一输出端口的第一输入值和第二输出端口的第一输入值;使用预设的组合方式将第一输出端口的第一输入值和第二输出端口的第一输入值进行组合,得到光耦开关的第一输出端口和第二输出端口的第一输入状态,能够得到光耦开关当前的输入状态,方便后续的状态组合。
13、在本技术的一些实施例中,所述将所述第一输入状态向高位移动两位,并在所述第一输入状态的低位补充所述第二输入状态,得到中间状态,包括:
14、使用预设的左移操作符将所述第一输入状态向高位移动两位;
15、在所述第一输入状态的低位,使用预设的按位或操作符补充所述第二输入状态,得到中间状态。
16、通过采用上述技术方案,使用预设的左移操作符将第一输入状态向高位移动两位;在第一输入状态的低位,使用预设的按位或操作符补充第二输入状态,得到中间状态,能够将输入状态进行组合,方便后续状态进一步的组合。
17、在本技术的一些实施例中,所述根据所述检测状态,判断所述光耦开关的转动状态,包括:
18、获取所述光耦开关的预设的编码状态表,所述预设的编码状态表包括编码状态与编码状态对应的转动状态;
19、将所述检测状态与编码状态进行匹配,得到匹配结果;
20、在所述匹配结果指示匹配成功的情况下,根据所述匹配结果,得到与所述检测状态对应的转动状态。
21、通过采用上述技术方案,获取光耦开关的预设的编码状态表,预设的编码状态表包括编码状态与编码状态对应的转动状态,能够了解编码状态与其对应的转动状态;将检测状态与编码状态进行匹配,得到匹配结果;在匹配结果指示匹配成功的情况下,根据匹配结果,得到与检测状态对应的转动状态,能够快速地判断光耦开关的转动状态。
22、在本技术的一些实施例中,所述预设的编码状态表还包括:与编码状态对应的旋转方向;
23、所述在所述转动状态为有效转动状态的情况下,根据所述检测状态确定所述光耦开关的旋转方向和旋转次数,得到检测结果,包括:
24、在所述转动状态为有效转动状态的情况下,根据所述编码状态,得到与所述检测状态对应的旋转方向;
25、在所述与所述检测状态对应的旋转方向为顺时针转动的情况下,控制所述光耦开关顺时针旋转一次后,执行所述轮询所述第一输出端口和所述第二输出端口的步骤。
26、通过采用上述技术方案,预设的编码状态表还包括与编码状态对应的旋转方向,可以了解编码状态与其对应的旋转方向;在转动状态为有效转动的情况下,根据编码状态,得到与检测状态对应的旋转方向,能够快速地确定光耦开关的旋转方向;在与检测状态对应的旋转方向为顺时针转动的情况下,控制光耦开关顺时针旋转一次后,执行轮询第一输出端口和第二输出端口的步骤,能够结束本次信号检测并开始新一轮的轮询检测。
27、在本技术的一些实施例中,在所述在所述转动状态为有效转动的情况下,根据所述编码状态,得到与所述检测状态对应的旋转方向之后,所述方法还包括:
28、在所述与所述检测状态对应的旋转方向为逆时针转动的情况下,控制所述光耦开关逆时针旋转一次后,执行所述轮询所述第一输出端口和所述第二输出端口的步骤。
29、通过采用上述技术方案,在与检测状态对应的旋转方向为逆时针转动的情况下,控制光耦开关逆时针旋转一次后,执行轮询第一输出端口和第二输出端口的步骤,能够结束本次信号检测并开始新一轮的轮询检测。
30、在本技术的一些实施例中,在所述在所述转动状态为有效转动的情况下,根据所述编码状态,得到与所述检测状态对应的旋转方向之后,所述方法还包括:
31、在所述与所述检测状态对应的旋转方向不为顺时针转动或逆时针转动的情况下,执行所述轮询所述第一输出端口和所述第二输出端口的步骤。
32、通过采用上述技术方案,在与检测状态对应的旋转方向不为顺时针转动或逆时针转动的情况下,执行轮询第一输出端口和第二输出端口的步骤,能够结束本次信号检测并开始新一轮的轮询检测。
33、第二方面,本技术实施例提供了一种光耦开关的信号检测装置,所述装置包括:
34、第一状态获取模块,用于获取光耦开关的第一输出端口和第二输出端口的第一输入状态,所述第一输入状态采用两位二进制数表示;
35、中间状态获取模块,用于轮询所述第一输出端口和所述第二输出端口,在所述第一输入状态发生状态转变的情况下,获取所述第一输出端口和所述第二输出端口的第二输入状态,将所述第一输入状态向高位移动两位,并在所述第一输入状态的低位补充所述第二输入状态,得到中间状态;
36、检测状态获取模块,用于在所述第二输入状态发生状态转变的情况下,获取所述第一输出端口和所述第二输出端口的第三输入状态,将所述中间状态向高位移动两位,并在所述中间状态的低位补充所述第三输入状态,得到检测状态;
37、转动状态判断模块,用于根据所述检测状态,判断所述光耦开关的转动状态;
38、方向次数确定模块,用于在所述转动状态为有效转动状态的情况下,根据所述检测状态确定所述光耦开关的旋转方向和旋转次数,得到检测结果。
39、通过采用上述装置,调用第一状态获取模块获取光耦开关的第一输出端口和第二输出端口的第一输入状态,第一输入状态采用两位二进制数表示,方便后续的组合和判断;调用中间状态获取模块轮询第一输出端口和第二输出端口,在第一输入状态发生状态转变的情况下,获取第一输出端口和第二输出端口的第二输入状态,将第一输入状态向高位移动两位,并在第一输入状态的低位补充第二输入状态,得到中间状态;调用检测状态获取模块在第二输入状态发生状态转变的情况下,获取第一输出端口和第二输出端口的第三输入状态,将中间状态向高位移动两位,并在中间状态的低位补充第三输入状态,得到检测状态,每一次状态转变只有一个二进制位的跳变,能够降低震荡干扰对光耦开关的信号检测的影响;调用转动状态判断模块根据检测状态,判断光耦开关的转动状态,可以验证光耦开关转动的有效性;调用方向次数判断模块在转动状态为有效转动状态的情况下,根据检测状态确定光耦开关的旋转方向和旋转次数,得到检测结果,可以确定旋转方向是顺时针转动还是逆时针转动,还可以统计旋转次数。本技术的实施例能够提高光耦开关的信号检测的准确性。
40、第三方面,本技术实施例提供了一种电子设备,包括处理器、存储器、用户接口及网络接口,所述存储器用于存储指令,所述用户接口和网络接口用于给其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述电子设备执行上述第一方面提供的任意一项所述的方法。
41、第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,执行上述第一方面提供的任意一项所述的方法。
42、综上所述,本技术实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
43、1、获取光耦开关的第一输出端口和第二输出端口的第一输入状态;轮询第一输出端口和第二输出端口,在第一输入状态发生状态转变的情况下,获取第二输入状态,将第一输入状态和第二输入状态进行组合,得到中间状态;在第二输入状态发生状态转变的情况下,获取第三输入状态,将中间状态和第三输入状态进行组合,得到检测状态;根据检测状态,判断光耦开关的转动状态;在转动状态为有效转动状态的情况下,根据检测状态确定光耦开关的旋转方向和旋转次数,得到检测结果。本技术的实施例先获取光耦开关的第一输入状态,并在第一输入状态发生状态转变的时候获取第二输入状态和第三输入状态,得到检测状态,根据检测状态判断转动状态,确定旋转方向和旋转次数,得到检测结果,由于每一次状态转变只有一个二进制位的跳变,能够降低震荡干扰对光耦开关的信号检测的影响,从而提高光耦开关的信号检测的准确性。
44、2、使用预设的左移操作符将第一输入状态向高位移动两位,并在第一输入状态的低位,使用预设的按位或操作符补充第二输入状态,能够将输入状态进行组合,为后续检测状态的获提供了方法。
45、3、获取光耦开关的预设的编码状态表;将检测状态与编码状态进行匹配,得到匹配结果;根据匹配结果,得到与检测状态对应的转动状态,能够了解编码状态与其对应的转动状态,快速地判断光耦开关的转动状态。
46、4、获取光耦开关的预设的编码状态表,预设的编码状态表还包括与编码状态对应的旋转方向;在转动状态为有效转动的情况下,根据编码状态,得到与检测状态对应的旋转方向;判断旋转方向为顺时针转动、逆时针转动还是两者都不是,控制光耦开关顺时针旋转一次、逆时针旋转一次还是不旋转后,开始新一轮的轮询检测,能够了解编码状态与其对应的旋转方向,快速地确定光耦开关的旋转方向,结束本次信号检测并开始新一轮的轮询检测。