|
Пропадет первый байт при приеме |
|
|
|
Apr 2 2010, 18:00
|

фанат дивана
     
Группа: Свой
Сообщений: 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 всё равно не выйдет.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Apr 2 2010, 19:26
|
Участник

Группа: Участник
Сообщений: 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 ничего не знает. Но вообще то я спрашивал про возможные причины пропадания байта.
|
|
|
|
|
Apr 2 2010, 20:35
|

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

|
Цитата(krik @ Apr 2 2010, 22:26)  Но вообще то я спрашивал про возможные причины пропадания байта. Все изначально задумано делать и сделано через заднепроходное отверстие. Частности не интересны. Цитата Я даже в DOS уйти не могу- отлаживаться ... Совершенно не нужно отлаживать Win программы под DOS. Цитата Отдельный коммуникационный контроллер прицепить не могу- штатный комп в формате PC104-туда не так просто что-то прицепить. Вот вместо этой самой Цитата переходник USB-COM MOXA и цепляете. Цитата ОСРВ-денег стоит, Если действительно, в чем я совершенно не уверен, обслуживание UART по времени не укладывается, то многие проблемы реального времени можно разрулить на уровне собственного, а не штатного драйвера COM порта. Но в Вашем случае, Вы явно создаете себе проблемы сами, виду крайне поверхностных представлений  . Начните банально с WinAPI. Для этого вся информация есть, как ни странно, на сайте Microsoft.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 3 2010, 13:58
|

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

|
Цитата(DpInRock @ Apr 3 2010, 16:28)  А затем, что это проще. Любая задача имеет простое, понятное, но неправильное решение. Вынужден напомнить, что Автор озаботился не поиском визарда с кнопкой "приляпать "библиотеку" и получить не думая чего-нибудь", а борьбой за скорость. Цитата Да и всегда можна спросить - а зачем эта дурацкая надстройка над оборудованием в виде апи. API это в данном случае интерфейс Операционной системы. Отработанный-минимально-универсально-достаточный. Наличие операционной системы, между прочим, не противоречит созданию собственного драйвера для железа для обеспечения большей заточенности под конкретную задачу, о чем уже писал.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 3 2010, 18:47
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Apr 3 2010, 19:05
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(DpInRock @ Apr 3 2010, 22:05)  Напишем терминалку на дельфях и тоже самое с апи. А давайте не будем писать терминалку - их уже и так как собак нерезанных  Давайте писать программу ТС 'за 100 млсек надо успеть обменяться с 8-9 абонентами'Цитата У меня уйдет на это минуты 2. У человека, который первый раз этот компонент видит - минут 5. А сколько времени уйдет на доработку напильником компонента под такую задачу? И каких размеров напильник потребуется?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|