Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.18;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
8-58784
Mor
2003-05-12 19:09
2003.09.18
графика


3-58533
andy-ivt
2003-08-28 12:52
2003.09.18
Доступ к БД IB по сети


4-58962
VKSam
2003-07-18 19:29
2003.09.18
GetKeyboardLayoutName


1-58763
AndreySoft
2003-09-04 21:10
2003.09.18
Как считать из файла фрагмент текста?


1-58672
Григорий
2003-09-04 23:03
2003.09.18
Как правильно сохранить проект?