一如何读取
正常读取IO是批量读取出来的,调用相关函数后会直接返回int型的数
IO点的状态是按照bit位排列的
bit0代表硬件接线的0号位置,
bit1代表硬件接线的1号位置
.....以此类推,缺少的为空置
一个INT数大小是32位,共可以存储32个点位信息
如上图,上面IN的状态读取的反馈值就是21
转换成2进制就是10101,刚好和上图IO状态一一对应
二.程序编写
1.先建立一个 INT数组,大小为32,用于存储读取出来的IO信息
因为我们读取的值是一个INT数,然后需要转换成单个IO的值
此时需要用的指令有>>右移指令 ,& 按位与运算指令
A = 0011 1100
A >> 2 将得到 15,即为 0000 1111
以下为具体实现程序
如果需要读取bit1位的状态,则先把读取的到值往右位移1位
即 input>>1 此时 1位的值就移动到了bit0,然后在和1进行与运算,得到 (input>>1)&1
如果该点位值为1那么与运算结果就是1,如果为0那么与运算结果就是0
这时得到我们想要的结果了,赋值给新建的数组就行了
最后使用for循环,从0开始运算IO状态,赋值给数组
那么数组0位的状态就是IO的0位状态,当值等于1时,代表该点位有效(部分设备可能是0有效)
后面程序中,只需要访问DI_Data这个变量就轻松知道设备IO的状态值了
喜欢的请关注下哦