|
Как отправить данные в 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, и не чувствовать неудобства, кроме записи файла в реестр).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |