Вверх ↑
Этот топик читают: Гость
Этот топик был перемещен из раздела "Помощь по среде"
Ответов: 8926
Рейтинг: 823
#31: 2015-05-29 18:17:14 ЛС | профиль | цитата
flint2, синхронный режим хорош при уверенности в линии связи, чтобы пакеты не разрывались, здесь при 5-6 байтах в пакете можно и синхронный применить
карма: 19

0
Ответов: 91
Рейтинг: 6
#32: 2015-05-29 19:52:40 ЛС | профиль | цитата
Огромное спасибо господа!!!
Я в растерянности.... Не думал что все так сложно.... Подвис маненько. Буду разбираться.

Посылка В устройство выглядит так как я описывал - но символы я использую для визуального понятия куда и что шлем.
На самом деле там используется их шестнадцатеричное значение. Символ "v" читается визуально легче чем 0х76;
Хотя можно и десятичное использовать.
Вот расшифровка посылки.
v = выбор модуля устройства (блоков всего 5 и соответственно символов тоже)
b = выбор функции модуля (функций до 6, символов тоже)
0-16300 = дата для записи в регистры модуля.

Так что в десятичной форме это будет так: 118 + 98 + 16300 послали. Они так и должны прочитаться устройством. Это все беззнаковые.


Принимаем данные в следующем виде - 1й байт + 2й байт + 3 байт + номер столбца + номер строки + контрольный бит
Первые три байта 24 битная переменная разрезанная на 3 части и дальше идентификаторы столбца и строки для занесения в таблицу.
Дальше переменную надо срастить и сделав вычисления занести в таблицу в зависимости от строк и столбцов.


Кстати о скорости = скорость обмена неважна. Достаточно 1200. У меня получается посылка + считывание каждые 300 миллисекунд.
Времени на прередачуприем вполне достаточно. Если удастся въехать в HiAsm - может быть и увеличится поток данных, но не думаю что сильно.

Ещё раз огромное спасибо вам за помощь. Буду впитывать и думать....

Линия связи - 50см USB кабеля, потом USB>RS232 свисток, потом опторазвязка на РС817.



карма: 0

0
Ответов: 8926
Рейтинг: 823
#33: 2015-05-29 20:15:51 ЛС | профиль | цитата
ibegen писал(а):
+ контрольный бит
Бит или байт?
Выходит устройство не самостоятельно шлёт данные, но только отвечает на запрос?
Сколько макс/мин времени от посылки запроса до получения ответа?
Таблица своя (текстовая) или БД, или Excel?
карма: 19

0
Ответов: 91
Рейтинг: 6
#34: 2015-05-29 21:13:21 ЛС | профиль | цитата
Извините Леонид, конечно байт. ОписАлся....
Ну можно сказать что блок отвечает и самостоятельно.
Сейчас полностью выглядит так:
После того как девайс выходит на готовность (зеленый Led) -
Устанавливаем значения нескольких переменных.
После того как готовность есть - нажимаем старт - и начинается передача этих сформированных заранее нескольких пакетов, по протоколу который я описал.
Устройство начинает работать и собирать данные - одна точка - каждые 300мс. Как только точка готова - отсылается в РС.
При этом РС записывает значения точек по столбцам и строкам в таблицу. При этом РС смотрит контрольный байт.
Если байт - равен 111 - то все ок и работаем дальше. Если код байта отличается от 111 то РС шлет комманду "СТОП".
Точек данных - до 600 строк в 5 столбцах.

В зависимости от уровня освоения программы, протокол может измениться. Вдруг случится чудо и я смогу что то простое изобразить....

Таблица - простой текстовый файл совместимый с EXCEL. Так как EXCEL немного знаю - таблицу буду строить в нём.
Но предполагаю перейти в будущем на GNUPLOT. Уж очень она крута для таблиц....


карма: 0

0
Ответов: 8926
Рейтинг: 823
#35: 2015-05-30 14:16:59 ЛС | профиль | цитата
ibegen, для примера набросал пару программок: иммитатор ваших данных и чтение/запись вашего железа.
карма: 19

