Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Вниз

com-порт... :)   Найти похожие ветки 

 
Volodymyr   (2003-06-18 20:14) [0]

трабл...

одна программа, две машины... работа с прибором через com-порт (вернее, два прибора)... программа работает только на прием данных... суть проблемы - на одной машине постоянно выбивает прием, процесс абсолютно случайный :(. единственное, что замечено - при повторной инициализации порта - установка только номера порта и включение (активация формы), все востанавливается... asyncpro 2.5, win98, D3...

отаке...

p.s. вопрос про 4 com-порта еше в силе :)


 
-=Vlad=-   (2003-06-24 17:52) [1]

AsyncProfessional конечно уважаемая в мире компонента, но все не без греха. При подобных глюках в первую очередь необходимо нарекать на вражеские компоненты. Посему попробуйте написать работу с компортом сами, не сложно, доки в нете навалом. Если леньки самим писать то попробуйте поставить AsyncPRO 3.x или лучше 4.x. Больше сказать не могу т.к. не совсем понимаю чо означает "выбивает прием", подробней плиз.
Удачи.
З.Ы. О вкусах не спорят, но пора переходить на D повыше :-)


 
Volodymyr   (2003-06-24 18:52) [2]

спасибо за ответ...

"выбивает прием" - идет постоянная передача текущих координат 10-байтовыми посылками ~ 1 посылка в 1мс (так реализовано внутри микроконтроллера в приборе). при приеме только пересчитываются координаты и индицируются на "индикатор"... все остальное - простая математика... "выбивание приема" - внешне прекращается смена индикации... никаких событий при этом не инициализируется (повесил обработчики на все что есть)... единственное, более определенное - обнуляется номер порта, жестко установленный как com1, внутри программы никаких изменений параметров установки нет!

проверено на остальных компоненетах и своем приеме :) - фигня та же...

p.s. а D3 - ну нравится он мне :)


 
-=Vlad=-   (2003-06-25 14:18) [3]

Сразу куча вопросов. По порядку.
1. Ваш приборщик передает данные через RS-232 интерфейс? Если да какая то у него странная скорость.
2. Как вы настраиваете свой порт, т.е. BaudRate, ByteSize и т.п.
3. У приборчика есть протокол обмена данными, или он просто прет данные по порту.

Также не надо забывать, что хоть наши обработчики событий и быстрые, но буфер может переполняться и затирать данные которые мы с не еще не вынули, обрабатывая предыдущие, тем самым можем нарушить протокол и как следсвие подглючить программу приборчика.
Для избежание сего поднимайте и опускайте RTS во время готовности и неготовности соответсвенно.


 
Vovchik   (2003-06-26 16:45) [4]

Кажется отвечать вопросом на вопрос не очень красиво :-)
Прошу прощения.
Но я столкнуля с одной проблемой.
Дали такое задание (кажется аналогичное с Вашим) есть контрольный прибор к которому подключается модем. Мне необходимо написать программу которая будет подключатся к этому модему и считывать с него буквально 20 цифирок. В чём беда никогда таким не занимался. Посоветовали использвовать компоненты Async Pro (очень много о них слышал, но работающую версию так и не нашёл). Если не тяжело намыльте ссыоочку где их взять. Пишу на D5. Может ещё поделитесь какимито советами. Спасибо


 
-=Vlad=-   (2003-06-27 10:34) [5]

Всех кого интерисует работа с портами просто необходимо пойти сюда http://delphi.vitpc.com/mastering/ports1.htm


 
Volodymyr   (2003-07-01 20:56) [6]

сорри за задержку... действительно, про аппаратный буфер я и не подумал, спасибо.
по остальным:
RS-232, 115200, 8 данных, 1 стоповый, без проверки четности...
соответствие по параметрам полное... за протоколом ловится стартовый байт, после него отсчитываются 9 байт данных... любой "внеочередной" стартовый байт сбрасывает прием в начало...


 
Германн   (2003-07-02 05:14) [7]

Ну вот все было просто и понятно (кроме сабжа, есс-но), Но тут появилась фраза - любой "внеочередной" стартовый байт сбрасывает прием в начало. И сразу вопросы:
1. А что такое "стартовый байт"?
2. А что такое "внеочередной стартовый байт"?
3. Как вышеупомянутый "ловится" и как "после него отсчитываются"?


 
Nucl   (2003-07-02 09:19) [8]

