реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Пропадет первый байт при приеме
AHTOXA
сообщение Apr 2 2010, 18:00
Сообщение #16


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(krik @ Apr 2 2010, 23:18) *
FIFO + мультимедийный таймер -поясните если можно.(например как обходиться с FIFO).


Про FIFO - читайте там же, где вычитали как его отключать.
Про мультимедийный таймер:
Using Multimedia Timers.
Вот пример (Дельфи):
Код
var
    MmTimer         : MMResult;
    MmTimerInterval : integer;

// эта процедура будет вызываться по мультимедиа таймеру:
procedure MmTimerProc(uTimerID, uMessage: UINT; dwUser, dw1, dw2: DWORD); pascal;far;
begin
    timeKillEvent(CksTimer);  // шлепнем событие
    try
        // делаем что-то полезное (достаём данные из FIFO)
    finally
        // зарядим таймер на следущий раз
        MmTimer:=timeSetEvent(MmTimerInterval,0,@MmTimerProc,0,TIME_ONESHOT)
    end;
end;

// начальный запуск таймера:
procedure StartMMTimer;
var TC: TTimeCaps;
begin
    if timeGetDevCaps(@tc, sizeof(TTIMECAPS)) = TIMERR_NOERROR then
    begin
        MmTimerInterval :=TC.wPeriodMin*3;  // период (обычно wPeriodMin = 1мс, берём втрое больше)
        timeBeginPeriod(MmTimerInterval);
        MmTimer:=timeSetEvent(MmTimerInterval,0,@MmTimerProc,0,TIME_ONESHOT);
        if MmTimer=0 then raise Exception.Create('Can''t start MmTtimer');
    end
    else
        raise Exception.Create('Can''t get MmTimer caps');
end;


Но ещё раз повторюсь, лучше чем грамотно написанное приложение с использованием WinAPI всё равно не выйдет.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
krik
сообщение Apr 2 2010, 19:26
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 29-08-05
Пользователь №: 8 044



Цитата(ASN @ Apr 2 2010, 20:51) *
krik
Если за 100 млсек надо успеть обменяться с 8-9 абонентами , то удобней и проще подключить к ПК специальный коммуникационный контроллер (к примеру на МК), которые собирает данные с удалённых абонентов и пересылает подготовленные результаты в ПК для отображения. Windows так же как и Linux - это не ОСРВ, попытка использования их в этом режиме оборачивается сплошными проблемами.
Как верно заметил zltigo - отсутствие системного подхода (видимо у Вашего руководства).
Разделение задач на сбор информации и отображение сэкономит Вам массу времени и нервов.


ОСРВ-денег стоит, насчет отсутствия системного подхода у нашего руководства- Вы сто раз правы, только это слабое утешение. Отдельный коммуникационный контроллер прицепить не могу- штатный комп в формате PC104-туда не так просто что-то прицепить. Я даже в DOS уйти не могу- отлаживаться с аппаратурой приходится через переходник USB-COM MOXA, который про DOS ничего не знает. Но вообще то я спрашивал про возможные причины пропадания байта.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 2 2010, 20:35
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(krik @ Apr 2 2010, 22:26) *
Но вообще то я спрашивал про возможные причины пропадания байта.

Все изначально задумано делать и сделано через заднепроходное отверстие. Частности не интересны.
Цитата
Я даже в DOS уйти не могу- отлаживаться ...

Совершенно не нужно отлаживать Win программы под DOS.
Цитата
Отдельный коммуникационный контроллер прицепить не могу- штатный комп в формате PC104-туда не так просто что-то прицепить.

Вот вместо этой самой
Цитата
переходник USB-COM MOXA

и цепляете.
Цитата
ОСРВ-денег стоит,

Если действительно, в чем я совершенно не уверен, обслуживание UART по времени не укладывается, то многие проблемы реального времени можно разрулить на уровне собственного, а не штатного драйвера COM порта. Но в Вашем случае, Вы явно создаете себе проблемы сами, виду крайне поверхностных представлений sad.gif. Начните банально с WinAPI. Для этого вся информация есть, как ни странно, на сайте Microsoft.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 2 2010, 21:06
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Работа с последовательным портом - стандартная. И нет никакого смысла использовать giveio.
Могу рекомендовать Async Professional библиотеку для Дельфи 7. Удобная и быстрая (гугл отыщет).

Наблюдение фенолога. Запустите свою программу и посмотрите процент загрузки в таск менеджере. Вот если там цифирка отличается от 0 - вы неправильно написали программу.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 2 2010, 21:32
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(DpInRock @ Apr 3 2010, 00:06) *
Могу рекомендовать Async Professional библиотеку для Дельфи 7. Удобная и быстрая (гугл отыщет).