1
файлы: 2imitator_com.rar [2.7KB] [264], readwrite_com.rar [3.4KB] [238]
Голосовали:ibegen
Ответов: 91
Рейтинг: 6
#36: 2015-05-30 22:28:10 ЛС | профиль | цитата
Леонид, нет слов. Я вас ОЧЕНЬ благодарю. Ваша помощь неоценима!!!!

Даже теряюсь что сказать.... Просто сказать спасибо - это не то что надо.... Все, ухожу в изучение темы!!!!

------------ Дoбавленo в 22.28:
Начинаю разбирать по кирпичикам....
Первый вопрос связан с операциями с битами.
Из вашего примера Леонид, я понял как 16 битную переменную резать на первый и второй байты.
Но совершенно запутался как 24 битную поделить.... на три байта.
Я понимаю что математику надо учить, а не проходить.... мимо... как я в свое время.

#pas
Add(MainForm,3182787,56,63)
{
Left=100
Top=100
Width=521
Height=143
Point(onClose)
}
Add(Hub,15719913,126,119)
{
InCount=2
OutCount=4
link(onEvent1,15074373:doOperation,[(206,125)(206,76)])
link(onEvent2,14644621:doOperation,[])
}
Add(Math,14644621,224,126)
{
OpType=7
Op2=256
ResultType=0
link(onResult,14827653:doText,[])
}
Add(Math,15074373,224,70)
{
OpType=8
Op2=256
ResultType=0
link(onResult,5455257:doText,[])
}
Add(Edit,14827653,287,126)
{
Left=130
Top=45
Width=100
Text="HiByte"
}
Add(Edit,5455257,287,70)
{
Left=250
Top=45
Width=95
Text="LoByte"
}
Add(Edit,5387998,63,119)
{
Left=15
Top=45
Width=90
DataType=1
link(onChange,15719913:doEvent1,[])
}
Add(Label,12109442,126,49)
{
Left=30
Top=20
Width=54
Height=20
Caption="Decimal"
}
Add(Label,4505963,133,56)
{
Left=150
Top=20
Width=44
Height=20
Caption="Byte 2 "
}
Add(Label,12872929,143,63)
{
Left=270
Top=20
Width=41
Height=20
Caption="Byte 1"
}
Add(Label,9551904,154,77)
{
Left=400
Top=20
Width=41
Height=20
Caption="Byte 0"
}
Add(Edit,9615799,287,189)
{
Left=375
Top=45
Width=95
}



карма: 0

0
Ответов: 8926
Рейтинг: 823
#37: 2015-05-30 23:09:59 ЛС | профиль | цитата
ibegen, операции DIV (целочисленное деление -- отбрасывает дробную часть, оставляя целое число), MOD (оставляет остаток от деления).
code_35772.txt
карма: 19

0
файлы: 1code_35772.txt [2.5KB] [407]
Ответов: 91
Рейтинг: 6
#38: 2015-05-31 16:54:50 ЛС | профиль | цитата
Спасибо Леонид!!!
------------ Дoбавленo в 16.54:
Леонид, в вашем примере, ComboBox сразу выдает номер доступного порта в виде цифры.
Я так пробовал делать, но у меня почему то всегда выдает название Сом3 Сом5 и т.д.
В настройках ComboBox или ListBox вроде бы установки такиеже как у вас...
#pas
Add(MainForm,2953706,245,105)
{
Width=953
Height=544
}
Add(COM,918822,525,273)
{
link(onWrite,10235871:doMessage,[])
link(Port,2022022:Text,[(531,225)(503,225)])
link(BaudRate,2731037:Text,[(538,225)(608,225)])
}
Add(EnumCOM,4350098,406,133)
{
link(onEnumPorts,2022022:doAdd,[])
}
Add(Button,210468,315,105)
{
Left=225
Top=20
Width=60
Height=45
WinStyle=4
Caption="порт ?"
link(onClick,7833892:doEvent1,[])
}
Add(Hub,7833892,364,105)
{
OutCount=3
link(onEvent1,2022022:doClear,[(465,111)(465,146)])
link(onEvent2,4350098:doEnumPorts,[(392,118)(392,139)])
}
Add(ListBox,2731037,602,133)
{
Left=300
Top=70
Width=65
Height=85
Enabled=1
Strings=#3:600|4:1200|4:2400|4:4800|4:9600|
DataType=1
Point(doSelect)
Point(doEnabled)
link(onClick,918822:doOpen,[(646,146)(646,213)(489,213)(489,279)])
}
Add(Edit,15712307,406,294)
{
Left=360
Top=270
link(onChange,918822:doWrite,[])
}
Add(Message,10235871,588,273)
{
}
Add(Button,13738540,329,294)
{
Left=290
Top=270
link(onClick,15712307:doText,[])
}
Add(ListBox,2022022,497,133)
{
Left=225
Top=70
Width=60
Height=85
DataType=1
Point(doEnabled)
link(onClick,2731037:doEnabled,[(565,146)(565,188)])
}

