Human |
Отправлено: 04.03.2004, 23:39 |
|
Не зарегистрирован
|
Какие внешние компоненты работают с последовательным портом под XP? Раньше я пользовался ComThread, под 98, Me все работает замечательно, а под XP невозможно даже проинициализировать порт.
Или объясните, плиз, мне убогому как вынуть данные с ком порта через потоки. |
|
Искандер |
Отправлено: 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-шные функции не нравятся? В потоке — так совсем замечательно работает. |
Догадываюсь
Пример кода, плиз, как получить байт из кома через потоки |
|
Human |
Отправлено: 05.03.2004, 22:51 |
|
Не зарегистрирован
|
1. out под XP не пройдет? Я правильно понял? Нужно войти в нулевое кольцо?
2. Где-же ключик то добыть?
ComTread, которым я пользовался, freeware был... |
|
Guest |
Отправлено: 07.03.2004, 09:35 |
|
Не зарегистрирован
|
QUOTE (Human @ 05/03/2004, 23:40) | Догадываюсь
Пример кода, плиз, как получить байт из кома через потоки |
Итак, код.
Предположим, что инициализировали порт. Теперь как принять байт из порта. Обычно, чтобы чего-нибудь из него считать, надо чего-нибудь туда записать)) Т. е. запрос.
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 говорят тоже работает.
|
|
ksili |
Отправлено: 06.02.2007, 10:52 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Rius, а можно вкратце как эти классы использовать (хотя бы на словах, какая последовательность действий, чтобы инициализировать, чтобы записать строку в порт, и чтобы считать)?
А то несколько классов с кучей свойств,а комментариев почти нет. С чего начинать непонятно |
|
ksili |
Отправлено: 06.02.2007, 11:20 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Вроде начинаю понимать. Сначала всё это надо инсталлировать как компонент, а потом использовать этот компонент.
Только у меня при инсталляции просит файл *.dpk, а есть только *.dcr. Что делать? |
|