client.py:
server.py:(注意b" "和encode()和端口重用)
报错了端口会被占用的,只能尽量保证它不要报错
状态机:(注意if/else的bug)
每个状态机都有按下和松开的情况,除了S_INIT,触发它的只有按下, 所以不用考虑它的松开的情况,并且我们这里只用count来记录。第一次的判断肯定是pinValue,第二次if判断的也就是count的情况。
count是这么理解的,每次while跳进来后只会走一个if,state改变后就去到下一次while中,到下一次while的时候来判断是count++还是以一个状态走。记得回去的时候count清个0。还有一个要注意的是不要只局限于S0和S1,对于S1->S0->S1的情况和S1->S1->S1的情况新开一个STATE去记录它就好了,这样也可以避免陷入死循环。
Python的Hash:(应该是叫Dict)