Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.10.2009, 14:21
vodolejru vodolejru вне форума
Прохожий
 
Регистрация: 03.10.2009
Сообщения: 3
Репутация: 10
По умолчанию Нужна помощь по ICP CON

Доброго времени суток!

Не получается произвести опрос модулей ввода-вывода ICP CON по портам RS232/485 из Delphi.

Если кто с ними работал - откликнитесь плиз!
Ответить с цитированием
  #2  
Старый 04.10.2009, 23:16
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

С RS232 много кто работал, конкретику говори А если ее нет - читай тут RS232
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 05.10.2009, 10:14
vodolejru vodolejru вне форума
Прохожий
 
Регистрация: 03.10.2009
Сообщения: 3
Репутация: 10
По умолчанию

begin
//команда датчику
Buf2[0]:=$0023;
Buf2[1]:=$0030;
Buf2[2]:=$0033;
Buf2[3]:=$004F;
Buf2[4]:=$004E;
Buf2[5]:=$000D;

hPort:=CreateFile(PChar('Com1'), Generic_Read or Generic_Write, 0, nil,
Open_Existing, File_Attribute_Normal, 0);
if hPort = INVALID_HANDLE_VALUE then begin
exit;
end;

if GetCommState(hPort, DCB) then ;
DCB.BaudRate := CBR_9600;
DCB.ByteSize := 8;
DCB.StopBits := ONESTOPBIT;
DCB.Parity := NOPARITY;
if not SetCommState(hPort, DCB) then
if not SetupComm(hPort, 16, 16) then
if PurgeComm(hPort, PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or PURGE_RXCLEAR) then ;
if not SetCommMask(hPort, EV_RXCHAR) then raise Exception.Create('Error setting port mask');

// Запись в порт
OverWrite.hEvent := CreateEvent(nil, True, False, nil);
if OverWrite.hEvent = Null then
raise Exception.Create('Error creating write event');

if (not WriteFile(hPort, buf2, Length(buf2),
Bytes, nil))
and (GetLastError <> ERROR_IO_PENDING) then
raise Exception.Create('Error writing port');

// Чтение из порта
ClearCommError(hPort,Errors,@TheStruct);
if TheStruct.cbInQue>0 then
begin
Edit1.Text:='есть';
ReadFile(hPort, Buf1, TheStruct.cbInQue, Bytes, nil);
end
else
begin Edit1.Text:='нет'; end;
end;

запись в порт производится намана - прибор реагирует на команды. а вот ответное сообщение прочитать не получается.
што я делаю не так? каких настроек или еще чего не хватат?
подскажите плиз!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025