На самом деле не так-то просто "сбить" Com порт. Мне кажется что все дело в передаваемых данных и их обработке, сделай простой отлов всего что идет с порта и пиши в текстовый файл проанализируй трафик, скорее всего что-то приходит не то и прога неверно обрабатывает.


 
-=Vlad=-   (2003-07-02 11:17) [9]

Полностью согласен с Nucl, пишите данные в файл и анализируйте их обработку вашей программой. Если данные не соответсвуют протоколу, то проблема с настойками порта, иначе проблема в коде обработчиков. Если первое то - я так понимаю, что он (прибор) построен на основе какого то микроконтролера, не поленитесь найдите доку по этому микроконтролеру и почитайте по его последовательный порт. У меня на практике был прибор на сименсе уже не помню номиналы, долго я сним мучался пока не выловил что скорость у него не 14400 как было сказано в паспорте а 10000, да именно 10000 и и я ставил BaudRate:=10000; Кстати кто сможет мне тупому объяснить как такое может работать???? Я так понимаю что в юартовском контролере стоит делитель частоты, и программируя скорость порта мы программируем число в этом делителе (Порты я программировал на и на асме, посему представляю что из себя представляет порт).
Если второе то - если не помогает подъем/опуск RTS то ошибка скорее всего в обработке, ищи там. Отладка программ самое приятное в работе программиста ;-)))
Удачи


 
Alex M.A.   (2003-07-02 16:54) [10]

Если я правильно понял, имеет место быть логическая синхронизация потока данных... т.е. стартовый байт посылки... проблемы
1. при такой организации, данные обычно передают в hex-формате ascii-символами, а старт-символ выбирается не из диапазона [0..9,A..F] (например, "$"), чтобы заведомо исключить вероятность появления старт-символа в теле посылки
2. при такой высокой скорости обмена, просто необходимо формировать и проверять контрольную сумму посылки... в противном случае, могут быть проблемы с обработкой полученных данных, при возникновении помех на линии... а они, при таких скоростях, не редкость...
3. при высоких скоростях обмена, работу с портом все-таки лучше вынести в отдельный поток... личное мнение...
4. при инициализации порта, буфер приемника лучше сделать потолще...

P.S. компонентами работы с портами не использую... видел, пробовал, но... имхо, проблем больше, чем результата... ручками, ручками...


 
Volodymyr   (2003-07-02 17:57) [11]

вах!
что на контроллер AT90S8515, что на машину писал я. физически и по параметрам передачи интерфейс відержан. сигнал красивый - сам на осцилограф писал. эт я просто так :).

там действительно форточки глючили при работе с аппаратным буфером UART-а. уж больно криво машину собрали...

всем спасибо!


 
Tano   (2003-07-02 17:57) [12]

Я постараюсь пофантазоровать...
Может быть в момент появления внеочередного стартового байта (это я понял, только тебе нужно быть уверенным, что никакие теоретически допустимые данные с ним не совпадают) у тебя возникает рекурсивный вызов или в подпрограмме - обработчике, где проверяется стартовый возникает рекурсия. Короче, непредсказуемость принятых данных порождает переполнение стека.
Я писал извраты на нестандартной частоте (правда без сторонних компонент, только API), все жестко работает, если корректен алгоритм.

2 -=Vlad=- (02.07.03 11:17)
В контроллер загоняется делитель частоты, равный (115200 div 10000) - это для стандартного RS-232. Вследствии того, что импульсы имеют некоторую длительность и пакеты разделены стопами, приемник и передатчик могут понять друг друга, если только накопленное за 8(6,7)бит отклонение не превысит 70%/кажись/ бита.


 
Tano   (2003-07-02 18:03) [13]

Я опоздал на несколько секунд.....

Пересядь на D6+sp2 и жить станет горрррраздо легче! (совет)


 
ksa2002   (2003-07-03 05:54) [14]

НАрод сам писал обрботчик для com порта ,если есть проблемы могу помочь :)



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.008 c
14-58910
Vinter
2003-08-28 14:44
2003.09.18
Программа съедает много памяти.


14-58834
Knight
2003-08-31 22:49
2003.09.18
Просто пара вопросов... чё-то в голову стукнуло :)


1-58700
denis24
2003-09-08 10:01
2003.09.18
удаление слова в строке


1-58741
AlexSSS
2003-09-07 11:26
2003.09.18
Обработка виндозных сообщений


1-58780
MystiX
2003-09-05 18:05
2003.09.18
Плагины





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский