Имя: Пароль:
1C
1C 7.7
v7: Работа с компортом.
0 uno-group
 
18.06.16
12:52
Есть девайс на Arduino с экранчиком. задача выводить на него информацию из 1с.
Пишу в текстовый файл. Дальше дос команда
copy 1.txt \\.\com8 \y
или copy 1.txt com8 \y
На домашнем компьютере все работает.
На рабочих не хочет. Вин7. дрова ставил одни и те же. файлик 1 и тот же, настройки сомпорта в системе стоят одинаковые.
Если взять программу терминал то с нее все выводится, что дома,
что на работе. мозг сломал куда копать.
1 Gary417
 
18.06.16
13:01
перевод строки неправильный только в голову приходит
2 uno-group
 
18.06.16
13:04
файл скопирован с компа на комп.
3 uno-group
 
18.06.16
13:05
А что из ВК умеет в компорт слать команды
надо отсылать что то вроде ^1:1234567890123
4 Garykom
 
гуру
18.06.16
13:52
5 Garykom
 
гуру
18.06.16
13:54
6 uno-group
 
18.06.16
13:58
vk_rs232 скачал. чтото отсылает. но или кодировка неправильная нужна ansi или скорость не та. не нашел синтаксиса на нее
7 Garykom
 
гуру
18.06.16
14:03
(6) Книга знаний: Работа с последовательным (COM, RS-232) портом из 1С:Предприятие 7.7 и 8.0 в самом конце с исходниками можно посмотреть и поправить.

И да задача которую начинаешь уже быть чистым 1С-ником при решении никак, желательно другие языки знать/учить
8 Serginio1
 
18.06.16
14:08
9 uno-group
 
18.06.16
14:30
(8) и это для новичков??? Я микропроцесор на незнакомой сиситеме в разы проще запрограмировал.
так и не понял как в порт записать через это.


Процедура Сформировать()
//       rs232.ЗаписатьСтроку(OemToAnsi("^s:"));
    врап=СоздатьОбъект("NetObjectToIDispatch45");
    порт = врап.СоздатьОбъект("System.IO.Ports.SerialPort");
    
    порт.PortName = "COM8";
    порт.BaudRate = 115200;
    порт.DataBits = 8;
    четность = врап.ПолучитьТип("System.IO.Ports.Parity");
    порт.Parity = четность.None;
    СтопБит = врап.ПолучитьТип("System.IO.Ports.StopBits");
    порт.StopBits = СтопБит.One;
    Управление = врап.ПолучитьТип("System.IO.Ports.Handshake");
    порт.Handshake = Управление.RequestToSend;
    
    порт.Open();

КонецПроцедуры
10 Garykom
 
гуру
18.06.16
14:34
(9) У автора просто плохо выходит представить понятно. Но если разобраться и слегка знать C#/.Net то все очень просто.

В данном случае открыли порт. Дальше просто порт.Write("блабла").
https://msdn.microsoft.com/ru-ru/library/y2sxhat8(v=vs.110).aspx

Есть пример https://msdn.microsoft.com/ru-ru/library/system.io.ports.serialport(v=vs.110).aspx
11 Garykom
 
гуру
18.06.16
14:36
(10)+ Про кодировки там тоже есть.
12 uno-group
 
18.06.16
14:37
как ее зарегистрировать в системе?
13 Garykom
 
гуру
18.06.16
14:58
(12) Почитай про RegAsm только в понятном месте ))
14 Garykom
 
гуру
18.06.16
14:59
(12) Книга знаний: Написание внешних компонент для 1С на VB.NET и C#

Регистрация внешней компоненты в системе Windows
Внешняя компонента фактически является дополнением для программных файлов 1С:Предприятие, и требует соответствующей установки.

Любые внешние компоненты для 1С:Предприятие являются COM-библиотеками, которые необходимо перед первым запуском регистрировать в системном реестре. Для этого необходимо обладать правами администратора или привилегированного пользователя на компьютере, где производится установка.

Регистрация при помощи regsvr32 в данном случае, однако, не работает.

Пример регистрации компоненты в системном реестре, чтобы ее смогла найти 1С:

regasm.exe ИмяКомпоненты.dll /codebase
15 Garykom
 
гуру
18.06.16
15:01
(14)+ Неупомянутая тут тонкость что .net framework'ов может на компе быть несколько (dll разные "45" для 4.5 без для 2.0) и желательно с полным нужным путем regasm.exe запускать.
16 Serginio1
 
19.06.16
00:04
(12) В шапке Использование классов .Net в 1С для новичков есть описание как регистрировать

Рядом с NetObjetToIDispatch.dll есть RegAsm.bat
Его нужно запустить от имени администратора.

(9) Там же есть примеры работы с Com портом
Динамическая компиляция для использования .Net событий в 1С
17 Serginio1
 
19.06.16
00:10
16+ для подключения событий смотри ТестКомпиляцииСобытий.ert
18 Serginio1
 
19.06.16
00:24
Для семерки нужно
    врап=СоздатьОбъект("NetObjectToIDispatch45");
    врап.УстЭтоСемерка();

Так как не поддерживаются множество типов.
И для установки инта нужно
врап.ToInt(Строка(стр));

    порт.BaudRate = врап.ToInt(115200);
    порт.DataBits = врап.ToInt(8);
    
либо
порт.BaudRate = врап.ToInt("115200");
    порт.DataBits = врап.ToInt("8");
Так как в семерке нет int только double. А в .Net может быть перегрузка методов и нужен точный тип.
19 Zamestas
 
19.06.16
00:34
(0) А MSCOMMLib.MSComm.1 уже не катит?
20 oleg_km
 
19.06.16
10:36
(19) Старье и на семерках часто глючит. На .нет лучше