这边调用的是串口二
串口二配置
fm.register(32, fm.fpioa.UART2_RX, force=True)
读一个字节代码可放在在循环或者定时器里
usart_II.Read_onebytes = uart2.read(1)
#************************************************************************#
class usart_II:
Read_onebytes = 0
Read_onebyte = [0]
Read_Buf = [0]*1024
Cnt = 0
recvState = 0
class usart_II:
Read_onebytes = 0
Read_onebyte = [0]
Read_Buf = [0]*1024
Cnt = 0
recvState = 0
def usart2_Set_Protocol(h1,h2,tail):
if usart_II.Read_onebytes :
usart_II.Read_onebyte = (usart_II.Read_onebytes).decode('utf-8')
if usart_II.recvState == 0 :
if usart_II.Read_onebyte == h1 :
usart_II.recvState = 1
print('0')
return 1
if usart_II.recvState == 1 :
if usart_II.Read_onebyte == h2 :
usart_II.recvState = 2
usart_II.Read_Buf=[0]*1024
print('1')
return 1
else:
usart_II.recvState = 0
print('解析失败')
return 1
if usart_II.recvState == 2 :
usart_II.Read_Buf[usart_II.Cnt] = usart_II.Read_onebyte
usart_II.Cnt = usart_II.Cnt+1
if usart_II.Cnt == 3 :
usart_II.recvState = 3
usart_II.Cnt=0
print('2')
return 1
if usart_II.recvState == 3 :
if usart_II.Read_onebyte == tail :
print('3')
usart_II.recvState = 0
return 0
else:
usart_II.Read_Buf=[0]*1024
usart_II.recvState = 0
print('解析失败')
return 1
return 1
#usart_I.recvState = 0
#print(usart_I.Read_Buf[0],usart_I.Read_Buf[1],usart_I.Read_Buf[2])
#*** ***#
2023/2/20 1:27
再优化可以设定任意长度
#************************************************************************#
class usart_II_ID:
Read_onebytes = 0
Read_onebyte = [0]
Read_Buf = []
Cnt = 0
recvState = 0
def usart2_Set_ID_Protocol(h1,h2,tail,length):
#usart_II_ID.Read_onebytes = uart1.read(1)
if usart_II_ID.Read_onebytes :
usart_II_ID.Read_onebyte = (usart_II_ID.Read_onebytes).decode('utf-8')
if usart_II_ID.recvState == 0 :
if usart_II_ID.Read_onebyte == h1 :
usart_II_ID.recvState = 1
print('0')
return 1
if usart_II_ID.recvState == 1 :
if usart_II_ID.Read_onebyte == h2 :
usart_II_ID.recvState = 2
usart_II_ID.Read_Buf=[0]*length
print('1')
return 1
else:
usart_II_ID.recvState = 0
img.draw_string(0,50, 'Analysis Failed', color=color_G, scale=2.5)
print('解析失败')
return 1
if usart_II_ID.recvState == 2 :
usart_II_ID.Read_Buf[usart_II_ID.Cnt] = usart_II_ID.Read_onebyte
usart_II_ID.Cnt = usart_II_ID.Cnt+1
if usart_II_ID.Cnt == length :
usart_II_ID.recvState = 3
usart_II_ID.Cnt=0
print('2')
return 1
if usart_II_ID.recvState == 3 :
if usart_II_ID.Read_onebyte == tail :
print('3')
img.draw_string(0,50, 'Analysis Done', color=color_G, scale=2.5)
usart_II_ID.recvState = 0
print(usart_II_ID.Read_Buf)
return 0
else:
usart_II_ID.Read_Buf=[0]*length
usart_II_ID.recvState = 0
img.draw_string(0,50, 'Analysis Failed', color=color_G, scale=2.5)
print('解析失败')
return 1
return 1
#usart_I.recvState = 0
#print(usart_I.Read_Buf[0],usart_I.Read_Buf[1],usart_I.Read_Buf[2])
#*** ***#