C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Работа с COM портом под WinXP
Human
Отправлено: 04.03.2004, 23:39


Не зарегистрирован







Какие внешние компоненты работают с последовательным портом под XP? Раньше я пользовался ComThread, под 98, Me все работает замечательно, а под XP невозможно даже проинициализировать порт.
Или объясните, плиз, мне убогому sad.gif как вынуть данные с ком порта через потоки.
Искандер
  Отправлено: 05.03.2004, 18:38


Не зарегистрирован







А чем API-шные функции не нравятся? В потоке — так совсем замечательно работает.
Admin
Отправлено: 05.03.2004, 18:56


Владимир

Группа: Администратор
Сообщений: 1190



Тема:
http://borland.xportal.ru/forum/viewtopic.php?t=7699

Посмотрите компоненты nrComm Lib:
http://www.deepsoftware.ru/nrcomm
Human
Отправлено: 05.03.2004, 22:38


Не зарегистрирован







QUOTE (Искандер @ 05/03/2004, 19:40)
А чем API-шные функции не нравятся? В потоке — так совсем замечательно работает.

Догадываюсь sad.gif
Пример кода, плиз, как получить байт из кома через потоки
Human
Отправлено: 05.03.2004, 22:51


Не зарегистрирован







QUOTE (Admin @ 05/03/2004, 19:58)
Тема:
http://borland.xportal.ru/forum/viewtopic.php?t=7699

Посмотрите компоненты nrComm Lib:
http://www.deepsoftware.ru/nrcomm

1. out под XP не пройдет? Я правильно понял? Нужно войти в нулевое кольцо?

2. Где-же ключик то добыть? sad.gif
ComTread, которым я пользовался, freeware был...
Guest
Отправлено: 07.03.2004, 09:35


Не зарегистрирован







QUOTE (Human @ 05/03/2004, 23:40)
Догадываюсь sad.gif
Пример кода, плиз, как получить байт из кома через потоки

Итак, код.
Предположим, что инициализировали порт. Теперь как принять байт из порта. Обычно, чтобы чего-нибудь из него считать, надо чего-нибудь туда записать)) Т. е. запрос.
CODE

// два массива, по длине с большой избыточностью,
// но это у меня при отладке используется.
unsigned char   Buff[2000], Buffa[2000];
//тут формируем пачку запроса,
//т. е. запихиваем данные в Buff, + CRC
//.....................................

//а теперь пишем в устройсто и ждем реакции
//обычно три раза

for (Retry=3; Retry; Retry--){
WriteFile (PortHANDLE,Buff,12,&l,NULL);
ReadFile  (PortHANDLE,Buffa,50,&TempRead,NULL);
if ((l)&&(crc8 (&Buffa[0],l-2)==Buffa[l-1])) break;
}
//а теперь смотрим, удачно ли прошло наше бдение на порту
if (!Retry){
//Устройство не ответило, или превышено кол-во попыток
return false;
//тут еще можно какие-то флаги выставить, мол сдохла железяка))
}
//А тут начинаем анализ полученного пакета,
//считаем чот все в порядке
//т. е. работаем с Buff

Теперь о потоках, весь вышепреведенный код прекрасно крутится внутри потока, как получить код наружу, т. е. вывести все это на визуальные элементы. Тут вроде все достаточно просто, только про синхронизацию не забыть, критическими секциями все вполне обходится.
Искандер
Отправлено: 07.03.2004, 09:44


Не зарегистрирован







Хотя, как мне кажется, могут возникнуть вопросы с организацией потоков? Если да, то об этом чуть позже))
** Алексей
Отправлено: 31.03.2005, 12:35


Не зарегистрирован







На Torry.ru лежит куча компонентов для работы с Сом портом.
Я использую TMS Async32 под ХР, все вроде бы работает нормально,
единственно с чем я не могу разобраться, так это с тайм аутами.
Konstantine
Отправлено: 31.03.2005, 16:24


Мастер участка

Группа: Модератор
Сообщений: 545



аналогично с LPT тут: https://rxlib.ru/forums/index.php?ac...159ee20369126ae
Rius
Отправлено: 01.04.2005, 08:50


Мастер участка

Группа: Участник
Сообщений: 321



Компонент (поточный) для BCB для работы с COM. Проверен лично в WinXP, под 98 говорят тоже работает.

User Attached Image Скачать файл
Comm_2005.04.01___11.48.rar


ksili
Отправлено: 06.02.2007, 10:52


Ученик-кочегар

Группа: Участник
Сообщений: 5



Rius, а можно вкратце как эти классы использовать (хотя бы на словах, какая последовательность действий, чтобы инициализировать, чтобы записать строку в порт, и чтобы считать)?
А то несколько классов с кучей свойств,а комментариев почти нет. С чего начинать непонятно
ksili
Отправлено: 06.02.2007, 11:20


Ученик-кочегар

Группа: Участник
Сообщений: 5



Вроде начинаю понимать. Сначала всё это надо инсталлировать как компонент, а потом использовать этот компонент.
Только у меня при инсталляции просит файл *.dpk, а есть только *.dcr. sad.gif Что делать?

Вернуться в Работа с внешними устройствами