Вы абсолютно правы. Тем более такие вещи, как компоненты по железу требуют время для изучения доков и тестирования, поэтому будут доведены до ума очень не скоро. И действительно, мне интереснее да и выгоднее заниматься оболочкой, поскольку тут помошников ждать не следует. А вот компоненты люди уже пишут.
Этот топик читают: Гость
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
карма: 27 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Перемычки на разъем ставить не пробовали?
|
|||
карма: 9 |
|
Ответов: 20
Рейтинг: 0
|
|||
Поддерживаю, примерчик бы по COM компоненту.
![]() |
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Уважаемые коллеги!
Более внимательный анализ элемента выявил в нем некоторые недостатки (попросту говоря - не работал ![]() Исправленный вариант лежит в UPLOAD, до следующего билда. Попробуйте, а потом уже будет логичнее поговорить о примерах. |
|||
карма: 9 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Ребята, давайте, выложите любой неработающий пример с COM-портом!
(тогда хоть чуть-чуть станет понятно, чего Вы хотите ![]() Конечно, на чем-то я его тестировал, но, думаю, Вам от этого легче не станет....
|
|||
карма: 9 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Попробуйте запутить программу с другим номером порта. Мало вероятно конечно, но может у вас не совпадают номера портов.
|
|||
карма: 27 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Stenton:
Листинг конечно интересный, но что с ним делать (какие следует из него делать выводы)? Помогли бы советом... ![]() Вы говорите про многие заморочки. Нельзя ли огласить весь список? Ну типа: 1) Эта заморочка делает то и то..... 2) Эта заморочка делает то и то..... .................... Что было понятно (мне пока) из вашего сообщения? 1) Таймауты надо делить! Возможно, и даже не трудно. Но разве это влияет на работоспособность элемента? Давайте разберемся с этим: я утверждаю что он работает, а Вы? 2) Вы хотите пооткрывать 255 портов? А кто Вам мешает! где дуля-то? Ставьте 255 элементов, в чем проблемы - не пойму пока. Или я что-то неправильно понимаю..... 3) А какие другие заморочки ![]() IVAN: А как вы себе представляете одновременную работу нескольких приложений с COM-портом? Вернее как и кто потом будет выяснять от какого приложения пришли данные и какому приложению отдавать обратно данные из COM-а. Если закрыть COM, то он действительно освобождается, и другие проги смогут с ним работать. Если такого же не могут сделать эти другие - то это же их проблема! Так же как с файлом: если я его открыл на чтение /запись, то либо у меня ничего не получится (файл занят другой прогой), либо у других будет закрыт доступ до тех пор, пока я его не закрою. При всей либеральности 98-й, она тоже не позволяет таких вольностей, даже если не через WinAPI, а программировать напрямую через порты. Если вопрос только в том, что выдать сообщение "не могу открыть COM", то это нетрудно сделать. Только открыть его от этого не легче, все равно придется освобождать COM от других приложений. Ну а свой пример я испытывал бесконечно просто - соединил между собой 2 и 3 контакты разъема. Что передавалось ('Hello!_' например несколько раз) - то и было успешно потом не приеме. И никаких других приложений, чтобы не пудрить себе мозги чужими проблемами (и своих хватало). А что COM не открывается (если например его заняла другая прога - что нетрудно) я видел по тому, что при передаче не проходило событие onWrite. И все (дешево и сердито) ![]() |
|||
карма: 9 |
|
Ответов: 9906
Рейтинг: 351
|
|||
IVAN:
1) Вы элемент из Upload брали? 2) Кроме элемента, не трудно ли Вам замкнуть 2 и 3 контакты на разъеме (надеюсь, что Вы сделаете это на том, который соответствует номеру порта из примера). 3) Не работает, хорошее и красивое слово, но не говорящее ничего конкретного. Программы, которые Вы, возможно, использовали для диагностики мне неизвестны, как и окружение в системе на момент эксперимента. Но мои слабые познания английского говорят о том, что SUCCESS - это успех дословно. Поэтому из Ваших листингов сделать диагноза не получается. Говорить можно шумно и красиво, но проще выполнить простые действия понятные с обоих сторон сети: выполните первые два и ответьте ниже по пунктам: 4) Что происходит после нажатия кнопки Open, если запустить пример который я приводил, при условиях из первых двух пунктов 5) Что происходит после этого при нажатии кнопки Write ? 6) Что происходит после этого, при нажатии кнопки Read ? 7) Что происходит после этого, если повторить пункт 5 пять раз? 8) Что происходит после этого, если повторить пункт 6 четыре раза? Просьба выполнить вышеописанное именно в указанной последовательности, и именно с тем примером, который я приводил, и без запуска иных программ. Тогда можно пытаться поставить диагноз, иначе - слишком много неопределенности. ======================= Мои предложения не очень притязательны, но и они оттого, что Вы не читали (а если читали, то проигнорировали) Самый Первый Форум. Прочитайте все-таки. Или попробуйте мысленно поставить себя на наше место и понять чего же Вы включали, и в какой последовательности? Осмелюсь заверить - это невозможно. Ведь, даже на вопрос: какие кнопки Вы нажимали, ответ был не говорящий ровным словом ничего. Понятно, что из этого примера - других-то на форуме почему-то не оказалось. А вот какие именно и в какой последовательности - полный молчек! Ноль информации - столько же и продвижения вперед.... |
|||
карма: 9 |
|
Ответов: 9906
Рейтинг: 351
|
|||
"IVAN" писал(а): Как вывести в порт управляющие символы - например возврат каретки (код 13dec = 0x0d ) и им подобные ?Это вопрос интерфейса между HiAsm и пользователем. То что Вы написали он переводит в строку-Паскаль, в которой может стоять все что угодно без ограничения, и генерирует Дельфи-коды которые эту строку куда-то посылают. Ну а COM-у, естественно, глубоко параллельно, чего в него пишут - все и передаст. Ну а правила сегодня такие: работают следующие эскэйп-коды - , , <любое десятичное число>. Поэтому варианта два, либо:
|
|||
карма: 9 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Stenton! Вопросы из чистого любопытства:
1) По поводу Вашего примера - про COM0 никогда не слышал 2) Что означает: "Stenton" писал(а): Только скорость порта нужно выбирать постоянно, иначе оБшиБка 3) Вы умеете общаться с модемом? Есть вроде такая нужда.... |
|||
карма: 9 |
|
Ответов: 9906
Рейтинг: 351
|
|||
В системе (в маздае во всяком случае) Serial0 - это СОМ1 или по русски, тьфу, на асме - соmm0.
Это Вы зря. Проверьте соответствие физически подключенных портов определенным. Элемент данные воспринимает как номер COM-a, а не порта. |
|||
карма: 9 |
|
Ответов: 9906
Рейтинг: 351
|
|||
То что у Вас пишется Port1, на самом деле COM1 (т.е Port0).
А что, по физическому соответствию разъемов это не видно? |
|||
карма: 9 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Вот у меня сзади один физический разъем DB9 и соответствует порту Serial0 или COM1. Ваш пример пишет, что определен Port1. Что в, общем-то, и понятно из кодов элемента...
Короче, цикл надо делать от 1 до 255, а не от 0 до 254. Ну и писать, наверное ComX, а не PortX. Наверное... ![]() |
|||
карма: 9 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Stenton, у меня слово короче не значило ничего. Просто медометие.... Спорить тут не о чем - запросто
![]() |
|||
карма: 9 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Stenton!
Перечитал весь топик........ А Вы умеете читать/устанавливать модемные сигналы, читать состояние буфера приема (без прима данных, с таймаутами), делать Break (установить выход TXD в +12В)? Хотя бы на Асме? |
|||
карма: 9 |
|