карма: 0

0
Ответов: 2059
Рейтинг: 132
#39: 2015-05-31 17:11:23 ЛС | профиль | цитата
ibegen, у меня твоя схема правильно работает.
Выдаёт - Com1, может быть у тебя порт занят после всяких экспериментов?
номер доступного порта в виде цифры.

В настройках ComboBox или ListBox вроде бы установки такиеже как у вас...

Смотри EnumCOM.
карма: 6

0
Ответов: 8926
Рейтинг: 823
#40: 2015-05-31 17:24:53 ЛС | профиль | цитата
ibegen, перед началом работы с незнакомым компонентом полезно ознакомится с перечнем свойств и возможных не отражаемых по умолчанию точек, вдумчиво и внимательно читая примечания
Свойства_и_Точки.jpg
карма: 19

0
файлы: 1Свойства_и_Точки.jpg [17.2KB] [792]
Ответов: 91
Рейтинг: 6
#41: 2015-05-31 18:24:19 ЛС | профиль | цитата
Вот ведь еж иттить... Заработало!!!!
Спасибо Леонид,
перед началом работы ... ознакомится с перечнем свойств ... вдумчиво и внимательно читая примечания

Да, так и делаю... Но тут такой объем компонентов и точек и всяко разно..... Но до жути интересно!!!!! А ноги то бегут впереди головы, тем более на руках готовое железо.

flint2, а у вас название выдает одной цифрой? Или полный вид - СОМ1?

Теперь для тренировки хочу сообразить как из полного имени - сделать простой номер ну и уж потом то его и вносить в управление портом.

карма: 0

0
Ответов: 2059
Рейтинг: 132
#42: 2015-05-31 18:30:20 ЛС | профиль | цитата
ibegen, как положено в твоей схеме, - СОМ1.
Я сначала подумал, что вопрос - почему СОМ3, а не СОМ1?
А про настройки ComboBox или ListBox написал, что они вне подозрений и имеют полное алиби.
карма: 6

0
Ответов: 91
Рейтинг: 6
#43: 2015-05-31 20:06:15 ЛС | профиль | цитата
Леонид, в вашем примере вы применяете для соединения 4 переменных компонент FormatStr.
Проверяя в железе, заметил такую странность - если число одного из байтов равно 0 или 1, то передается знак разделителя - % - (37 decimal) В остальных случаях все ок.
Вот как передаются числа:
0 - 118 98 37 37
1 - 118 98 37
2 - 118 98 2 37
128 - 118 98 128 37
254 - 118 98 254 37
255 - 118 98 255 37
256 - 118 98 37
257 - 118 98
258 - 118 98 2
512 - 118 98 37 2

Я так понимаю это особенность этого компонента? Можно как то изменить это?

Я поменял 1 компонент FormatStr на три штуки StrCat.
Теперь числа передаются правильно.
Насколько корректен такой вариант?
code_35781.txt





карма: 0

0
файлы: 1code_35781.txt [3.1KB] [408]
Ответов: 8926
Рейтинг: 823
#44: 2015-05-31 20:12:17 ЛС | профиль | цитата
ibegen, code_35782.txt (автор IC -- Tad )
карма: 19

0
файлы: 1code_35782.txt [1KB] [437]
Ответов: 16884
Рейтинг: 1239
#45: 2015-05-31 20:58:05 ЛС | профиль | цитата
ibegen,
code_35783.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1code_35783.txt [3.4KB] [461]
Голосовали:ibegen
Сообщение
...
Прикрепленные файлы
(файлы не залиты)