Имя: Пароль:
1C
1С v8
vk_rs232 краш в тонком клиенте
0 marku
 
29.02.24
09:35
Нашел в инете vk_rs232.
Работает, но при выходе из процедуры вылетает 1с
Коллеги поделитесь ссылкой работающей компонентой vk_rs232
1 vde69
 
29.02.24
09:37
перед выходом нужно уничтожить все открытые дискрипторы (явно обнулить все переменные)
2 marku
 
29.02.24
12:52
(1)
Не помогло.
Вот такая процедура. Вылетает при выходе из неё
&НаКлиенте
Процедура Подключитьvk_rs232(Команда)
	
	Попытка
		
		ПодключитьВК = ПодключитьВнешнююКомпоненту("C:\vk_rs232\vk_rs232.dll", "AAA", AddInType.COM);	
		//ПодключитьВК = ПодключитьВнешнююКомпоненту("rs232.dll", "AAA", ТипВнешнейКомпоненты.Native);	
		
	Исключение
		Сообщить("1. "+ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	ПортОткрыт = Ложь;
	
	Если ПодключитьВК Тогда
		КОМПорт = Новый ("AddIn.AAA.vk_rs232");
		  
		Попытка
			КОМПорт.OpenPort("COM2");		
			Сообщить("2. "+"Порт открыт!");
			
			ПортОткрыт = Истина;
		Исключение
			Сообщить("2. "+ОписаниеОшибки());
		КонецПопытки;   
	Иначе
		Сообщить("2. ВК не подключилась");
		
	КонецЕсли;
	
	МенеджерОборудованияКлиент.Пауза(5);
	
	Если ПортОткрыт Тогда
		//Возврат;
		Попытка
			КОМПорт.ClosePort();
			Сообщить("Порт закрыт!");
			
		Исключение
			Сообщить("3. "+ОписаниеОшибки());
		КонецПопытки;		
	КонецЕсли;
	
	КОМПорт=Неопределено;
	ПодключитьВК=Неопределено;
	
КонецПроцедуры
3 Garykom
 
29.02.24
11:55
Паузу добавь после закрытия порта ))
4 marku
 
29.02.24
12:01
(3) не помогло
5 MWWRuza
 
29.02.24
12:24
Вот, вместе с исходниками: https://cloud.mail.ru/public/Riko/P8zu2AXRL
Я там даже чего-то правил, размер какой-то переменной, длины передаваемого пакета не хватало для моей задачи. Я с помощью нее ККТ Спарк-130 к конфе на 7.7 прикручивал.
Ничего не падало, но, это 7.7... что касается 8.Х ничего не скажу, не пробовал.
6 Garykom
 
29.02.24
12:51
ну попробуй мою
https://github.com/Garykom/rs232
7 Garykom
 
29.02.24
12:53
(5) у тебя походу та же что у ТС, старая COMовая
у меня в (6) тоже дельфи/лазарус но Native API ВК
8 marku
 
29.02.24
15:07
(5) не помогло
9 marku
 
29.02.24
15:07
(6) Спасибо за обработку и dll-ками
но не взлетело
так же вылетает 1с
10 H A D G E H O G s
 
29.02.24
15:26
11 DrZombi
 
29.02.24
15:39
(6) Спасибо :)
12 marku
 
29.02.24
17:16
(10) Кажись работает. Пробую дальше
13 Garykom
 
29.02.24
18:14
(9) Походу эти вылеты проблема реализации ВК на паскале
Нестыковки с платформой 1С 8
14 Волшебник
 
29.02.24
18:52
(10) А что там другого по сравнению с сабжем?
15 H A D G E H O G s
 
29.02.24
19:07
(14) Старая dll-ка вылетала, эту я скомпилировал в новой версии delphi и вылетов не стало.
16 Волшебник
 
29.02.24
19:07
(15) 💖 Вам вся планета благодарна!
17 Волшебник
 
29.02.24
19:08
Может выкатим решение более публично, чем ветка на форуме и ссылка на яндекс.диск?
18 marku
 
29.02.24
20:15
(17) Поддерживаю
19 marku
 
29.02.24
21:21
(15) Проблема с вылетом 1с решена
но событие
Процедура ВнешнееСобытие(Источник, Событие, Данные)
не возникает
20 Волшебник
 
29.02.24
21:23
Починили и сломали?
21 H A D G E H O G s
 
