Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Как-то так

Отправлено Крок (188.123.248.236) 20 ноября 2010, г. 19:54
В ответ на: фюнф минутен отправлено Крок 20 ноября 2010, г. 16:55

(* ======================================================================= *)
(* *)
(* ======================================================================= *)
procedure IniCOM;

var i:integer;
begin
{инициализация COM - номер с строке stcom}
hCOM:=CreateFile(Pchar(stcom), GENERIC_READ+GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0);
if (hCom = INVALID_HANDLE_VALUE) then
begin
st:=stcom+' не найден';
Application.MessageBox(Pchar(st),'Error',MB_OK);
exit;
end;
if GetCommState(hCOM,pDCB)
then st:=stcom+': baud=57600 parity=N data=8 stop=1';
if BuildCommDCB(Pchar(st),pDCB) then SetCommState(hCOM,pDCB)
else
begin
st:=stcom+' занят или заданы неверные параметры';
Application.MessageBox(Pchar(st),'Error',MB_OK);
exit;
end;
GetCommTimeouts(hCom,comtime); {устанавливаем задержки:}
comtime.WriteTotalTimeoutMultiplier:=1;
comtime.WriteTotalTimeoutConstant:=10;
comtime.ReadIntervalTimeout:=10;
comtime.ReadTotalTimeoutMultiplier:=1;
comtime.ReadTotalTimeoutConstant:=1000; {ждем чтения 1 сек}
SetCommTimeouts(hCom,comtime);
SetupComm(hCom,8192,128);
Form1.Label7.Caption:=stcom+' 57600';
end;
* ======================================================================== *)
(* А здесь посылаем байт в порт и смотрим, что выйдет *)
(* ======================================================================== *)
procedure Tform1.bait_v_port(kogo:byte; skoka_nado:word; var skoka_bylo:dword);
begin
if (hCOM=0) or (hCOM=INVALID_HANDLE_VALUE) then exit;
{если порт еще не инициализирован - выход}
PurgeComm(hCOM,PURGE_RXCLEAR); {очищаем буфер}
WriteFile(hCOM,kogo,1,xn,nil);
told:=Time;
if ReadFile(hCOM,ab,skoka_nado,skoka_bylo,nil) then {читаем в массив ab}
begin
ttime:=Time;
if SecondsBetween(told,ttime)>0 then
begin
Application.MessageBox('Устройство не обнаружено','Error',MB_OK);
exit;
end;
end else {не сработало}
begin
Application.MessageBox('СОМ сломался','Error',MB_OK);
exit;
end;
end; (* of bait_v_port *)


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 34:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru