Консультация № 55259
13.09.2006, 11:23
0.00 руб.
0 1 1
Доброго времени. Разрабатываем ПО (Dephi 6, WIN XP SP1), использующее для обмена 485 интерфейс (15 Mбит PCI плата,-высокоскоростной аналог rs-232).Компонет для обмена AsyncPro.Проблема в том,что на скоротях считывания >4Мбит начинают теряться данные,причем количество потерянной информации зависит от производительности конкретного ПК.Что делать?То ли Винда не успевает,то ли AsyncPro не рассчитан..Поделитесь опытом.

Обсуждение

Неизвестный
13.09.2006, 19:46
общий
это ответ
Здравствуйте, Михон!
На таких скоростях скорее всего не успевает Винда. Я с AsyncPro не работал, поэтому тонкстей реализации не знаю. Не так давно обмен через RS-232 делал на чистом API. Там была следующая схема: отдельный поток считывал данные с порта в буфер определённой длины; при заполнении буфера выделялась область памяти, в которую сбрасывался буфер с последующей очисткой (буфера); посылалось пользовательское сообщение основному процессу с адресом памяти с данными буфера; в основном потоке данные обрабатывались и память освобождалась. И всё это повторялось снова.
Данные шли плотным потоком и приложение захлёбывалось, если передавать данные сразу, без заполнения буфера.
Вывод: посмотрите, есть ли в AsyncPro что-то типа буфера и свойства логического,которое бы указывало, передавать данные сразу или только после заполнения буфера.
Форма ответа