HPC.ru lite - Все форумы
Форум: Palm OS: Palm, Treo, Sony Clie и другие
Тема: Скорость СОМ-порта?

[Ответить]
Vladimir_V [28.11.2006 10:28] Скорость СОМ-порта?:
Подскажите пожалуйста чайнику, как в Palm OS (у меня m130) устанавливается скорость обмена по СОМ- порту. Установки в ноуте под десктопом есть. А как определяется скорость СОМ-порта при работе наладонника с переферией?
Собственно, мне нужна скорость 19200 для работы с самодельным девайсом на микроконтроллере.

И еще вопрос. Какие из служебных сигналов СОМ-порта (DTR, RSC, CSC) требует Палм для корректной работы. СОМ-порт ноутбука прекрасно обходится только TX и RX. А Палм требует больше?
Vladimir_V [28.11.2006 14:11] :
Девайс у меня вот такой:
http://home.germany.net/100-173822/d_logger2.htm
С ноутбуком - работает. Там в шнуре токо три провода - земля, TX, RX. Палм через СОМ порт с Десктопом на ноуте - отлично работает. А Палм с логгером - ни в какую.
Софт для Палма вот этот:
http://home.germany.net/100-173822/Logger_29g_Palm.zip
Не исключено, что в софте заложена скорость 38400, ибо у немца - разработчика девайса такая скорость и была. Но я модифицировал зашивку микроконтроллера логгера под свою скорость. В ноутбуке я это поправляю просто устанавливая скорость СОМ-порта на ту, что мне надо. Можно ли так же сделать в КПК?

Засады я предположил две - не совпадают скорости обмена - в логгере жестко установлено 19200, или не хватает вспомогательных сигналов порта - CSC, RSC,DTR.

С КПК и их настройками совсем не знаком. Долго искал в Преференциях настройку СОМ-порта Палма - не нашел. Странно.
Потому и попросил подсказать - как настраивается СОМ-порт в Палмах?
Vladimir_V [28.11.2006 15:04] :
Блииин! Вот это попадалово! Я и предположить не мог.
Скорость то я не зря модифицировал - в логгере USART работает попеременно то с GPS-приемником, то с компом или КПК. Немец-разработчик девайса использовал GPS головку со скоростью 38400. Их давно сняли с производства. У аналога есть только 19200. Пришлось коэффициент в USARTе пересчитать. С ноутбуком это никаких проблем не создало.
Кто ж мог подумать, что в КПК нельзя настраивать СОМ-порт?

К исходникам, конечно, доступа нет.
А никак нельзя в загрузочном модуле программы для Палма, не влезая в ее, скорректировать скорость СОМ-порта? Поменять пару байт?
Vladimir_V [30.11.2006 09:33] :
Файл здесь:
http://home.germany.net/100-173822/Logger_29g_Palm.zip
Называется D_Log_A2g.prc
Он в работе использует еще MATHLIB.PRC
Который из них задает скорость порта я не знаю.

Буду очень благодарен от лица сообщества планеристов за помощь.
Я сам правил прошивку микропроцессора и знаю, что это не просто. Программу к КПК самому поправить - никак, - ума не хватит.
Vladimir_V [05.12.2006 09:29] :
Ураааа! Почти заработало!
Но, к сожалению, не совсем.
Суть дела такова:
Этот Логгер немец сделал довольно гибким. Есть возможность пользователю менять состав записываемых параметров и частоту их записи. Пользовательская конфигурация хранится в логгере в специальном слове (многобайтном), которое определяет число и размеры информационных полей в записи.
Соответственно, программа общения Palm с Логгером имеет два режима - чтение данных и чтение-модификация-запись конфигурационного слова. Без последнего режима полученные записи невозможно правильно прочитать, кроме первого параметра - высоты полета. Потому что правильное разворачивание записей получается только когда слова конфигурации в Логгере и Palm идентичны.

По видимому, скорость СОМ-порта для первого и для второго режима задается в разных кусочках программы. После Вашего препарирования заработало чтение данных. Программа читает их из Логгера правильно и без ошибок. Однако, конфигурационное слово не читается.

Режим общения определяется первым байтом, которое Palm выдает на Логгер в начале обмена данными.

Дмитрий, слезная просьба - добейте, пожалуйста, ее до конца. Чтобы заработало чтение и запись конфигурационного слова.

PS У меня сына тоже Димой зовут. Он уже программирует FPGA.
Vladimir_V [05.12.2006 11:20] :
Спасибо! Вечером обязательно попробую.
Вот только сомнение есть, насчет разных скоростей. Дело в том, что Логгер работает с ноутбуком уже давно. И там скорость обмена что в режиме чтения данных, что в режиме чтения-записи конфигурации одинаковая - 19200.
Сомнение почему? Да потому, что Логгер не различает, с ноутбуком он работает или с Palm'ом.

Там в программе открытий СОМ-порта должно быть еще больше. Дело в том, что там есть режим передачи сохраненных данных с Palm'а на ноутбук. Не через файловую систему, а через тот же самый интерфейс. При этом Palm полностью имитирует Логгер на передаче данных, а ноутбук даже не подозревает, что он читает данные не с Логгера, а с Palm'а.
Я не знаю, почему немец так написал. Я бы на его месте перекидывал бы с Palm'а на ноутбук готовый файл. Но он написал софт так.

Вечером, тем не менее, я попробую обе версии.
Спасибо за помощь!
Vladimir_V [05.12.2006 14:36] :
Я, конечно, и в РС - чайник. Но я полагал, что под виндами раз я установил скорость СОМ-порта в 19200, то ядро виндов не даст пользовательской программе произвольно менять скорость порта.
Хотя, честно говоря, я в этом не уверен.

Буду пробовать.

И еще нужен совет по Palm'у. Если какая-либо программа завесила СОМ-порт и сама зависла, то я не могу запустить другую прогу - выходит сообщение о невозможности открыть порт. Выключение питания Palm к моему удивлению ни фига не освобождает порт. Я эту проблему решал рестартом Palm через дырочку на задней стенке.
А есть более симпатичное решение?
Vladimir_V [06.12.2006 09:52] :
Попробовал обе версии. Первая - работает также, как предыдущая. То есть - данные читает, конфигурацию - нет. Вторая версия не читает ни то, ни другое.

Процедура соединения там выглядит так. Сначала запускается программа на КПК в режим соединения. Затем включается питание Логгера. При старте его программы после инициализации программа Логгера читает данные с СОМ-порта. Далее идет ветвление. Если читаемое слово - совпадает с образцом - то идет выдача Логгером слова конфигурации. Если нет - то идет выдача данных. В программе на КПК и РС есть таймер, ожидающий соединения с Логгером в течение 10 секунд. Если взаимопонимания не найдено - программа прерывает процедуру.
Как я понимаю, проблема в том, что Логгер не может прочитать слово, передаваемое КПК все время (10 секунд) в ожидании установления связи. Т.е. имеет место правильная стыковка скоростей в направлении от Логгера к КПК и неправильная в обратном направлении.
В микропроцессоре логгера (PIC16F876A) скорость USART на прием и передачу всегда одинаковая - там общий делитель тактовой частоты для приемника и передатчика. А как обстоят дела в Palm'е?
Там, случайно не раздельное задание скорости СОМ-порта на прием и передачу?
[Ответить]