29.02.24
21:43
(19) А оно и не должно возникать
22 Garykom
 
29.02.24
21:46
(19) ОбработкаВнешнегоСобытия же
23 H A D G E H O G s
 
29.02.24
22:19
А вот так должно
https://disk.yandex.ru/d/N8jL4qePsqfqpQ
24 marku
 
01.03.24
08:28
(23) Не вылетает. Но  события тоже не возникает ((

&НаКлиенте
Перем ПортВК;
&НаКлиенте
Процедура ПодключитьВК(Команда)
    Попытка
        ВК = ПодключитьВнешнююКомпоненту("C:\vk_rs232\vk_rs232.dll", "AAA", AddInType.COM);    
        //ВК = ПодключитьВнешнююКомпоненту("rs232.dll", "AAA", AddInType.COM);    
        Сообщить("1.ВК подключена!");
    Исключение
        Сообщить("1.Ошибка подключения." + ОписаниеОшибки());
        Возврат;
    КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПорт(Команда)
    ПортОткрыт = Ложь;          
    ПортВК = Новый ("AddIn.AAA.vk_rs232");
    //ПортВК = Новый ("AddIn.AAA.rs232");
    Попытка
        ПортВК.OpenPort("COM2");        
        Сообщить("2. "+"Порт открыт!");
        Сообщить("Свойства после открытия:");
        Сообщить("Ошибка:           " + ПортВК.Ошибка);
        Сообщить("КОД КонецСтроки 1:      " + КодСимвола(ПортВК.КонецСтроки,1));
        Сообщить("КОД КонецСтроки 2:      " + КодСимвола(ПортВК.КонецСтроки,2));
        Сообщить("стрДлина КонецСтроки:      " + СтрДлина((ПортВК.КонецСтроки)));
        Сообщить("СкоростьПередачи: " + ПортВК.СкоростьПередачи);
        Сообщить("РазмерБайта:      " + ПортВК.РазмерБайта);
        Сообщить("Четность:         " + ПортВК.Четность);
        Сообщить("Стопбит:          " + ПортВК.СтоповыеБиты);
        ПортОткрыт = Истина;
    Исключение
        Сообщить("2. "+ОписаниеОшибки());
    КонецПопытки;  
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьПорт(Команда)
    Если ПортОткрыт Тогда
        Попытка
            ПортВК.ClosePort();
            Сообщить("3. Порт закрыт!");
        Исключение
            Сообщить("3. "+ОписаниеОшибки());
        КонецПопытки;        
    Иначе
        Сообщить("3. Порт еще не открыт");
    КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Сообщить(Источник + " " + Событие + " " + Данные);
КонецПроцедуры

&НаКлиенте
Процедура ОтключитьВК(Команда)
    ПортВК = Неопределено;
КонецПроцедуры
25 marku
 
01.03.24
08:29
(24) vk_rs232x32.dll переименовал в vk_rs232.dll
26 H A D G E H O G s
 
01.03.24
11:30
(25) Ну вы же на com-порте ждете простую строку, в конце которой перенос строки? #13#10 (Символы.ПС). Так?
27 Garykom
 
01.03.24
12:02
(26) хе у меня настраивается в (6)
    function GetDividers(DeviceName: variant): variant;
    function SetDividers(DeviceName: variant; Dividers: variant): variant;
28 marku
 
01.03.24
12:29
29 Garykom
 
01.03.24
13:04
ОФ?

Очень рекомендую подключать rs232 девайс к компу через usb переходник
Там можно забить на настройки скорости порта и меньше проблем

Еще лучше не использовать никакую ВК
А поднять отдельный микросервис (который работает с весами через порт rs232)
И через обработку ожидания к нему обращаться из 1С по http
30 Garykom
 
01.03.24
13:08
Либо взять нечто вроде
https://www.ozon.ru/product/wt32-eth01-modul-esp32-ethernet-wifi-bluetooth-1387108428

Подключить к весам и превратить их в сетевые, со своим микросервисом http на борту
31 arsik
 
01.03.24
13:13
(30) Дорого
32 Garykom
 
01.03.24
13:16
(31) весы сколько стоят?
33 Garykom
 
01.03.24
13:20
уже пробовал свои весы подключить тупо как сканер шк?
https://torg.1c.ru/articles/kak-podklyuchit-skaner-shtrikhkodov-v-tipovykh-programmakh-1s/