Господи, ну зачем вся эта муть "библиотеки" с "компонентами" sad.gif образующие нафиг ненужную надстройку над API. Впрочем, насколько мне помнится, MOXA на FTDI работает, посему можно для спрямления выкинуть эмуляцию виртуального COM порта с еще и дополнительной виндозной надстройкой и работать через Direct Drivers.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 3 2010, 13:28
Сообщение #21


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



А затем, что это проще.
Чтобы использовать апи в чистом виде, надо слегка нагрузиться MSDN.
А лишние знания всегда требуют лишнего времени.

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


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
firstvald
сообщение Apr 3 2010, 13:45
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 580
Регистрация: 3-06-08
Пользователь №: 38 041



http://asm.shadrinsk.net/uroki.htm

При этом ограничиться синхронным приемом.

Про потери байт надо посмотреть : не выполняется ли в этот момент файловая операция. С большим интересом обнаруживал , что под досом при выполнении файловых операций приемник терял байты на скоростях начиная с 57600. Получалось, что при записи на диск запрещались все прерывания и соответственно падал обмен на больших скоростях.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 3 2010, 13:58
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(DpInRock @ Apr 3 2010, 16:28) *
А затем, что это проще.

Любая задача имеет простое, понятное, но неправильное решение. Вынужден напомнить, что Автор озаботился не поиском визарда с кнопкой "приляпать "библиотеку" и получить не думая чего-нибудь", а борьбой за скорость.
Цитата
Да и всегда можна спросить - а зачем эта дурацкая надстройка над оборудованием в виде апи.

API это в данном случае интерфейс Операционной системы. Отработанный-минимально-универсально-достаточный.
Наличие операционной системы, между прочим, не противоречит созданию собственного драйвера для железа для обеспечения большей
заточенности под конкретную задачу, о чем уже писал.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 3 2010, 15:00
Сообщение #24


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Только заставлять человека изучать АПИ (а тут одними функциями компорта не обойтись) ради простой операции - садизм. Вот потихоньку изучать АПИ - интересоваться, то есть - это нормально.

Вот честно скажу. Рабочий комп у меня - древний. Prescott 2.8. Ни на каких скоростях не было никогда потерь байтов.
При этом - абсолютное правило - у меня параллельно всегда крутится Южный парк на втором экране (ATI 9600), который берет мультик с внешнего USB диска.
К слову, большая часть COM портов - это мосты Silabs. И только один - родной.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 3 2010, 17:05
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(DpInRock @ Apr 3 2010, 19:00) *
Только заставлять человека изучать АПИ (а тут одними функциями компорта не обойтись) ради простой операции - садизм.
Для работы с COM портом из API понадобятся 7 функций. Если делать Overlapped IO, то еще 4. Мне не кажется, что изучить 11 функций это 'садизм' rolleyes.gif Тем более, что работа с COM портом достаточно подробно расписанна в MSDN ( http://msdn.microsoft.com/en-us/library/aa...v=VS.85%29.aspx )
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 3 2010, 18:05
Сообщение #26


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Давайте засечем время.
Напишем терминалку на дельфях и тоже самое с апи.
У меня уйдет на это минуты 2. У человека, который первый раз этот компонент видит - минут 5.
У вас - который уже сто раз писал такое - только на набивку текста уйдет 10 минут (11 функций, с офигенно длинными типами...). И еще 20 - на поиск - чего-то не подключил, что не компилируется...
Ну, и кроме того, в такой программе не одни только вызовы апи. Еще, собственно, и процессы описывать как-то надо...


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 3 2010, 18:47
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(DpInRock @ Apr 3 2010, 21:05) *
У меня уйдет на это минуты 2.

Самое главное, не сочтите за труд незамедлительно вывалить "это" в Интернет, дабы неоскудели образчики борлондячего "творчества" из 2х минутных программ и 3x строчных "библиотек" сделанных 4мя движениями мышки.
То, чем пользуетесь, в данном случае OS Windows, нужно знать. И использовать оптимально не загромождая ее, по причине собственного непонимания, ни вульгарными прибамбасами над системой, ни ломовыми заплатками ломающими систему.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 3 2010, 19:05
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(DpInRock @ Apr 3 2010, 22:05) *
Напишем терминалку на дельфях и тоже самое с апи.
А давайте не будем писать терминалку - их уже и так как собак нерезанных rolleyes.gif Давайте писать программу ТС 'за 100 млсек надо успеть обменяться с 8-9 абонентами'
Цитата
У меня уйдет на это минуты 2. У человека, который первый раз этот компонент видит - минут 5.
А сколько времени уйдет на доработку напильником компонента под такую задачу? И каких размеров напильник потребуется? cranky.gif
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01495 секунд с 7
ELECTRONIX ©2004-2016