|   |   | 
| 
 | Как отправить данные в COM порт | ☑ | ||
|---|---|---|---|---|
| 0
    
        Mr Semenov 09.12.13✎ 19:08 | 
        Здравствуйте! Есть контроллер http://www.kernelchip.ru/Ke-USB24R.php и стоит задача подружить его с 1С. Мне нужно посылать в него команды и принимать ответы. Статья http://kb.mista.ru/article.php?id=77 не помогла. Платформа 8.3. Если кто сталкивался, посоветуйте внешнюю компоненту или способ, как сделать. Спасибо!     | |||
| 1
    
        Wobland 09.12.13✎ 19:10 | 
        v8: Блин почта :(
 v8: Изменить цвет текста на кнопке в управляемой форме такие же люди - а не работает тчк | |||
| 2
    
        Одесса 09.12.13✎ 19:52 | 
        Что понимается по " подружить его с 1С"
 Еще в семерке работал с ком-портом через объект MsCommLib.MsComm (в частности программировал весы разных моделей) Может это еще поможет: v8: Команды с 1С 8.2 на Сom Port | |||
| 3
    
        spectre1978 09.12.13✎ 19:53 | 
        гугл - внешняя компонента для работы с компортом 1С.
 Их есть. Лет пять назад я находил даже в исходниках на дельфи, правда, под семерку. | |||
| 4
    
        ОдинСерый 09.12.13✎ 20:03 | 
        (0) главное на АЭС не ставьте :)))     | |||
| 5
    
        Одесса 10.12.13✎ 11:41 | 
        (3) От Майкрософта mscomm32.ocx Зарегистрировать и вызывать как в (2) Новый ComОбъект("MsCommLib.MsComm.1");
 В гугле читаем про свойства и методы объекта. | |||
| 6
    
        oleg_km 10.12.13✎ 11:54 | 
        +(5) Идет в поставке с Visual Studio 6 как приложение к VB 6     | |||
| 7
    
        Serginio1 10.12.13✎ 12:10 | 
        (0) Можешь использовать .NET
 v8: v8: Использование сборок .NET в 1С 7.x и 8.x | |||
| 8
    
        Serginio1 10.12.13✎ 12:22 | ||||
| 9
    
        FidelBoom 10.12.13✎ 12:26 | 
        ты попробуй через Hyper terminal вначале ручками какой-нибудь пакет отправить, данные какие-нибдуь. У тебя COM-port в системе определен? И работает ли он вообще.     | |||
| 10
    
        Mr Semenov 10.12.13✎ 12:53 | 
        (9) COM в системе определен, работает. Через программку KeTerm которая на офсайте лежит команды проходят, реле на контроллере щелкает, получаю ответ. Пытался напрямую в ком послать через командную строку echo команда > COM10 глухо( Пробовал ВК rs232, с ней не получилось, молчит контроллер. Буду пробовать предложенные способы с майкрософтовской компонентой. По итогам отпишусь)     | |||
