|
|
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Запуталась окончательно. Есть весовой терминал (протокол обмена в прикрепленном файле) пользуюсь MSComm какдолжна выглядеть команда thisform.Olecontrol1.output=???? и thisform.Olecontrol1.input=???? чтобы получить значение массы с терминала. Заранее большое спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 20:52:09 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Hi OLga_Tv! А сделать то-же самое, но чтобы не надо было глаза ломать никак нельзя? Вам то проще, имея оригинал, набрать всё в точности в виде простого текста... А вообще работа с MSCOMM обсуждалась уже столько раз... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2005, 00:39:07 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Пиши на lexmal@inbox.ru У него есть самописная FLL-ка, с описанием и функциями асинхронной работы с портами, от СОM до Win Sock. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2005, 02:54:00 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Вся проблема в том что я никак не могу понять что должна послать и как принять данные с Com-порта. Пробовала с модемом все работает. А с весами нет. Например послав на сомманду 10H вместо веса получаю FF вопрос как должны выглядеть команды thisform.Olecontrol1.output=???? и thisform.Olecontrol1.input=???? когда я посылаю команду 10h???????? Из документации: Активозировать ->01H + 4байт номера* Принять данные с индикатора ->10H; <-9 байт индикатора принять данные о пассивной клавише->11H;<-1 байт клавиши сбросит пассивную клавишу ->19H принять активную клавишу ->14H; <-1 байт клавиши выдать активную клавишу ->13H; <-1 байт клавиши* сбросить активную клавишу ->15H;* выдать данные на индикатор ->12H + 8 байт данных;* перевести терминат в индикацию веса ->18H* произвести установку нуля ->0DH* на команды отмеченные "*" прибор выдает подтверждение кодом #FF после выдачи в канал активной клавиши необходимо сбросить активную клавишу прием данных с индикатора: в последовательный каналпослать команду 10h. в ответ на данную команду терминал выдаст строку из 9 байт символьного формата. первый байт символ "=", 2-8 байт соответствует содержимому непосредственно индикатора терминала, последний байт- состояние трех информациооных светодиодов. Пример- '=0.00000$'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2005, 15:02:35 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Hi OLga_Tv! 10H - это предполагается шестнадцатеричное число 10 - которе в фоксе вяглыдит как 0x10 - т.е. слать в порт надо CHR(0x10). А приём лучше сделать в обработчике события OnComm - дабы не делать некрасивого цикла ожидания, пока изменится InBufferCount. При этом собственно приём данных выгдялит как lcData = MSComm.Input - потом принятые данные надо "разобрать" в соответствии с описываемым форматом (поскольку он в основном символьный а не бинарный это не представляет никакого труда - последний символ можно и отбросить - если не надо анализировать "состояние светодиодов"). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 02:51:37 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
HI Igor Korolyov То что 10H шестнадцатеричное число я поняла, только эту команду я посылала в порт в след. виде chr(16), на сколько я понимаю это одно и тоже. В результате терминал мигает и больше ни на что не реагирует и событие OnComm не происходит. Есть люди которые утверждают что с подобными весами работали под DOS-ом в FOXPRO2. команда chr(16) работала прекрасно. Может быть здесь дело в кодировке символов? Пробовата MSComm с модемом удалось не только установить соединение но кое-что передать, т.е. проблема вся в том как должна выглядеть команда. К терминалу прилагалась маленькая демонстрационная программка. Она работает без проблем. Заранее благодарна за любой совет, уже отчаялось что все это когда-нибудь заработает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2005, 21:43:43 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
? ASC(CHR(0x10)) ? CPCONVERT(1251,866,CHR(0x16)) Так точно. Именно в кодировке и дело. CPCONVERT - всегда! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 00:14:22 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Ну понятно, что ошибся: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 00:15:52 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Hi piki_piki! Ну ну, поконвертируй код из нижней части ASCII таблицы :) Баловство это и тут не нужно. Посмотри сам изменился что-то или нет после твоего шаманства. 0x10 он и в Африке 0x10 - конечно если бы была речь про символы с кодами > 128, и именно про символы (русский текст например), а не про десятичные или шестнадцатеричные коды - тогда другое дело :) 2 OLga_Tv - Настройки порта не соответствуют тому что надо девайсу - Или код в OnComm неправильно написан - Или про RThreshold забыла - от того и не генерируется событие... - VFP.AutoYield = .F. где-то до начала работы с этим ActiveX-ом также не забывай. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 02:19:14 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
автор[Ну ну, поконвертируй код из нижней части ASCII таблицы :) Баловство это и тут не нужно. Посмотри сам изменился что-то или нет после твоего шаманства. 0x10 он и в Африке 0x10 - конечно если бы была речь про символы с кодами > 128, и именно про символы (русский текст например), а не про десятичные или шестнадцатеричные коды - тогда другое дело Игорь, уважаемый Игорь, что вы пишете? Вы в запое или как ? piki_piki - все правильно написал. Ты парень не путай свои амбиции с реальностью. Заибал уже. паяльнок в жопу получишь. Че рубишь правильные ответы? Ты сперва попробуй - потом вякай. И если топик сотрут, у заявлюсь на хост. Все сказал. Иди проспись, пьянь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 04:45:31 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
А что такое VFP.AutoYield = .F? Все остальное вроде бы не забыла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 09:57:54 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
У тебя объект методы генерить не будет еслти оно = .f. Это для ActiveX свойство такое... Насчет кодировки солидарен с Игорем. 0x10 символ не переведется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 12:33:59 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
А пишется вот так _ VFP.AutoYield = .F. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 12:53:47 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
То luser: Прав - не прав, это еще вопрос. Не понятно ваше хамство. Или Вы думаете, что Вас невозможно найти ? Легко - все сервера ведут логи. Тем более ничего радикального и ущимляющее Ваше самолюбие в посте не прозвучало. Вы меня не перестаете удивлять, "товарищ" luser. Но, понять такие выходки можно только если учесть, что за окном осень и у некотрых индивидов случаются обострения. С уважением, Иван Махно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 14:53:17 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Вы пишете что демо программа работает, тогда никаких проблемм. Значит делаем так: 1. Подключаем в разрыв (между терминалом и основным компом) ещё один комп (ПК2). Подключаем перемычкой COM порт основного с COM1 ПК2, COM2 ПК2 с терминалом. 2. пишем для ПК2 небольшую программу перехвата и перенаправления данных между COM1 и COM2. В окне этого перехватчика нужно поставить 2 TextBox(первый- что принимается, второй- что отправляется). 3. Запускаем на основном компьютере демо программу и видим на ПК2 в TextBox-ах что отправляется и принимается. Далее анализируем или просто копируем посланные команды из TextBox к себе в программу. Думаю поможет такой трюк! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 17:42:38 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Уважаемый Петров Андрей! Если вас не затруднит объясниете еще раз. То что 0x10 символ не переведется я поняла, значит команду посылаю правильную, остается одна надежда на _VFP.AutoYield. На сколько я понимаю по умолчанию оно равно .t., а мне надо его установить в .f. или нет? Но тогда опять вопрос. Дома в отсутствии весов пробовала с модемом. Все работало. отсюда есть подозрение, что и это свойство установлено правильно. Я в полном отчаянии, похоже весы победили.!!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 23:04:59 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Уважаемый Петров Андрей! Если вас не затруднит объясниете еще раз. То что 0x10 символ не переведется я поняла, значит команду посылаю правильную, остается одна надежда на _VFP.AutoYield. На сколько я понимаю по умолчанию оно равно .t., а мне надо его установить в .f. или нет? Но тогда опять вопрос. Дома в отсутствии весов пробовала с модемом. Все работало. отсюда есть подозрение, что и это свойство установлено правильно. Я в полном отчаянии, похоже весы победили.!!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 23:21:45 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Hi Владимир! А зачем всё это нужно, если протокол описан? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 01:12:16 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Hi OLga_Tv! Работа из программы и работа из среды несколько отличаются - особенно в плене всевозможных "задержек", также могут влиять особенности самого устройства - одни устройства отвечают на запрос практически сразу, другие - через довольно заметный промежуток времени (можемы как правило весьма задумчивы при ответе на некоторые команды). Так что всё-же выставить _VFP.AutoYield = .F. надо. Для проверки функционирования устройства можно воспользоваться штатной программой имеющейся практически в любой версии Windows - "Гипертерминалом" (aka Hyperterminal) - подключись к СОБСТВЕННО порту (не поддаваясь на попытку подсунуть тебе "модем" как устройство в диалоге подключения) на котором висят весы, затем где-нить создай символ с кодом 16 и помести его в буфер обмена (можно в фоксе через _CLIPTEXT = CHR(16), можно в текстовом редакторе, или в FAR-е, нажав последовательно 1 и 6 на цифровой клавиатуре, удерживая при этом кнопку Alt - ну и потом любым доступным способом загнав этот "непечатный" символ в буфер обмена) - затем в меню Edit терминала выбери "Paste to host" - ну или как там это по-русски будет. При этом данный символ будет послан на устройство, и если всё правильно, то устройство пришлёт ответ. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 01:23:30 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Hi Владимир! А зачем всё это нужно, если протокол описан? Иногда описания бывают не полными! Может быть нужно после chr(16) послать ещё chr(13) или например так "{"+chr(16)+"}" или ещё что нибудь. Поэтому я иногда не верю тому, что написано. Тот вариант который я предложил развеит все сомнения по поводу кодировки и команд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 08:52:35 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
__Владимир__Вы пишете что демо программа работает, тогда никаких проблемм. Значит делаем так: 1. Подключаем в разрыв (между терминалом и основным компом) ещё один комп (ПК2). Подключаем перемычкой COM порт основного с COM1 ПК2, COM2 ПК2 с терминалом. Думаю поможет такой трюк! Зачем так сложно ? Есть обычные cниферы для сом портов. http://www.sysinternals.com/utilities/portmon.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 09:36:10 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Hi Igor Korolyov Большое срасибо что не бросили начиниющего в беде! К сожалению смогу попробовать только в пятницу, но теперь хотя бы есть что пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 14:55:02 |
|
||
|
Работа с COM-портом
|
|||
|---|---|---|---|
|
#18+
Игорь, уже вторник :) Хватит бухать. Какие терминалы. У человека явный протокол. Ты че тормозишь, брат ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 17:02:51 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1592868]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 533ms |

| 0 / 0 |
