获取输入模式的IO端口电平
由于扩展板是使用串口通信的,因此获取IO口电平是一个通信过程,也就是先用 chklevels()语句发送一个查询命令,扩展板根据这个查询命令返回IO口电平值;
由于通信是异步的,因此获取结果需要在异步接收事件中进行
查询命令:
void e1.chklevels();
本命令为异步命令,执行后会立即执行下一条语句,而非等待结果返回才执行下一条
获取结果
int e1.getlevel(int port,int pin);
// port: 端口号 0-E端口 1-K端口 2-P端口
// pin: 引脚号 0~7
// 返回值:1-高电平 0-低电平 FF-端口未设置为输入模式
在页面处理中,当接收到扩展板传来的数据时,会自动调用 e1.recvExtend 事件,可以继承该事件完成页面的刷新
void e1.recvExtend(int mode, int bs, int len){
// 回调函数,mode=2表示接收到24个IO口引脚电平
//bs: 接收数据bin数组对应的句柄 len:bin数据长度
int i;
if(mode == 2){
// 显示接收到的24个IO口引脚电平
i=e1.getlevel(0,1); //获取E1端口的电平
m2.text=m2.text+"[E1:"+i+"]";
}
}
本事件传入参数mode==2时表示收到IO电平数据,不同的mode参数对应不同的功能,详细参见recvExtend事件详解
注意:
- 调用本功能前请不要忘记将管脚设置成输入模式。
- 请理解输入模式和键盘模式的差别:
- 输入模式是屏端发起的查询IO电平的操作,有发送--接收这个过程,因此如果把输入模式当初键盘IO使用会显得操作迟钝
- 而键盘模式是扩展板主动发起的,在有按键按下时发送数据到屏端,因此相应速度快,并且可区分按下和松开两种状态
- 因此:如果接按钮获取按钮状态,请使用K端口的8key模式,而非输入模式