Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15295
Рейтинг: 1519
#16: 2004-08-04 05:33:32 ЛС | профиль | цитата
Вы абсолютно правы. Тем более такие вещи, как компоненты по железу требуют время для изучения доков и тестирования, поэтому будут доведены до ума очень не скоро. И действительно, мне интереснее да и выгоднее заниматься оболочкой, поскольку тут помошников ждать не следует. А вот компоненты люди уже пишут.
карма: 27
0
Ответов: 9906
Рейтинг: 351
#17: 2004-10-29 19:30:53 ЛС | профиль | цитата
Перемычки на разъем ставить не пробовали?
карма: 9

0
Ответов: 20
Рейтинг: 0
#18: 2004-11-04 04:32:11 ЛС | профиль | цитата
Поддерживаю, примерчик бы по COM компоненту.
карма: 1

0
Ответов: 9906
Рейтинг: 351
#19: 2004-11-04 23:51:20 ЛС | профиль | цитата
Уважаемые коллеги!
Более внимательный анализ элемента выявил в нем некоторые недостатки (попросту говоря - не работал ).
Исправленный вариант лежит в UPLOAD, до следующего билда.

Попробуйте, а потом уже будет логичнее поговорить о примерах.
карма: 9

0
Ответов: 9906
Рейтинг: 351
#20: 2004-11-09 18:48:15 ЛС | профиль | цитата
Ребята, давайте, выложите любой неработающий пример с COM-портом!
(тогда хоть чуть-чуть станет понятно, чего Вы хотите )

Конечно, на чем-то я его тестировал, но, думаю, Вам от этого легче не станет....
Add(Button,87109,161,91)
{
Left=20
Top=130
Width=65
Font=[Arial,8,0,0]
Caption="Close"
link(onClick,82387:doClose,[(201,97)(201,118)])
}
Add(Button,61743,119,126)
{
Left=20
Top=40
Width=65
Font=[Arial,8,0,0]
Caption="Write"
Data=String(Hello!_)
link(onClick,82387:doWrite,[])
}
Add(Message,66931,308,112)
{
Caption="Read"
}
Add(Message,32894,259,105)
{
Caption="Write"
}
Add(Button,49053,161,133)
{
Left=20
Top=70
Width=65
Font=[Arial,8,0,0]
Caption="Read (20)"
Data=Integer(20)
link(onClick,82387:doRead,[])
}
Add(Button,38287,119,70)
{
Left=20
Top=100
Width=65
Font=[Arial,8,0,0]
Caption="Clear"
link(onClick,82387:doRXClear,[(174,76)(174,125)])
}
Add(Button,23758,77,105)
{
Left=20
Top=10
Width=65
Font=[Arial,8,0,0]
Caption="Open"
link(onClick,82387:doOpen,[])
}
Add(COM,82387,210,105)
{
BaudRate=115200
Parity=4
link(onWrite,32894:doMessage,[])
link(onRead,66931:doMessage,[])
}
поэтому, СМОТРИ ПЕРВОЕ ПРЕДЛОЖЕНИЕ поста. Можно посмотреть еще самый первый форум - очень интересно!
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#21: 2004-11-10 13:03:15 ЛС | профиль | цитата
Попробуйте запутить программу с другим номером порта. Мало вероятно конечно, но может у вас не совпадают номера портов.
карма: 27
0
Ответов: 9906
Рейтинг: 351
#22: 2004-11-10 23:31:02 ЛС | профиль | цитата
Stenton:
Листинг конечно интересный, но что с ним делать (какие следует из него делать выводы)? Помогли бы советом...
Вы говорите про многие заморочки. Нельзя ли огласить весь список? Ну типа:
1) Эта заморочка делает то и то.....
2) Эта заморочка делает то и то.....
....................
Что было понятно (мне пока) из вашего сообщения?
1) Таймауты надо делить! Возможно, и даже не трудно. Но разве это влияет на работоспособность элемента? Давайте разберемся с этим: я утверждаю что он работает, а Вы?
2) Вы хотите пооткрывать 255 портов? А кто Вам мешает! где дуля-то? Ставьте 255 элементов, в чем проблемы - не пойму пока. Или я что-то неправильно понимаю.....
3) А какие другие заморочки

IVAN:
А как вы себе представляете одновременную работу нескольких приложений с COM-портом? Вернее как и кто потом будет выяснять от какого приложения пришли данные и какому приложению отдавать обратно данные из COM-а. Если закрыть COM, то он действительно освобождается, и другие проги смогут с ним работать. Если такого же не могут сделать эти другие - то это же их проблема! Так же как с файлом: если я его открыл на чтение /запись, то либо у меня ничего не получится (файл занят другой прогой), либо у других будет закрыт доступ до тех пор, пока я его не закрою. При всей либеральности 98-й, она тоже не позволяет таких вольностей, даже если не через WinAPI, а программировать напрямую через порты.
Если вопрос только в том, что выдать сообщение "не могу открыть COM", то это нетрудно сделать. Только открыть его от этого не легче, все равно придется освобождать COM от других приложений.

Ну а свой пример я испытывал бесконечно просто - соединил между собой 2 и 3 контакты разъема. Что передавалось ('Hello!_' например несколько раз) - то и было успешно потом не приеме. И никаких других приложений, чтобы не пудрить себе мозги чужими проблемами (и своих хватало). А что COM не открывается (если например его заняла другая прога - что нетрудно) я видел по тому, что при передаче не проходило событие onWrite.
И все (дешево и сердито)
карма: 9

