Как отправить данные в COM порт #691184


#0 by Mr Semenov
Здравствуйте! Есть контроллер и стоит задача подружить его с 1С. Мне нужно посылать в него команды и принимать ответы. Статья не помогла. Платформа 8.3. Если кто сталкивался, посоветуйте внешнюю компоненту или способ, как сделать. Спасибо!
#1 by Wobland
такие же люди - а не работает тчк
#2 by Одесса
Что понимается по " подружить его с 1С" Еще в семерке работал с ком-портом через объект MsCommLib.MsComm (в частности программировал весы разных моделей) Может это еще поможет:
#3 by spectre1978
гугл - внешняя компонента для работы с компортом 1С. Их есть. Лет пять назад я находил даже в исходниках на дельфи, правда, под семерку.
#4 by ОдинСерый
главное на АЭС не ставьте :)))
#5 by Одесса
От Майкрософта mscomm32.ocx Зарегистрировать и вызывать как в Новый ComОбъект("MsCommLib.MsComm.1"); В гугле читаем про свойства и методы объекта.
#6 by oleg_km
+ Идет в поставке с Visual Studio 6 как приложение к VB 6
#7 by Serginio1
Можешь использовать .NET
#8 by Serginio1
7+
#9 by FidelBoom
ты попробуй через Hyper terminal вначале ручками какой-нибудь пакет отправить, данные какие-нибдуь. У тебя COM-port в системе определен? И работает ли он вообще.
#10 by Mr Semenov
COM в системе определен, работает. Через программку KeTerm которая на офсайте лежит команды проходят, реле на контроллере щелкает, получаю ответ. Пытался напрямую в ком послать через командную строку echo команда > COM10 глухо( Пробовал ВК rs232, с ней не получилось, молчит контроллер. Буду пробовать предложенные способы с майкрософтовской компонентой. По итогам отпишусь)
#11 by spectre1978
Пытался напрямую в ком послать через командную строку echo команда > COM10 глухо( возможно, параметры соединения, которые стоят по умолчанию, не подходят к железке. Скорость, дата-биты, стоп-биты, четность... В этом самом KeTerm они нигде в настройках не показываются?
#12 by Grobik
Думай, мучай себя. Используй NET
#13 by oleg_km
Тут еще пробегал пример использования ЧтениеТекста, но не помню как там решается вопрос с таймаутом
#14 by Torquader
Можно в момент общения программы с портом запросить его режимы повторным открытием устройства. Потом эти параметры выставляем в настройках COM-порта и будет работать. Особенно, следует обратить внимание на отключение контроля управления потоком, который DOS-подсистема по умолчанию хочет иметь включённым. Скорость, скорей всего, не важна, так как истинный USB клал на неё - он поддерживает команду установки скорости только для того, чтобы потом отдавать её корректно назад, а команда чтения-записи напрямую транслируется в вызов обмена по USB, где никакой скорости нет.
#15 by Mr Semenov
Указывается только номер порта и скорость, по дефолту стоит 9600
#16 by Mr Semenov
Решил проблему! Вот код Основная загвоздка возникла в том, как правильно сформировать строку команды. В конце обязательно нужно ставить возврат каретки и перенос строки. Спасибо всем!
#17 by Одесса
"В конце обязательно нужно ставить возврат каретки и перенос строки" - это, видимо, в твоем конкретном случае. Зависит от протокола обмена с каждым конкретным девайсом.
#18 by Torquader
Думаю, что "возврат каретки" как раз не обязательно, а ПС - это стандартный символ конца команды в Linux - так что не удивительно.
#19 by etc
Усложним, а как отправить строку символов в TCP/IP порт и получить ответ? :)
#20 by etc
Вроде как через сокеты но какой объект удобнее использовать?
#21 by NIkitos91
В c# TcpClient
#22 by oleg_km
Опять же Visual Studio 6 есть OCX WinSock. Пользую его уже более 10 лет
#23 by Filin
ТС явно делает цветомузыку на 1С  :))) Новогодненько ! :)))
#24 by Lionee
ага на 220 V,елка зажгись ))
#25 by Ork
+ + И пока еще не добрался до строк в командах. Вот где его ждет полный и безоговорочный обломс. Ждем серию вопросов как в 1С переделать строку в кодировку ANSI.
#26 by oleg_km
MsCommLib.MsComm.1 сам перекодирует в ANSI. И вроде с бинарными тоже может работать
#27 by Serginio1
#28 by NIkitos91
Спасибо, забрал себе в коллекцию:)
#29 by Serginio1
Только там пример нужно запускать из разных приложений. Я там и кнопку отправить команду сделал невидимой. Если из одного приложения сделать, то посылающий ждет ответ и как сервер не может принять событие. Такой дид лок получается. Я этот сервер в свое время для КПК делал с WiFi для плохой связи. Поэтому данные сжимаются и декодируются в AANSI
#30 by Torquader
А, может быть, лучше сразу посмотреть в сторону http-запросов, под них и готовые объекты есть, которые даже в семёрке работают (хотя, в восьмёрке можно подписаться на события WinSock, и не чувствовать неудобства, кроме записи файла в реестр).
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С