| 11
    
        spectre1978 10.12.13✎ 22:39 | 
        Пытался напрямую в ком послать через командную строку echo команда > COM10 глухо( 
 возможно, параметры соединения, которые стоят по умолчанию, не подходят к железке. Скорость, дата-биты, стоп-биты, четность... В этом самом KeTerm они нигде в настройках не показываются? | |||
| 12
    
        Grobik 10.12.13✎ 22:55 | 
        Думай, мучай себя. Используй NET     | |||
| 13
    
        oleg_km 11.12.13✎ 09:32 | 
        (11) Тут еще пробегал пример использования ЧтениеТекста, но не помню как там решается вопрос с таймаутом     | |||
| 14
    
        Torquader 11.12.13✎ 13:21 | 
        (11) Можно в момент общения программы с портом запросить его режимы повторным открытием устройства.
 Потом эти параметры выставляем в настройках COM-порта и будет работать. Особенно, следует обратить внимание на отключение контроля управления потоком, который DOS-подсистема по умолчанию хочет иметь включённым. Скорость, скорей всего, не важна, так как истинный USB клал на неё - он поддерживает команду установки скорости только для того, чтобы потом отдавать её корректно назад, а команда чтения-записи напрямую транслируется в вызов обмена по USB, где никакой скорости нет. | |||
| 15
    
        Mr Semenov 11.12.13✎ 13:35 | 
        (11) Указывается только номер порта и скорость, по дефолту стоит 9600     | |||
| 16
    
        Mr Semenov 11.12.13✎ 18:38 | 
        Решил проблему! Вот код
 KeUSB = Новый COMОбъект("MsCommLib.MsComm.1"); KeUSB.CommPort = 1; KeUSB.Settings = "9600,N,8,1"; KeUSB.Handshaking = 1; KeUSB.InputLen = 0; KeUSB.InBufferSize = 40; KeUSB.OutBufferSize = 40; KeUSB.RThreshold = 0; KeUSB.PortOpen = True; KeUSB.Output = СокрЛП(ЭлементыФормы.Команда.Значение) + Символы.ВК + Символы.ПС; KeUSB.PortOpen = False; Основная загвоздка возникла в том, как правильно сформировать строку команды. В конце обязательно нужно ставить возврат каретки и перенос строки. Спасибо всем! | |||
| 17
    
        Одесса 11.12.13✎ 20:00 | 
        (16) "В конце обязательно нужно ставить возврат каретки и перенос строки" - это, видимо, в твоем конкретном случае. Зависит от протокола обмена с каждым конкретным девайсом.     | |||
| 18
    
        Torquader 11.12.13✎ 20:27 | 
        (16) Думаю, что "возврат каретки" как раз не обязательно, а ПС - это стандартный символ конца команды в Linux - так что не удивительно.     | |||
| 19
    
        etc 11.12.13✎ 20:39 | 
        Усложним, а как отправить строку символов в TCP/IP порт и получить ответ? :)     | |||
| 20
    
        etc 11.12.13✎ 20:39 | 
        Вроде как через сокеты но какой объект удобнее использовать?     | |||
| 21
    
        NIkitos91 11.12.13✎ 20:49 | 
        (20) В c# TcpClient     | |||
| 22
    
        oleg_km 11.12.13✎ 20:56 | 
        (19) Опять же Visual Studio 6 есть OCX WinSock. Пользую его уже более 10 лет     | |||
| 23
    
        Filin 11.12.13✎ 21:11 | 
        ТС явно делает цветомузыку на 1С  :))) Новогодненько ! :)))     | |||
| 24
    
        Lionee 11.12.13✎ 21:20 | 
        (23) ага на 220 V,елка зажгись ))     | |||
| 25
    
        Ork 11.12.13✎ 22:12 | 
        + (23) + (24) И пока еще не добрался до строк в командах. Вот где его ждет полный и безоговорочный обломс. Ждем серию вопросов как в 1С переделать строку в кодировку ANSI.     | |||
| 26
    
        oleg_km 11.12.13✎ 23:03 | 
        (25) MsCommLib.MsComm.1 сам перекодирует в ANSI. И вроде с бинарными тоже может работать     | |||
| 27
    
        Serginio1 12.12.13✎ 10:32 | ||||
| 28
    
        NIkitos91 12.12.13✎ 10:51 | 
        (27) Спасибо, забрал себе в коллекцию:)     | |||
| 29
    
        Serginio1 12.12.13✎ 11:02 | 
        (28) Только там пример нужно запускать из разных приложений.
 Я там и кнопку отправить команду сделал невидимой. Если из одного приложения сделать, то посылающий ждет ответ и как сервер не может принять событие. Такой дид лок получается. Я этот сервер в свое время для КПК делал с WiFi для плохой связи. Поэтому данные сжимаются и декодируются в AANSI | |||
| 30
    
        Torquader 14.12.13✎ 18:33 | 
        А, может быть, лучше сразу посмотреть в сторону http-запросов, под них и готовые объекты есть, которые даже в семёрке работают (хотя, в восьмёрке можно подписаться на события WinSock, и не чувствовать неудобства, кроме записи файла в реестр).     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |