Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
3-1108636507
msguns
2005-02-17 13:35
2005.03.20
Изменение имени IB-процедуры в IBExpress


8-1101746085
PitBult
2004-11-29 19:34
2005.03.20
Как записать в AVI всё что происходит на экране?


1-1109894253
Garfunkel
2005-03-04 02:57
2005.03.20
Зеркально перевернуть BitMap в TPaintBox e


1-1109768050
hgd
2005-03-02 15:54
2005.03.20
Подскажите как удалить ветвь реестра


4-1107884471
Фдуч
2005-02-08 20:41
2005.03.20
Что значит Port 60/64?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский