Форум: "WinAPI";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизЧтение из СОМ-порта Найти похожие ветки
← →
Olga_b (2005-02-03 13:15) [0]Здравствуйте. Помогите, пожалуйста. Передо мной стоит задача двусторонней связи с микроконтроллером. Одну часть я выполнила, т.е. с горем пополам написала программу в Delphi7, которая посылает команды микроконтроллеру, а микроконтроллер в свою очередь отвечает (зажигает светодиоды в определенном порядке). Теперь дубль два, микроконтроллер посылает определенные байты (например, при нажатии кнопки), но я их в своей программе не получаю. Проверяла на других программах работы с СОМ-портом – они все получают нормально.
Посылаю данные я так:
WriteFile(pPort, WriteBytes, SizeOf(WriteBytes), dwWrite, @OverWrite);
Принимаю:
procedure TForm1.Button1Click(Sender: TObject);
begin
ReadFile(hPort, Bufer, dwRead, dwRead, @OverRead);
label1.Caption:=inttostr(buf);
end;
Извините, если где-то банальная ошибка, но я электронщик, а не программист.
Спасибо.
← →
Digitman © (2005-02-03 13:32) [1]
> я электронщик, а не программист
за свое ли тогда дело взялась ?)
каким бы простым Паскаль ни казался, но задумка твоя выходит далеко за рамки собственно языка программирования и требует наличия опред. знаний и навыков работы с опер.системой, ибо ты пытаешься взаимодействовать с ней не посредством каких-то готовых компонентов (предназначенных для облегчения программного взаимодействия с коммуник.портом), а посредством прямого обращения к функциям WinAPI.
WriteFile, ReadFile - это именно функции, а функции обязательно возвращают результат своего выполнения, который обо многом может сказать, но который ты почему-то игнорируешь, пользуясь тем что Паскаль допускает вызов ф-ций как процедур.
теперь - о параметре @OverWrite ..
осознан ли тобой и чем обоснован выбор именно overlapped-режима работы с файлом, представляющим коммуник.канал связи с твоим устройством ?
← →
Digitman © (2005-02-03 13:38) [2]
> Olga_b
могу посоветовать для начала отладить взаимодействие со своим дивайсом в синхронном режиме, открывая файл без флага FILE_FLAG_OVERLAPPED и указывая впоследствии nil во всех вызовах WriteFile/ReadFile вместо факт.параметра @OverWrite.
Когда это заработает, тогда можно будет оценить все преимущества-недостатки синхронного режима, и уже после этого подумывать о возможности отказа от синхр.режима в пользу асинхронного, который может базироваться как на overlap-механизме, так и на механизме обратных вызовов, благо ХР допускает использование Read/WriteFileEx для взаимодействия комуникационными устр-вами
← →
Zilog © (2005-02-03 13:41) [3]Рекоммендую компонент Async32. Просто, удобно, с исходниками. Бесплатно.
← →
Набережных С. © (2005-02-03 13:49) [4]Здравствуй, коллега. Вечером могу выслать исходники рабочей программы такого типа. Она простая, как раз подойдет в качестве примера. Правда использует асинхронное чтение и синхронную запись. Выслать?
← →
Olga_b (2005-02-03 14:25) [5]Вышлите, если можно (и если бесплатно). Спасибо большое.
← →
Olga_b (2005-02-03 15:30) [6]>Zilog © (03.02.05 13:41) [3]
>Рекоммендую компонент Async32. Просто, удобно, с исходниками. >Бесплатно.
А как его поместить на вкладку system.
← →
Zilog © (2005-02-03 15:54) [7]запускаешь файл к примеру VaComm7.dpk, и жмешь "инсталл". Появится новая закладка с компонентами.
компонент выслал....
если кому нужно - взять можно тут
http://delphi.chertenok.ru/forum/viewtopic.php?p=10670&sid=00a3c01a2d9e9ca51c07c915b562bf84
← →
Zilog © (2005-02-03 15:55) [8]А что касается приема данных от устройства - там событие есть, OnRecive, там и ищи.
← →
Zilog © (2005-02-03 15:56) [9]OnRXChar, извиняюсь
← →
Набережных С. © (2005-02-03 16:54) [10]>Olga_b
Ушло. Даже два:) Бэзвозмэздно и бэзвозвратно:)
← →
Eraser © (2005-02-03 17:23) [11]Zilog ©
Незабудь прописать пути к библиотекам в делфи, а то может не работать.
← →
Olga_b (2005-02-03 17:26) [12]Спасибо.
← →
Marser © (2005-02-03 19:40) [13]Лично я, оседлав АПИшные функции работы с COM, с чистім сердцем пересел на TXComm
http://www.torry.ru/authorsmore.php?id=2760&sort=ID&SID=74473410684cdc47b44371ac24958af2
Хотя иногда кое-чего всё-таки приходится выставлять принудительно. Тут API, конечно, помогает.
(Полуоффтоп): Милая особенность многих современных модемов - входящий звонок отслеживается только через буффер, Ring Indicator нем как рыба...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c