Kod: Zaznacz cały
Czy jest możliwość zliczenia przychodzących bajtów do bufora i po weryfikacji dopiero odbierać :?:
- If Ischarwaiting() > 0 Then
- Znak_ = Waitkey() 'pobierz znka z bufora
- If Znak_ = 13 Or Len(uart_komenda) > 6 Then ' jelsi ENTER lub wiecej niz 6 znaków to call uartrx
- Call Uartrx_ '
- Uart_komenda = ""
- Else
- Uart_komenda = Uart_komenda + Chr(znak_) 'kluczowe budowanie bufora
- Print Chr(znak_) ; 'to jest echo zeby było widac co przychodzi
- End If
Następnie wyczyść bufor czyli uart_komenda= ""
Jeśli piszesz własną komunikację od początku to zrobił bym to na tablicy nadawanie z printbin i odbiór z inputbin
Wtedy np w komórkę pierwszą zrobił bym jako nagłówek , ilość bajtów , komenda, wartość i na końcu crc.
- dim tablica_tx(6) as byte
- tablica(1)= 'tu nagłowek
- tablica(2)= 'tu ilość bajtów do przesłania razem z CRC
- tablica (3)= 'tu komenda
- tablica(4)= 'tu wartosc górny bajt
- tablica(5) = 'tu wartosc dolny bajt
- tablica(6) = 'tu CRC z wszystkich
******************************edit*************************************
Wtedy będzie łatwiej przewidzieć przychodzące ramki.
Bo jeśli odebrałeś nagłówek i ilość bajtów to wiesz kiedy przestać odbierać z bufora.