0
Ответов: 9906
Рейтинг: 351
#23: 2004-11-11 12:07:29 ЛС | профиль | цитата
IVAN:
1) Вы элемент из Upload брали?
2) Кроме элемента, не трудно ли Вам замкнуть 2 и 3 контакты на разъеме (надеюсь, что Вы сделаете это на том, который соответствует номеру порта из примера).
3) Не работает, хорошее и красивое слово, но не говорящее ничего конкретного. Программы, которые Вы, возможно, использовали для диагностики мне неизвестны, как и окружение в системе на момент эксперимента. Но мои слабые познания английского говорят о том, что SUCCESS - это успех дословно. Поэтому из Ваших листингов сделать диагноза не получается. Говорить можно шумно и красиво, но проще выполнить простые действия понятные с обоих сторон сети: выполните первые два и ответьте ниже по пунктам:
4) Что происходит после нажатия кнопки Open, если запустить пример который я приводил, при условиях из первых двух пунктов
5) Что происходит после этого при нажатии кнопки Write ?
6) Что происходит после этого, при нажатии кнопки Read ?
7) Что происходит после этого, если повторить пункт 5 пять раз?
8) Что происходит после этого, если повторить пункт 6 четыре раза?
Просьба выполнить вышеописанное именно в указанной последовательности, и именно с тем примером, который я приводил, и без запуска иных программ. Тогда можно пытаться поставить диагноз, иначе - слишком много неопределенности.
=======================
Мои предложения не очень притязательны, но и они оттого, что Вы не читали (а если читали, то проигнорировали) Самый Первый Форум. Прочитайте все-таки. Или попробуйте мысленно поставить себя на наше место и понять чего же Вы включали, и в какой последовательности? Осмелюсь заверить - это невозможно. Ведь, даже на вопрос: какие кнопки Вы нажимали, ответ был не говорящий ровным словом ничего. Понятно, что из этого примера - других-то на форуме почему-то не оказалось. А вот какие именно и в какой последовательности - полный молчек! Ноль информации - столько же и продвижения вперед....
карма: 9

0
Ответов: 9906
Рейтинг: 351
#24: 2004-11-11 20:27:49 ЛС | профиль | цитата
"IVAN" писал(а):
Как вывести в порт управляющие символы - например возврат каретки (код 13dec = 0x0d ) и им подобные ?

Это вопрос интерфейса между HiAsm и пользователем. То что Вы написали он переводит в строку-Паскаль, в которой может стоять все что угодно без ограничения, и генерирует Дельфи-коды которые эту строку куда-то посылают. Ну а COM-у, естественно, глубоко параллельно, чего в него пишут - все и передаст.
Ну а правила сегодня такие: работают следующие эскэйп-коды -
, , <любое десятичное число>. Поэтому варианта два, либо:
Привет!Сегодня хорошая погода..
либо:
Привет!1310Сегодня хорошая погода..
карма: 9

0
Ответов: 9906
Рейтинг: 351
#25: 2004-11-11 21:45:40 ЛС | профиль | цитата
Stenton! Вопросы из чистого любопытства:
1) По поводу Вашего примера - про COM0 никогда не слышал
2) Что означает:
"Stenton" писал(а):
Только скорость порта нужно выбирать постоянно, иначе оБшиБка
Нужны разъяснения - непонятно....
3) Вы умеете общаться с модемом? Есть вроде такая нужда....
карма: 9

0
Ответов: 9906
Рейтинг: 351
#26: 2004-11-12 12:22:55 ЛС | профиль | цитата
В системе (в маздае во всяком случае) Serial0 - это СОМ1 или по русски, тьфу, на асме - соmm0.

Это Вы зря. Проверьте соответствие физически подключенных портов определенным. Элемент данные воспринимает как номер COM-a, а не порта.
карма: 9

0
Ответов: 9906
Рейтинг: 351
#27: 2004-11-12 19:46:23 ЛС | профиль | цитата
То что у Вас пишется Port1, на самом деле COM1 (т.е Port0).
А что, по физическому соответствию разъемов это не видно?
карма: 9

0
Ответов: 9906
Рейтинг: 351
#28: 2004-11-16 11:58:01 ЛС | профиль | цитата
Вот у меня сзади один физический разъем DB9 и соответствует порту Serial0 или COM1. Ваш пример пишет, что определен Port1. Что в, общем-то, и понятно из кодов элемента...
Короче, цикл надо делать от 1 до 255, а не от 0 до 254. Ну и писать, наверное ComX, а не PortX. Наверное...
карма: 9

0
Ответов: 9906
Рейтинг: 351
#29: 2004-11-17 20:26:50 ЛС | профиль | цитата
Stenton, у меня слово короче не значило ничего. Просто медометие.... Спорить тут не о чем - запросто
карма: 9

0
Ответов: 9906
Рейтинг: 351
#30: 2004-11-21 00:30:54 ЛС | профиль | цитата
Stenton!
Перечитал весь топик........
А Вы умеете читать/устанавливать модемные сигналы, читать состояние буфера приема (без прима данных, с таймаутами), делать Break (установить выход TXD в +12В)?
Хотя бы на Асме?
карма: 9

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)