USART передача данных от устройсва контроллру - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » USART передача данных от устройсва контроллру
USART передача данных от устройсва контроллру
Ethno Дата: Вс, 13.03.2016, 19:14  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 93
Репутация: 0   ±
Замечания:   ±
На сайте с 11.12.2012

Статус: Offline

При передачи в контроллер по USART все вроде работает, но код большой получается, если кто может помочь его причесать....
При нажатии кнопки на устройстве, оно отправляет такой код контроллеру: 0x65 0x00 0x02 0x00 0xff 0xff 0xff
Это соответствует таблице ASCII в Dec будет 101 0 2 0 255 255 255

Dim Z As Byte
Dim V As Byte
Dim T As Byte
Dim H As Byte
Dim P As Byte
Dim S As Byte
Dim C As Byte

Z=0
V=0
T=0
H=0
P=0
S=0
C=0

loop:
HSerIn 1000, loop, [Z, V, T, H, P, S, C]
If Z=101 And V=0 And T=2 And H=0 And P=255 And S=255 And C=255 Then GoTo main
DelayMS 200
GoTo loop
ЯНДЕКС Дата: 13.03.2016
xvovanx Дата: Вс, 13.03.2016, 23:54  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 249
Репутация: 12   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

А если сравнивать не все переменные Z, V, T, H, P, S, C, а взять и сравнивать их контрольную сумму. Будет одна переменная суммы и одно сравнение...и код лучше будет выглядеть.
Сообщение отредактировал xvovanx - Вс, 13.03.2016, 23:56
anatol Дата: Пн, 14.03.2016, 09:37  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 547
Репутация: 14   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Цитата xvovanx ()
контрольную сумму
Контрольная из другой оперы. Проста сумма отпадает по причине от перемены мест слагаемых...( H=0 And P=255  эквивалентно H=255 And P=0).
Может сравнивать переменные в теле программы и выставлять бит в новой переменной условия If Z=101 And V=0 And T=2 And H=0 And P=255 And S=255 And C=255. Т.е. каждой переменной свой бит, и проверять эту переменную?
Цитата Ethno ()
но код большой получается
Код большой возможно из-за повторения сравнений. Может оптимальней сравнение выборкой по таблице - переменная, значение, эталон - результат запись бита.
AndrF Дата: Пн, 14.03.2016, 13:22  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 148
Репутация: 3   ±
Замечания:   ±
На сайте с 03.02.2012

Статус: Offline

Там должна быть обработка кода получаемая от дисплея. Что-то вроде:

If P=255 And S=255 And C=255 Then
    ' Если получены символы завершения посылки
    Select Z
        Case 101
            ' Touch event return data
            Select V
                Case 0
                    ' Page 0
                    Select T
                        Case 0
                            ' ComponentID = 0
                            ... Ну и так далее
                        Case 1
                            ...
                    EndSelect
                Case 1
                    ...
            EndSelect
        Case ...
            ...
    EndSelect
EndIf
Форум Picbasic.ru » Программирование МК » Proton PicBasic » USART передача данных от устройсва контроллру
Страница 1 из 11
Поиск: