LexRoss 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба МК+FT232 непрерывно отправляет байты, скорость 38400. На стороне ПК приложение на Delphi соответственно должно их принимать. Пока в приложении одна кнопка, которая запускает передачу со стороны МК и счетчик принятых символов. Первые 1200 символов приходят нормально, потом светодиод на FT232 гаснет, передача с МК останавливается, счетчик символов начинает тормозить, приходит где-то 5 символов в секунду (вопрос, откуда, если передача остановлена?). Такое ощущение, что переполняется какой-то буфер, только почему останавливается передача? С терминальной программой все отлично работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба Программа на МК и PC работают неправильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mp41 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба Если данные не вычитывать из буфера, а только считать их количество, то буфер переполнится. Расскажите, как организован приём в приложении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LexRoss 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба Если данные не вычитывать из буфера, а только считать их количество, то буфер переполнится. Расскажите, как организован приём в приложении. procedure TForm1.VaComm1RxChar(Sender: TObject; Count: Integer); var tmp: char; OK: boolean; begin OK:=VaComm1.ReadChar(tmp); if OK then begin count_Rx:=count_Rx+1; Label1.Caption:=IntToStr(count_Rx); end; end; Дело в том, что все это работало с невиртуальным com. В настройках VaComm менял размеры буферов, все также останавливается после 1200 символов. Настройки компонента VaComm: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mp41 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба После запуска передачи со стороны приложения МК сам шлёт данные или приложение постоянно их запрашивает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LexRoss 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба МК сам шлет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mp41 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба Получается, что МК не знает, ушли данные или нет и если он перестаёт их отсылать, значит проблема где-то в программе МК. Разве только VaComm не начинает слать спустя 1200 байт в МК строку типа "Evaluation period...", что может "затыкать" контроллер, но я сомневаюсь. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба http://ru.wikibooks.org/wiki/COM-%D0%BF%D0...BD%D0%B8%D0%B5) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LexRoss 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба Получается, что МК не знает, ушли данные или нет и если он перестаёт их отсылать, значит проблема где-то в программе МК. Разве только VaComm не начинает слать спустя 1200 байт в МК строку типа "Evaluation period...", что может "затыкать" контроллер, но я сомневаюсь. sm.gif В МК проблемы нет. Сделал непрерывную передачу одного символа. Прога на Delphi также тормозит после 1200 символа, хотя мк продолжает передавать (смотрел осцилом). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба Вот из-за таких людей другие люди и грешат на Дельфи. Вы, во-первых, неправильно используете компонент. Во-вторых, такие компоненты пишут дебилы. Оборачивают 4 вызова функций API в черт знает во что. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LexRoss 0 21 февраля, 2011 Опубликовано 21 февраля, 2011 · Жалоба Вы, во-первых, неправильно используете компонент. Я знаю, может, Вы мне подскажете, как правильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LexRoss 0 22 февраля, 2011 Опубликовано 22 февраля, 2011 · Жалоба Ситуация улучшилась, когда в диспетчере поменял время ожидания с 16 до 1мс. Теперь передает около 3000 символов. Что еще можно предпринять? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NullPointer 0 22 февраля, 2011 Опубликовано 22 февраля, 2011 · Жалоба Ну для начала обратить внимание, что в VaComm1RxChar передаётся некая Count... Быть может, она не равна 1... -- http://ru.wikibooks.org/wiki/COM-%D0%BF%D0...BD%D0%B8%D0%B5)Эта статья уныла чуть менее чем полностью. Читать стоит это: Serial Communications in Win32 (в сети есть переводы на русский). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LexRoss 0 22 февраля, 2011 Опубликовано 22 февраля, 2011 · Жалоба Поставил переходник на CP2102 - работает. Хотелось бы оставить ПО, которое уже есть. Скорее всего, буду ставить CP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 22 февраля, 2011 Опубликовано 22 февраля, 2011 · Жалоба Вам же SysRq уже прозрачно намекнул, в чём может быть дело. procedure TForm1.VaComm1RxChar(Sender: TObject; Count: Integer); var tmp: char; i : integer; begin for i := 1 to Count do begin if VaComm1.ReadChar(tmp) then begin ... end; end; end; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться