bug记录
将数码管和led线程放在一起
有bug
当先开启数码管响应后,再去控制led,led控制会被数码管的响应覆盖;
所以在数码管的条件语句中需要添加一句将数码管指令赋值为0x70;
ioctl传参的时候cmd的数据类型unsigned char会报错,case语句超出unsigned char最大值,
因此定义时应该为unsigned int;
风扇控制时 如果使用
如果pthread_mutex_unlock在while外面,则需要再if里面解锁,不然cmd一直被锁住无法修改,风扇无法关闭,如果在while里面则不用在if里面解锁。
if(){} if(){} 会判断所有条件是否成立,互不干预,并都会去执行判断一次;可以在最后解锁
while(1) { pthread_mutex_lock(&mutex_sqlite); pthread_cond_wait(&cond_sqlite,&mutex_sqlite); if(fan_cmd==0x21) { strcpy(fan_status, "1"); write(fd,fan_status,sizeof(fan_status)/sizeof(fan_status[0])); // pthread_mutex_unlock(&mutex_sqlite); // sleep(2); } else if(fan_cmd==0x20) { strcpy(fan_status, "0"); write(fd,fan_status,sizeof(fan_status)/sizeof(fan_status[0])); sleep(2); } pthread_mutex_unlock(&mutex_sqlite); } if(){} else if(){} 如果 if条件成立,则 else if 不会再次执行;若if不成立,才会执行 else if语句; 使用这个语句需要先在if中解锁
还没有评论,来说两句吧...