Спасибо от UT4LW
Сергей, действительно, я там навесил много проверок на правильность координат окна и при этом упустил, что оно может находиться на другом мониторе.
Замените файл программы SDC.exe. в папке C:\Program Files (x86)\LwSoft\SDC\
Спасибо от RJ7M
Юрий, как и обещал расказываю по PW1. Скорее всего вы уже 99% из всего этого знаете, но просто, чтоб удостоверится, что мы on the same page.
Интерфейс ICOM CI-V построен, как одна общая шина. В COM-порте через интерфейс свой выход соединен со своим же входом и общей шиной.
Поэтому получается, что то, что мы пишем в Output сразу автоматом ЭХОМ приходит к нам на Input, порой случайно перемешиваясь с тем, что пришло из общей шины (данные при этом искажаются).
Если ты обнаруживаешь, что то, что отослал не совпадает с тем, что пришло - это означает конфликт и "мастер" должен отослать в шину специальный Jammer CODE
FC FC FC FC FC (именно 5 раз FC), а затем повторить свою посылку снова. На практике далеко не все устройства корректно отрабатывают конфликты на шине.
Поскольку PW1 относится как раз к таким устройствам, которые конфликты на шине не умеют обнаруживать и обрабюатывает их неправильно - можно эту часть не реализовывать, хотя "по хорошему", вроде бы как надо. На усмотрение в общем.
Формат ICOM пакета такой
FE FE [Кому] [От Кого] [Номер команды] [Данные] FD
Где:
[Кому] - адрес устройства куда мы отсылаем пакет. Есть специальный адрес 00 , который означает "Всем, кто меня слышит".
[От кого] - адрес источника, для компьютера это обычно E0, но желательно уметь его конфигурить.
Адрес усилителя конфигурится в усилителое перемычками, но допустим приймем что он равен 88 для простоты. Программа должна его перехватывать из запроса запоминать, чтоб потом использовать в посылках.
[Номер команды] - нас интересуют только четыре из них:
00 - Рассказать всем ([Кому] в этом случае всегда может быть только 00) информация о частоте (посылает компьютер => усилителю)
01 - Рассказать всем ([Кому] в этом случае всегда может быть только 00) о виде модуляции (посылает компьютер => усилителю)
03 - Запросить/ответить про установленную частоту (посылает усилитель => компьютеру)
04 - Запросить/ответить про установленный вид модуляции (посылает усилитель => компьютеру)
[Данные] - расписывать не буду, в мануале подробно есть.
Алгоритм работы PW1 такой:
1. Когда ты его включаешь он начинает отсылать компьютеру запрос частоты и вида модуляции (зачем ему моделяция не ясно - но просит зачем то )
Выглядит это так:
FE FE E0 88 03 FD - усилитель спрашивает частоту у компьютера
FE FE 88 E0 03 20 61 00 07 00 FD - Компьютер отвечает усилителю какая частота
FE FE E0 88 04 FD - усилитель спрашивает частоту у компьютера
FE FE 88 E0 04 07 00 FD - Компьютер отвечает усилителю какой вид модуляции
После этого усилитель успакаивается и просто сидит и слушает сообщения адресованные всем (адрес [Кому] = 00), если таких сообщений он не слышит втечении 30 сек, то он повторяет процедуру "распроса" компьютера о частоте и модуляции.
2. Наша задача, после первичного опроса отправлять широковещательные пакеты о частоте и модуляции не реже 1 раз/ 30 сек. Тогда усилитель счастлив и не задает лишних вопросов.
Обычно программа 1 раз в секунду отсылает пакеты вида:
FE FE 00 E0 00 20 61 00 07 00 FD - Компьютер рассказывает всем, какая же сейчас текущая частота
FE FE 00 E0 01 07 00 FD - Компьютер рассказывает всем, какой сейчас установлен вид модуляции
Усилитель при этом просто слушает, что ему говорит компьютер, отрабатывает вслед за указанными частотами/модуляцией и МОЛЧИТ.
Если мы крутим VFO трансивера, то компьютер просто должен посылать соотвествующие изменения частоты и модуляции широковещательным пакетом.
ну допустим так
FE FE 00 E0 00 20 61 00 07 01 FD
FE FE 00 E0 01 07 00 FD
FE FE 00 E0 00 20 61 00 07 02 FD
FE FE 00 E0 01 07 00 FD
FE FE 00 E0 00 20 61 00 07 03 FD
FE FE 00 E0 01 07 00 FD
3. У усилителя есть специальный конфигурационные режим, где он просто слушает широковещательные пакеты и запоминает адрес источника из них.
Чтобы впоследствии этот адрес использовать в запросах компьютеру (пункте номер 1).
Другими словами программа должна выдавать широковещательные пакеты о частоте вне зависимости от того слышала она запросы усилителя или нет.
Алгоритм прост: частота изменилась -> послали ширововещательный пакет о изменении частоты. Особо раздумывать там не надо.
Так же залог стабильной работы усилителя - это чтобы ему не приходилось переспрашивать частоту, т.е. раз в секунду надо широковещательный пакет отсылать вне зависимости менялась частота или нет.
Ну вот так он устроен.
Потому, что если он пытается переспрашивать, то иногда могут возникать конфликты на шине, а он не умеет их отрабатывать и глючит и даже иногда выходит из строя
(потому, что приняв искаженные конфликтом на шине данные - тупо пытается переключить диапазон, прямо по центру передачи - много PW1 так вышли из строя).
Если ему слать данные раз в секунду - он ничего не переспрашивает и конфликт на шине исключен.
Картинки со сниффера пакетов прилагаю в аттачменете. У меня адрес усилителя и программа одинаковый 0E - пусть это не вводит в заблуждение. Мне это было нужно для других целей.
Не знаю насколько понятно описал, если остались вопросы постараюсь ответить.
73! UT2UU
Последний раз редактировалось UT2UU; 28.11.2017 в 16:04.
Т.е., не нужно устраивать стартовый обмен, и вообще не нужно слушать, что передает нам усилитель. Достаточно просто периодически выдавать частоту настройки и все.
Вопрос: зачем ему нужен вид модуляции? Он выставляет соответствующие токи покоя, или что?
Теоретически - да, но практически я не уверен в этом. Мы можем попробовать. Но как то я отрубил просто канал приема (отпаял RxD) и у меня в таком виде оно не работало, точнее работало 1 раз из 9-ти.Т.е., не нужно устраивать стартовый обмен, и вообще не нужно слушать, что передает нам усилитель. Достаточно просто периодически выдавать частоту настройки и все.
Т.е. подозреваю, что первоначальный обмен таки нужен.
Для меня для самого загадка ... нигде ж не написано...Вопрос: зачем ему нужен вид модуляции? Он выставляет соответствующие токи покоя, или что?
Можно попробовать захардкодить конечно...
PS: Мануал по CI-V тут http://www.icomamerica.com/en/suppor...x?Download=882
Андрей, можете попробовать. Пока передается только частота в широковещательно формате. Может этого будет достаточно?
Exe файл тут.
Для пробы не нужен сам трансивер. Достаточно запустить его программу.
P.S. Всякий раз, когда разбираюсь, как поменяли местами байты, а внутри еще и полубайты, хочется изловить изобретателя этого айкомовского протокола...
Спасибо от UR5LAM
Последний раз редактировалось RJ7M; 28.11.2017 в 21:13.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)