Atmega8 & LV
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
Тогда перед прибором Bytes On Port нужно подождать например секунду (или меньше или больше), но долго ты на этом не протянешь. В конце концов что то пойдёт вкривь
- EvgenIg
- beginner
- Сообщения: 40
- Зарегистрирован: 22 авг 2008, 21:34
- Версия LabVIEW: 8.5,2009
- Откуда: Санкт-Петербург
Re: Atmega8 & LV
не пойму, функция Bytes On Port чтоли не успевает считать байты во время выполнения программы?
какойта бред
какойта бред
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Atmega8 & LV
В смысле не успевает считать, это же свойство с параметром Read only, показывает кол-во байт в буфере, но не считывает.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
Да нет же. Смотри, ты получаешь пакет смотришь сколько байт в порте, например 5, считываешь их, потом в то время когда прибор посылает следующие 5, но ещё не доконца переслал ты смотришь сколько байт в порте (например 3) и считываешь эти три байта. В следующий раз ты считываешь оставшиеся 2 с прошлого пакет и уже всё сбилось.
Ну или засунь считывание хотя бы внутрь кейса, тогда считывание будет происходить только тогда, когда наберётся 5 байт. Но предупреждаю, что это тоже не самое лучшее решение.
Ну или засунь считывание хотя бы внутрь кейса, тогда считывание будет происходить только тогда, когда наберётся 5 байт. Но предупреждаю, что это тоже не самое лучшее решение.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
В общем делается так:
Пакет состоит из:
- байтов синхронизации (например 0х07 0х07)
- длины пакета (количество байт в пакете)
- идентифаера (чтобы определить о каком типе пакета идёт речь)
- данных (байты с полезной информацией, желательно если количество не превышает размер буфера в установках порта)
- проверочной суммы (для определения достоверности и полности пакета)
В приборе нужно:
- считать один байт и сверить с первым байтом синхронизации, если совпало, то
- считать один байт и сверить со вторым байтом синхронизации, если совпало, то перейти в режим - "синхронизирован"
- в режиме "синхронизирован" считать один байт, это длина пакета
- перевести считаный байт в число (например с помощью Type Cast)
- подать это число на VISA Read, для считывания содержимого пакета (т.е. полезной информации)
- разбить пакет на идентифаер и остальные данные, преобразить данные в числа и строки и выдать на лицевую панель например
- считать ещё один байт - проверочную сумму
- высчитать проверочную сумму пакета
- сравнить проверочную сумму
В случае каких либо ошибок или если проверочная сумма несовпала, то переходим в режим "несинхонизирован" и пробуем синхронизироваться по новой.
Это конечно только пример, может быть и по-другому. Но в принципе всё устроено почти так, с небольшими отклонениями.
Пакет состоит из:
- байтов синхронизации (например 0х07 0х07)
- длины пакета (количество байт в пакете)
- идентифаера (чтобы определить о каком типе пакета идёт речь)
- данных (байты с полезной информацией, желательно если количество не превышает размер буфера в установках порта)
- проверочной суммы (для определения достоверности и полности пакета)
В приборе нужно:
- считать один байт и сверить с первым байтом синхронизации, если совпало, то
- считать один байт и сверить со вторым байтом синхронизации, если совпало, то перейти в режим - "синхронизирован"
- в режиме "синхронизирован" считать один байт, это длина пакета
- перевести считаный байт в число (например с помощью Type Cast)
- подать это число на VISA Read, для считывания содержимого пакета (т.е. полезной информации)
- разбить пакет на идентифаер и остальные данные, преобразить данные в числа и строки и выдать на лицевую панель например
- считать ещё один байт - проверочную сумму
- высчитать проверочную сумму пакета
- сравнить проверочную сумму
В случае каких либо ошибок или если проверочная сумма несовпала, то переходим в режим "несинхонизирован" и пробуем синхронизироваться по новой.
Это конечно только пример, может быть и по-другому. Но в принципе всё устроено почти так, с небольшими отклонениями.