|   |   | 
| 
 | v7: Многопоточность — миф или реальность? | ☑ | ||
|---|---|---|---|---|
| 0
    
        bigdenis22 29.11.16✎ 18:32 | 
        Возможно ли выполнение кода в параллельном потоке? Например опрос датчиков на КОМ-портах, весов, - в фоновом режиме?
 Для работы с ком портами используются паузы, и когда идет опрос портов раз в 2 секунды, - невозможно комфортно редактировать форму документа. нашел такую тему : Кто нибудь создавал потоки на 1С 7.7 ? попробовал прикрутить КОМПОНЕНТу VTOOLs, но при создании потока 1с валится, вроде нашел, что не совместима с FormEx. Ещё пишут, что в DialMail обмен почтой может запускаться в отдельном потоке, но похоже, в моей ситуации это не поможет... Может кто решал подобные задачи? поделитесь опытом? | |||
| 1
    
        Вафель 29.11.16✎ 18:33 | 
        с портами лучше по событиям     | |||
| 2
    
        bigdenis22 29.11.16✎ 18:34 | 
        (1) можно примеры пожалуйста?     | |||
| 3
    
        Кирпич 29.11.16✎ 18:35 | 
        Ну как бы обычно с весами и работают в отдельном потоке. И обычно ничо не тормозит.     | |||
| 4
    
        bigdenis22 29.11.16✎ 18:35 | 
        +2 я из 1с опрашиваю порты, события из датчиков не приходят.     | |||
| 5
    
        Вафель 29.11.16✎ 18:36 | 
        (4) так компонента нужна.     | |||
| 6
    
        bigdenis22 29.11.16✎ 18:38 | 
        (3) научите (подскажите) как? вот я тоже хочу, чтоб не тормозило :) 
 (5) какая и пример использования можно? | |||
| 7
    
        Кирпич 29.11.16✎ 19:23 | 
        Свою вк напиши     | |||
| 8
    
        Garykom гуру 29.11.16✎ 19:25 | ||||
| 9
    
        NorthWind 29.11.16✎ 19:25 | 
        (0) Только ВК.     | |||
| 10
    
        Garykom гуру 29.11.16✎ 19:25 | 
        (7) Не нужна никакая своя ВК совершенно, куча готовых ВК для работы со сканерами ШК прекрасно подойдут     | |||
| 11
    
        Garykom гуру 29.11.16✎ 19:27 | 
        (8)+ Более правильно давать ссылку Книга знаний: Работа с последовательным (COM, RS-232) портом из 1С:Предприятие 7.7 и 8.0     | |||
| 12
    
        NorthWind 29.11.16✎ 19:29 | 
        (10) если только читать, то да. А вот если писнуть, подождать энцать миллисекунд и читнуть - то вряд ли.     | |||
| 13
    
        NorthWind 29.11.16✎ 19:37 | 
        но вообще я бы сильно подумал прежде чем подобные опросы на эске делать, тем более на семерке. Логичнее приложение отдельное на каких-нибудь дельфях сделать или подобном, чтобы оно делало всю низкоуровневую работу, а для 1С, если надо, кидало бы инфу в некий промежуточный буфер, например в отдельную БД, которую потом из 1С можно было бы зачитывать.     | |||
| 14
    
        Кирпич 29.11.16✎ 22:08 | 
        (10) ну так автор, видимо, не нашел ничего     | |||
| 15
    
        Torquader 29.11.16✎ 23:48 | 
        Если из семёрки, то как показала практика отдельный и хорошо исполняемый поток - это созданный объект InternetExplorer.Application, так как оказалось, что у них разные апаренты, то "ослик" выполняется параллельно с 1С - в нём можно делать всё, что угодно, а из 1С периодически (когда нужно) в него заглядывать, чтобы узнать, как он справляется.     | |||
| 16
    
        Злопчинский 30.11.16✎ 00:42 | 
        (15) а из ослика законнектится через веб-клиента на восьмерку!!!     | |||
| 17
    
        Jump 30.11.16✎ 00:44 | 
        (0)Не надо делать на 1с то, для чего она не предназначена.
 Нужно что-то хитрое, многопоточное или еще чего - решай на низкоуровневом языке, а из 1с просто вызывай. | |||
| 18
    
        Torquader 30.11.16✎ 02:17 | 
        (16) А восьмёрка то вам зачем - современные весы часто имеют Web-интерфейс, к которому Ослу очень удобно подключаться.     | |||
| 19
    
        Chieftain 30.11.16✎ 03:28 | 
        (0) А чем не устроил встроенный в 1С++ класс "Таймер"? Работает отдельным потоком, для весов и датчиков-самое то.     | |||
| 20
    
        Это_mike 30.11.16✎ 07:25 | 
        (19) не 1с++, а формекс.     | |||
| 21
    
        Vippi 30.11.16✎ 08:02 | 
        (20) Не формекс, а 1С++ )))     | |||
| 22
    
        bigdenis22 30.11.16✎ 11:21 | 
        (8) (11) спасибо, сейчас почитаю. 
 (19) 1С++ класс "Таймер" а где его взять и почитать? из "встроенных" его вроде нету? | |||
| 23
    
        bigdenis22 30.11.16✎ 11:34 | 
        (8) (11) ну дык или я плохо читал, или все-таки там работа с ком портом в основном потоке... я работаю с ком-портами через MSCOMM, почти тоже самое... мне нужно послать в порт команду, сделать паузу, и прочитать данные с порта, - вот эти паузы и дрочат, поэтому хотелось бы опрос портов вывести в параллельный поток... если это возможно.     | |||
| 24
    
        Fragster гуру 30.11.16✎ 11:35 | 
        в клюшках все уприрается в таблицу журнала документов     | |||
| 25
    
        Salimbek 30.11.16✎ 11:35 | 
        (21) Таймер в Формекс-е, в 1С++ есть только "Система.Уснуть()", вроде.     | |||
| 26
    
        Salimbek 30.11.16✎ 11:45 | 
        (23) Если бы мне надо было быстро сделать, я бы наваял опрашиватель на любом языке, например Ruby, и настроил обмен сообщениями между 1С и приложением через SQLite базу. В Ruby оно быстро интегрируется, а в 1С через 1SQLite от Орефкова. Типа, положил запрос в БД, получил в ответ идентификатор запроса, потом в таблице ответов ищешь по этому идентификатору - что пришло с порта.     | |||
| 27
    
        Salimbek 30.11.16✎ 11:45 | 
        (21) Хотя извиняюсь... вроде в этой теме обсуждается Таймер из 1С++: http://www.1cpp.ru/forum/YaBB.pl?num=1190702677/0
 но больше нигде в доках никакого упоминания я не нашел. | |||
| 28
    
        Ёпрст гуру 30.11.16✎ 11:50 | 
        Есть готовые поделки на веббраузере.     | |||
| 29
    
        Ёпрст гуру 30.11.16✎ 11:50 | 
        там отчеты строятся фоном     | |||
| 30
    
        Ёпрст гуру 30.11.16✎ 11:53 | 
        http://www.1cpp.ru/forum/YaBB.pl?num=1315559526
 пример на последней странице http://www.1cpp.ru/forum/YaBB.pl?num=1316457428 | |||
| 31
    
        Кирпич 30.11.16✎ 12:02 | 
        чо только люди не выдумают. Ruby какой-то еще. SQLite мля...
 Автор напиши что ты хочешь иметь. Я тебе за мороженое сделаю ВК. А то сюда скоро придет один .NET любитель и такого насоветует, что ты будешь решать свою задачу месяц и попутно станешь адептом дотнета. А лечиться от этого ой как долго придется. | |||
| 32
    
        bigdenis22 30.11.16✎ 12:21 | 
        (31) ну как бы в (0) и (23)  в принципе все описано.
 нужен опрос датчиков на ком-портах и вывод динамических показаний на форму документа(визуализация показаний), так чтоб это не мешало пользователю работать с формой документа. на данном этапе, это только весы, дальше добавится температура и сканер РФИД. В определенный момент юзер нажимает кнопку на форме "Получить данные" и они записываются в документ, в текущую строку. Работа с ком портом сейчас осуществляется через MSCOMM, вот пример получения веса: ИначеЕсли РабочееМесто.ТипТО=Перечисление.ТипыВесов.SMART Тогда //SMART Если Весы.PortOpen <> 0 Тогда Весы.Settings = "19200,N,8,1"; Весы.Output = Симв(080)+Симв(013); // команда P + возврат каретки // глПауза(0.1); глСистема.Уснуть(10); Пока Весы.InBufferCount < 13 Цикл глСистема.Уснуть(20); // глПауза(0.02); Время=ТекущееВремя(); тв2 = Число(Лев(Время,2))*60*60+Число(Сред(Время,4,2))*60+Число(Сред(время,7,2)); Если тв2 > тв1+ВремяОжиданияВСек Тогда флПревышенияОжидания = 1; Прервать; КонецЕсли; КонецЦикла; Буфер = СокрЛП(Весы.Input); пВес = Сред(Буфер,2,8); // Сообщить("прием+++"+Строка(Буфер)+"\\(("+Сред(Буфер,2,8)+"))//"); КонецЕсли; получение температуры, будет приблизительно таким-же... так вот пока система "ждет" ответа из ком-порта происходит как-бы зависание... мне кажется, если опрос датчиков (с ожиданиями) можно делать не в основном потоке, - то подвисаний не будет. | |||
| 33
    
        Ёпрст гуру 30.11.16✎ 12:22 | 
        (32) ну, примитив - это или фформексовской обработкойОжидания лепить или Таймером из 1cpp. тут вообще кодить особо нечего     | |||
| 34
    
        bigdenis22 30.11.16✎ 12:27 | 
        (33) получение показаний описано в ГМ, и в форме документа вызывается "фформексовской обработкойОжидания".
 с таймером ещё не разобрался, но КМК там тоже ожидание ответа из порта будет происходить в основном потоке и подвисания останутся!? или я не прав? | |||
| 35
    
        Кирпич 30.11.16✎ 12:31 | 
        (34) у тебя мыло рабочее, которое в карточке? щас я ВК сляпаю, вышлю.     | |||
| 36
    
        bigdenis22 30.11.16✎ 12:35 | 
        (35) можно и туда, то личный, а это рабочий denis()bmk.kh.ua     | |||
| 37
    
        bigdenis22 30.11.16✎ 12:38 | 
        (35) дык а ВК на что заточена? на запуск 1с-ной процедуры/функции в отдельном потоке? или непосредственно на работу с ком портом?     | |||
| 38
    
        ADirks 30.11.16✎ 12:42 | 
        (34) а ты в таймере не жди ничего (не используй sleep())
 команду отправил, на след. тактах проверяй наличие ответа конечный автомат, короче | |||
| 39
    
        bigdenis22 30.11.16✎ 12:49 | 
        (38) если в пустом цикле ждать ответа (от 30 до 200 мс.) проц ложится... это не есть кошерно.     | |||
| 40
    
        Ёпрст гуру 30.11.16✎ 12:50 | 
        (39) зачем в цикле ? Жди его в другой обработке ожидания     | |||
| 41
    
        bigdenis22 30.11.16✎ 12:58 | 
        (40) которую запускать после отправки команды в порт?
 сейчас получение данных реализовано как функция ГМ, которая в форме вызывается ОбработкойОжидания раз в 2 секунды... и получается, что пока не отработает функция, - происходит подвисание... т.е. предлагается одной ОбработкойОжидания посылать команды на порты, а другой собирать данные? | |||
| 42
    
        Кирпич 30.11.16✎ 12:59 | 
        (37) ну типа ВК.Команда("COM1",Симв(080)+Симв(013))
 а потом в обработке ожидания ловишь сообщение от ВК | |||
| 43
    
        Chieftain 30.11.16✎ 13:33 | 
        (34) Попробовал сейчас класс сделать, благо сейчас задача такая же есть.
 Таймер на 500 мс - получение веса с весов, вывод сообщения в строку сообщений. работе не мешает. Запустил цикл перепроведения документов, во время работы цикла сообщения тоже выходят. Вывод - работает отдельным потоком. | |||
| 44
    
        Злопчинский 30.11.16✎ 13:42 | 
        ну вы сильные колдунцы!     | |||
| 45
    
        Chieftain 30.11.16✎ 13:43 | 
        (44) А ты всегда этому так удивляешься))     | |||
| 46
    
        Chieftain 30.11.16✎ 14:04 | 
        (27) Извиняюсь, ввел в заблуждение. Артур его видимо в FormEx запихал. А так как у меня нигде их отдельно нет - всегда работало.     | |||
| 47
    
        ADirks 30.11.16✎ 14:15 | 
        чёта заняться мне нечем, что-ли....
 Перем оТаймер; Перем фТаймер; Перем нСчетчикТаймера; Перем Сост; //Старт, ОжиданиеОтвета Процедура Таймер() Если фТаймер = 1 Тогда Возврат; КонецЕсли; фТаймер = 1; Если Сост = "Старт" Тогда ЗапросВПорт(); Сост = "ОжиданиеОтвета"; нСчетчикТаймера = 20; ИначеЕсли Сост = "ОжиданиеОтвета" Тогда Если ПроверитьОтвет() = 1 Тогда ЗапросВПорт(); нСчетчикТаймера = 20; ИначеЕсли нСчетчикТаймера <= 0 Тогда ЗапросВПорт(); нСчетчикТаймера = 20; КонецЕсли; КонецЕсли; нСчетчикТаймера = нСчетчикТаймера - 1; фТаймер = 0; КонецПроцедуры Процедура ПослеСозданияФормы() оТаймер = СоздатьОбъект("Таймер"); оТаймер.ЗадатьОбработчикВМодулеФормы(Контекст, "Таймер"); оТаймер.Запустить(500); нСчетчикТаймера = 0; Сост = "Старт"; КонецПроцедуры | |||
| 48
    
        Кирпич 30.11.16✎ 14:47 | 
        (41) я ВК отправил. лови на denis     | |||
| 49
    
        Кирпич 30.11.16✎ 14:48 | 
        +(48) смотри test.ert     | |||
| 50
    
        bigdenis22 30.11.16✎ 15:04 | 
        (49) Спасибо. 
 на Вин 7 не регается: Ошибка при создании объекта из компоненты E:\Install\1c\comm\vkcomm.dll (отсутствует CLSID) 0 ВК = СоздатьОбъект("AddIn.commScales"); {E:\INSTALL\1C\COMM\TEST.ERT(15)}: Неудачная попытка создания объекта (AddIn.commScales) на вин 2003 зарегалась и работает. буду пробовать прикрутить к своей "ситуации", позже отпишусь о результатах... если можно пояснение: все файлы, нетипичные для БД мне необходимо переложить в свою базу? | |||
| 51
    
        Кирпич 30.11.16✎ 15:05 | 
        (50) только dll
 остальное исходники. их не надо. | |||
| 52
    
        Кирпич 30.11.16✎ 15:06 | 
        для семерки вроде есть приблуда какая то которая загружает ВК без регистрации. забыл уже.     | |||
| 53
    
        bigdenis22 30.11.16✎ 15:06 | 
        + (50) сорри, прогнал... Запуск 1с от имени ОДмина - решили проблему на Вин 7...     | |||
| 54
    
        Кирпич 30.11.16✎ 15:09 | ||||
| 55
    
        bigdenis22 30.11.16✎ 17:28 | 
        (51) прикрутил к своей базе: достаточно часто выскакивает событие 
 Внешнее событие: Источник=commScales Событие=commErrorДанные=Timeout during operation при этом опрос останавливается секунд на 5. но это не самое худшее, самое худшее это то, что когда приходит внешнее событие - сбрасывается курсор (редактируемый текст выделяется полностью) и нажатие след. символа стирает набранный текст. | |||
| 56
    
        Кирпич 30.11.16✎ 17:30 | 
        ну про курсоры я не знаю, а таймаут увеличить могу. щас вышлю.     | |||
| 57
    
        Кирпич 30.11.16✎ 17:33 | 
        а что за опрос? ты часто порт опрашиваешь чтоли? я то думал юзер на кнопку жмет. тогда по другому делать надо.     | |||
| 58
    
        bigdenis22 30.11.16✎ 17:36 | 
        опрашиваю раз в две секунды (для того чтоб на форме отображались актуальные данные ) а записываются они - да, по кнопке.     | |||
| 59
    
        Кирпич 30.11.16✎ 17:39 | 
        отправил. добавил третий параметр
 ВК.Команда("COM5",Симв(080)+Симв(013),10000);//timeout 10 сек | |||
| 60
    
        Кирпич 30.11.16✎ 17:41 | 
        (58) просто получается, что ты каждые 2 секунды запускаешь поток, который открывает порт, пишет, читает. если первый не успевает за 2 сек, то последующие не выполняются. надо короче по другому. завтра уже.     | |||
| 61
    
        Кирпич 30.11.16✎ 17:43 | 
        а лучше вообще отдельная программа, в отдельном окне показывает данные с весов и по команде отдает данные в 1с. но это уже другая история. там всё за гривны.     | |||
| 62
    
        bigdenis22 30.11.16✎ 17:44 | 
        (60) ок. у меня тоже сегодня голова уже квадратная... не соображаю.
 в любом случае спасибо за желание помочь. | |||
| 63
    
        Кирпич 30.11.16✎ 17:46 | 
        ну или тупо не запускай следующее взвешивание пока первое не завершилось     | |||
| 64
    
        oleg_km 30.11.16✎ 18:07 | 
        (31) Я пришел. У меня все наваяно на .NET     | |||
| 65
    
        Кирпич 30.11.16✎ 18:52 | 
        (64)а раньше нельзя было появиться? Я между прочим пол обеденного перерыва потратил на эту лабуду. Кстати ты - не ОН. Его чота нету. Я уже волнуюсь не захворал ли ОН. | |||
| 66
    
        bigdenis22 30.11.16✎ 19:11 | 
        (47) сутра со свежими мозгами попробую ещё так сделать.     | |||
| 67
    
        Torquader 30.11.16✎ 19:13 | 
        (65) Он просто в ветки про семёрку не очень заглядывает. Мамонты - не его профиль.     | |||
| 68
    
        Torquader 30.11.16✎ 19:16 | 
        Вообще, если мы хотим сделать правильно, как это делается во многих системах, то мы для каждого датчика пишем отдельный поток, который опрашивает датчик и на определённое время засыпает. А результат опроса с отметкой времени последнего опроса пишет в блок памяти, из которого уже 1С забирает нужные ей данные при обновлении формы.
 Для 1С получается всё просто и ясно - спросил и тут же ответили - ни вам задержки ни пропадания курсора. А сами процессы опроса вообще не знают, что там происходит с их данными, после того как они их получили. Другие способы - это уже не многопоточность, а попытки её кривой реализации в одном потоке. | |||
| 69
    
        Кирпич 30.11.16✎ 19:20 | 
        (66) не. Делать надо красиво. Надо чтобы вк сама рисовала без всяких таймеров и даже без внешних событий. Например пускай рисует вес на какой нибудь кнопке на форме и по нажатию на эту кнопку юзер получает вес. Либо рисовать вес в отдельном, маленьком окошке.     | |||
| 70
    
        Злопчинский 30.11.16✎ 19:22 | 
        (69) кривое решение. если вес нужно получать без интерактивной работы юзера - что делать?     | |||
| 71
    
        Кирпич 30.11.16✎ 19:25 | 
        (70) ну так никто не заставляет обязательно рисовать. Просто чтобы возможность была. Чо сразу кривое то.     | |||
| 72
    
        Злопчинский 30.11.16✎ 19:26 | 
        (71) возможность чего? вот есть мое приложение 1сная обработка или какой-то 1Сный1 код.
 как мне программно получит или быть оповещенным о приходе данных с вскрытием конверта-оповещения и получения данных..? | |||
| 73
    
        Кирпич 30.11.16✎ 19:30 | 
        (72) ну как обычно. в ВК работает поток, который постоянно опрашивает весы. вызываешь метод ВК, который возвращает текущий вес. если надо, ВК постоянно выводит вес в отдельном окне.     | |||
| 74
    
        Torquader 30.11.16✎ 21:08 | 
        (73) В отдельном окне в 7.7 очень проблематично - семёрка использует очередь сообщений, и при переходе кода со строки на строку идёт опрос очереди сообщений - тогда всё и прорисовывается, а вот когда выполняется отчёт или другая деятельность 1С, не требующая встроенного языка - очередь сообщений подвисает, если мы что-то выведем в окно через SendMessage - мы будем ждать освобождения очереди. Если после освобождения зайдут к нам, то будет DeadLock и всё.
 Так что - обновлять окна 1С должна только по своей инициативе. | |||
| 75
    
        Кирпич 30.11.16✎ 21:12 | 
        (74) ну я как бы в курсе чо там и как подвисает     | |||
| 76
    
        Garykom гуру 30.11.16✎ 21:51 | 
        (33) Не нужны там ни формекс ни 1с++, штатной ОбработкаОжидания() прекрасно все делается.
 В коде (32) просто несусветная глупость с "глСистема.Уснуть(..);" 
 | |||
| 77
    
        Garykom гуру 30.11.16✎ 21:51 | 
        IdleProcessing(<?>,)
 ОбработкаОжидания(<?>,) Синтаксис: ОбработкаОжидания(<ИмяПроцедуры>,<ИнтервалВызова>) Назначение: Инициирует периодический вызов процедуры глобального модуля с заданным интервалом времени. Возвращает имя процедуры глобального модуля, которая назначена для периодического запуска (на момент до исполнения процедуры). Параметры: <ИмяПроцедуры> - необязательный параметр. Строковое выражение - имя процедуры глобального модуля, которая будет вызываться периодически с временным интервалом <ИнтервалВызова>. Тело процедуры <ИмяПроцедуры> должно быть написано разработчиком конфигурации в глобальном программном модуле. Если в качестве параметра передается 'пустая строка', то ранее запущенный процесс прекращается. <ИнтервалВызова> - необязательный параметр. Числовое выражение - интервал времени в секундах, с которым периодически будет вызываться процедура глобального модуля <ИмяПроцедуры>. Если в качестве параметра передается 0 (ноль), то ранее запущенный процесс прекращается. | |||
| 78
    
        Garykom гуру 30.11.16✎ 21:53 | 
        (76)+ Дополнение, если конфа уже использует ОбработкаОжидания() то нуна не забывать что может только одна "периодического запуска" работать, можно сохранить имя предыдущей обработки и вызывать ее когда нуна в своей.     | |||
| 79
    
        Garykom гуру 30.11.16✎ 22:00 | 
        (76)+ Чтобы "штатно" обновлять на форме "вес", пишем его в "Перем глВес" в глобальнике.
 И задаем формулу "ТекущийВес()" для текстового поля где 
 | |||
| 80
    
        Garykom гуру 30.11.16✎ 22:05 | 
        Да если юзер работает (набирает текст в поле ввода) то вызов обработки ожидания обычно выделяет все введенное в поле и следующим нажатием символа введенные до этого символы того...     | |||
| 81
    
        Garykom гуру 30.11.16✎ 22:12 | 
        Кста штатная обработка ожидания в 7.7 пашет в "отдельном потоке", но любое взаимодействие с базой и данными (включая глобальные переменные) вызывает блокировки (фризы интерфейса).
 С переменными не так заметно, но если в ней начать документы проводить (у меня в некоторых старых конфах такое сделано) то фризы ощутимые :) | |||
| 82
    
        Garykom гуру 30.11.16✎ 22:38 | 
        (79) Да "без работы на форме", т.е. без переходов между элементами формы, нажатий кнопок и т.д., т.е. без событий вызывающих перерисовку форму (перетаскивание не помогает) текст нифига не обновится сам и уже нужны извращения с Форма.Обновить().
 Посмотри вот часики https://cloud.mail.ru/public/LSTZ/jWuzNnNmE | |||
| 83
    
        Torquader 01.12.16✎ 00:47 | 
        Насколько я помню, нажатие ALT и вызов меню останавливают как обработку ожидания, так и вообще все обмены интерфейса, так как меню вызывает свой обработчик очереди событий, которые все ненужные ему события отправляет котику под хвостик.     | |||
| 84
    
        Garykom гуру 01.12.16✎ 00:56 | 
        Ну пора уже 77 на заслуженный отдых.     | |||
| 85
    
        Torquader 01.12.16✎ 00:59 | 
        (84) В некоторых местах ещё клиппер работает, так что 7.7 ещё поживёт, пока есть кому конденсаторы на мамках перепаять.     | |||
| 86
    
        Garykom гуру 01.12.16✎ 01:04 | 
        (85) Мдя, сча уже кондеры не спасают.
 Вот где бы взять недорого мамки под 775 ? | |||
| 87
    
        Djelf 01.12.16✎ 01:06 | 
        (86) Фигня! arduino преспособим! ;)     | |||
| 88
    
        Garykom гуру 01.12.16✎ 01:13 | 
        (87) Смешно но иногда хочется купить им планшеты вместо компов... Только 1С77 на андроиде не очень, но тут МС подсуетился и выпустил на Win10 дешевые и даже с hdmi выходом.
 А переходник hdmi-vga стоит 200 рублей. | |||
| 89
    
        Garykom гуру 01.12.16✎ 01:14 | 
        (88)+ Но эта Windows 10 убивает настройкой конечно.     | |||
| 90
    
        Злопчинский 01.12.16✎ 01:16 | 
        Обработка ожидания - зло     | |||
| 91
    
        Garykom гуру 01.12.16✎ 01:17 | 
        Зло это из учетной системы хрен знает что делать. Когда давно есть JS в браузере.     | |||
| 92
    
        Djelf 01.12.16✎ 01:19 | 
        (91) +100     | |||
| 93
    
        Злопчинский 01.12.16✎ 01:31 | 
        Зачем постоянно допрашивать вес? Не проще ли дождаться сигнала о поступлении веса?     | |||
| 94
    
        Это_mike 01.12.16✎ 07:11 | 
        (78) формексовских обработок ожидания, емнип, может быть много - каждая управляется отдельно     | |||
| 95
    
        DrZombi гуру 01.12.16✎ 07:25 | 
        Зачем вообще в 7.7 многопоточность? :)     | |||
| 96
    
        Это_mike 01.12.16✎ 07:32 | 
        (95) Щоб булО!®     | |||
| 97
    
        ADirks 01.12.16✎ 07:44 | 
        (94) я вот тоже так думал...  оказалось - нет     | |||
| 98
    
        NorthWind 01.12.16✎ 08:04 | 
        (89) а чем там настройка особенно отличается от Windows 7, к примеру?     | |||
| 99
    
        NorthWind 01.12.16✎ 08:06 | 
        (93) ну во-первых, можно хотеть полную копию дисплея весов на компе. Чтобы было видно как он меняется. Во-вторых, многие весы не имеют такого функционала как отдача окончательного веса, они просто возвращают содержимое своего дисплея по запросу и в этом содержимом есть признак стабильности веса - нестабилен или стабилен.     | |||
| 100
    
        Mankubus 01.12.16✎ 08:21 | 
        100     | |||
| 101
    
        bigdenis22 01.12.16✎ 11:11 | 
        (93) (99) У нас сейчас устанавливаются весы, которые, если будут сами выдавать вес, без запроса, то его считывать будет очень гиморно... передают слово в 14 бит, первый раз вес в первой половине, второй - во второй... и так через раз...
 а если по запросу - то все ок, всё постоянно... менять весы не предлагать, только эти весы живут нормально в наших условиях агресивных сред (высшая IP защита) за вменяемые деньги. НО , в ближашем будущем, появится необходимость получать показания с других датчиков по запросу и выводить их на форму. Еще раз повторюсь, необходимо, что-бы на форме (на экране) у оператора отображались оперативные данные с датчиков, чтоб он видел, какие данные запишутся при нажатии кнопки. | |||
| 102
    
        bigdenis22 01.12.16✎ 11:17 | 
        (76) спасибо, идея понятна, буду думать как можно у себя это прикрутить...
 просто у меня уже есть 5 типов датчиков(весов)и ещё будет добавлятся, работа с которыми описана в глобальной функции ПолучитьВес(), кусочек которой я приводил выше. | |||
| 103
    
        Garykom гуру 01.12.16✎ 11:18 | 
        (98) В Win7 переход после WinXP был простой, вот те "панель управления" где все в одном виде и понятно.
 В Win10 тупейшая смесь нового и старого, как и в Win8 только чуть чуть получше. Например скажите как отключить запрос пароля при загрузке (автологон сделать)? Да по прежнему работает "control userpasswords2" но на планшетах клавы то немае хардварной обычно... | |||
| 104
    
        Garykom гуру 01.12.16✎ 11:19 | 
        (103)+ "клавы немае" это к вопросу вызова шортката Win+R     | |||
| 105
    
        Garykom гуру 01.12.16✎ 11:20 | 
        (102) Рефакторинг наше все, когда пишешь нечто большое то иногда 2-3 раза переписывать приходится. Потому что "первый блин комом" это классика жанра.     | |||
| 106
    
        NorthWind 01.12.16✎ 11:38 | 
        (103) Например скажите как отключить запрос пароля при загрузке (автологон сделать)? 
 Первая же ссылка при поиске - https://lifehacker.ru/2015/02/18/avtomaticheskij-vhod-windows-10-tp/ | |||
| 107
    
        Garykom гуру 01.12.16✎ 11:41 | 
        (106) "Сделайте правый клик на кнопке «Пуск» в левом нижнем углу экрана."
 Как??? Как сделать "правый клик" без мышки на сенсорном экране? | |||
| 108
    
        Garykom гуру 01.12.16✎ 11:42 | 
        (107) и да я в курсе что "долгий тап", но в инструкции по "первой ссылке" об этом ни слова!     | |||
| 109
    
        Кирпич 01.12.16✎ 11:42 | 
        (102) вот наваял такой вариант
 в отдельном потоке опрашивает весы, показывает вес в отдельном окне. по требованию возвращает текущий вес. этот шкилет можно доработать до полной красоты с датчиками и прочими блэкджеками. http://i85.fastpic.ru/big/2016/1201/32/9e6d3a1810a32665671fdf14c8425432.png | |||
| 110
    
        NorthWind 01.12.16✎ 11:43 | 
        А подцепить bluetooth, к примеру, клаву не вариант? У меня даже к айпэду получалось ее цеплять, винда-то уж точно понимает     | |||
| 111
    
        NorthWind 01.12.16✎ 11:44 | 
        (110) к (107), (108)     | |||
| 112
    
        Garykom гуру 01.12.16✎ 11:44 | 
        (110) Ха девайсы на Win10 это "обычные компы" и большинство имеют usb-host так что переходник и обычная клава/мышка не проблема.
 Суть то не в этом а в тупизне разрабов M$ | |||
| 113
    
        Garykom гуру 01.12.16✎ 11:46 | 
        (109) Думаешь ТС или его работодатели готовы платить? Были бы готовы уже давно наняли спеца.     | |||
| 114
    
        NorthWind 01.12.16✎ 11:47 | 
        (112) Вам просто нужно разобраться со вводом на устройстве, потому что ввод нестандартный, не такой как на десктопе. Разрабы тут ни при чем.     | |||
| 115
    
        Кирпич 01.12.16✎ 11:48 | 
        (113) думаю нет. я чисто по доброте душевной. решил попрограммировать немножко.     | |||
| 116
    
        Garykom гуру 01.12.16✎ 11:48 | 
        (114) Эээ а нафуя было засовывать десктопную ось на планшету?     | |||
| 117
    
        Garykom гуру 01.12.16✎ 11:49 | 
        (116)+ Причем в тоже самое время страдая непонятно чем и засовывая планшетный интерфейс в десктопную ось.
 Эти вот плитки в Win8 были таким извратом на компах/ноутах без тача )) | |||
| 118
    
        Garykom гуру 01.12.16✎ 11:50 | 
        (117)+ *принудительно засовывая     | |||
| 119
    
        NorthWind 01.12.16✎ 11:50 | 
        (116) потому что на это есть спрос. И пользоваться этим при желании можно, надо только включить голову в процесс.     | |||
| 120
    
        Garykom гуру 01.12.16✎ 11:54 | 
        (119) Да пользоваться можно, но включать голову это доп.затраты на которые можно пойти только при необходимости и(или) отсутствии вариантов.
 А еще нуна с собой эту голову не забыть, что и подсказыает статистика продаж планшетов на андроид и на виндовс. | |||
| 121
    
        Garykom гуру 01.12.16✎ 11:55 | 
        (120)+ В смысле планшеты на win это замечательная штука но для специфического применения с использованием специалистов.     | |||
| 122
    
        NorthWind 01.12.16✎ 11:56 | 
        (120) не хотите забивать голову - не надо! Есть леново йога и сурфейс про. Там клава в комплекте и все прекрасно и легко. Несите ваши денежки.     | |||
| 123
    
        Кирпич 01.12.16✎ 11:57 | 
        пацаны вам сюда http://4pda.ru/     | |||
| 124
    
        NorthWind 01.12.16✎ 11:58 | 
        Ну да, оффтоп. Закругляюсь, тем более что это спор о фломастерах     | |||
| 125
    
        Garykom гуру 01.12.16✎ 12:09 | 
        (123) Туда я только по делу, там флудить плохо получается, аудитория отмороженная ))     | |||
| 126
    
        Garykom гуру 01.12.16✎ 12:10 | 
        (123) Кста это пример когда форум стал основным в отличие от исходной странички, как и миста.     | |||
| 127
    
        bigdenis22 01.12.16✎ 12:27 | 
        (113) (115) ну как бы зря... готовы и заплатить. в разумных пределах :)     | |||
| 128
    
        Кирпич 01.12.16✎ 12:29 | 
        (127) так платите быстрее пока художник в запой не ушел     | |||
| 129
    
        Garykom гуру 01.12.16✎ 12:31 | 
        (128) +1
 вариант с правильной ВК наилучший | |||
| 130
    
        bigdenis22 01.12.16✎ 12:55 | 
        (109) Интересная особенность новой версии:
 запускаю на терминале, порты пробрасываются в сессию, при запуске тест.ерт отваливается порт... F:\Documents and Settings\denis>change port AUX = \DosDevices\COM1 COM1 = \Device\RdpDrPort\;COM1:133\tsclient\COM1 COM2 = \Device\Serial1 COM7 = \Device\RdpDrPort\;COM7:133\tsclient\COM7 LPT1 = \Device\RdpDrPort\;LPT1:133\tsclient\LPT1 PRN = \DosDevices\LPT1 F:\Documents and Settings\denis>change port AUX = \DosDevices\COM1 COM1 = \Device\RdpDrPort\;COM1:133\tsclient\COM1 LPT1 = \Device\RdpDrPort\;LPT1:133\tsclient\LPT1 PRN = \DosDevices\LPT1 весы на ком7 (в обработке поправил) до этого было все норм. | |||
| 131
    
        Кирпич 01.12.16✎ 13:01 | 
        (130) хрен знает. я в терминале не пробовал.     | |||
| 132
    
        Кирпич 01.12.16✎ 13:05 | 
        в инете надо поглядеть
 http://forum.oszone.net/post-2019225.html | |||
| 133
    
        Кирпич 01.12.16✎ 13:12 | 
        отправил другой вариант. может заработает     | |||
| 134
    
        bigdenis22 01.12.16✎ 16:41 | 
        (133) результаты наблюдений:
 Ком7 это действительно подключение через ЮСБ переходник, и порт отваливается (только на последних двух версиях ВК). переключил на КОМ1 в мамке, - он не отваливается, но и никаких данных по КОМ порту не ходит, смотрю "Serial Port Monitor" ... что локально, что на терминале commScales commError Параметр задан неверно при этом, включаю старый вариант (на MSCOMM) работает на ура. | |||
| 135
    
        Кирпич 01.12.16✎ 16:45 | 
        (134) покаж код     | |||
| 136
    
        Кирпич 01.12.16✎ 16:45 | 
        у меня всё работает     | |||
| 137
    
        bigdenis22 01.12.16✎ 17:25 | 
        (76) спасибо за идею. переписал получение данных вот так:
 ИначеЕсли РабочееМесто.ТипТО=Перечисление.ТипыВесов.SMART Тогда //SMART Если Весы.PortOpen <> 0 Тогда Если ЖдемПоказаний=1 Тогда Если Весы.InBufferCount < 13 Тогда //Возврат; Иначе Буфер= СокрЛП(Весы.Input); пВес = Сред(Буфер,2,8); глВес=Число(пВес); ЖдемПоказаний=0; КонецЕсли; КонецЕсли; Весы.Settings = "19200,N,8,1"; Весы.Output = Симв(080)+Симв(013); // команда P + возврат каретки ЖдемПоказаний=1; пВес = глВес; // Сообщить("прием+++"+Строка(Буфер)+"\\(("+Сред(Буфер,2,8)+"))//"); КонецЕсли; ИначеЕсли РабочееМесто.ТипТО=Перечисление.ТипыВесов.CAS_Ci2001A Тогда // CAS_Ci2001A функция вызывается каждую секунду, у меня фризов не наблюдается. завтра проверим на боевом рабочем месте. (135) я в твоей конфиге и обработке пробовал (после того как в моей перестало показывать), только КОМ менял на 7 и на 1. | |||
| 138
    
        Кирпич 01.12.16✎ 17:30 | 
        (137) а 19200 нарисовал тоже? там вроде 9600 было.
 странно, что не работает. у меня как часы. | |||
| 139
    
        Кирпич 01.12.16✎ 17:32 | 
        строка должна быть "19200,8,N,1"
 может ты строку "19200,N,8,1" там поставил? | |||
| 140
    
        Кирпич 01.12.16✎ 17:33 | 
        скорее всего :)     | |||
| 141
    
        bigdenis22 01.12.16✎ 18:06 | 
        ВК.Старт("COM1","9600,8,N,1",10000,500,Симв(080)+Симв(013),"",1);
 кстати да, только счас обратил внимание - в предыдущей версии не было параметров порта... может из-за скорости и сложился конфуз... счас проверю. | |||
| 142
    
        bigdenis22 01.12.16✎ 19:25 | 
        + (141) поменял скорость на 19200, - то же самое 
 commScales commError Параметр задан неверно | |||
| 143
    
        Кирпич 01.12.16✎ 19:30 | 
        Я думал ты 8 и N перепутал. По идее такая ошибка при конфиге порта должна вылететь. Завтра найду сканер, попробую. На виртуальных портах все работает. Даже через RDP.     | |||
| 144
    
        Serginio1 01.12.16✎ 20:18 | ||||
| 145
    
        Кирпич 01.12.16✎ 20:45 | 
        +(143) можно еще 0 вместо 1 поставить в параметрах. 0 у меня значит 1 бит четности.     | |||
| 146
    
        Кирпич 01.12.16✎ 20:47 | 
        (144) я уж думал не придешь     | |||
| 147
    
        trdm 01.12.16✎ 20:59 | 
        (137) > функция вызывается каждую секунду, у меня фризов не наблюдается. завтра проверим на боевом рабочем месте. 
 Нафиг такой опрос на операторском месте??? | |||
| 148
    
        Кирпич 01.12.16✎ 21:22 | 
        Тьфу блин. Не четности, а стоп бит. Короче "19200,8,N,0"     | |||
| 149
    
        Serginio1 01.12.16✎ 21:37 | 
        (146) Я думал ты сам посоветуешь
 Использование классов .Net в 1С для новичков | |||
| 150
    
        Кирпич 01.12.16✎ 22:57 | 
        Проверил на нульмодемном кабеле. И точно! Если 1, то выдает ошибку. Короче 19200,8,N,0 и будет работать.     | |||
| 151
    
        bigdenis22 02.12.16✎ 10:35 | 
        (147) что-бы на форме "оперативно отображались изменения показаний... допустимо раз в 2 секунды, раз в 3 секунды ещё можно, но уже менее комфортно. большая скважность - негодится.
 (150) сейчас буду посмотреть. | |||
| 152
    
        bigdenis22 02.12.16✎ 12:11 | 
        (150) локально заработало, но с разрядностью что-то не так:
 000006 это 64, 68 кг. может в 1 с возвращать целиком буффер? а там вычленять? | |||
| 153
    
        losky_9 02.12.16✎ 12:18 | ||||
| 154
    
        bigdenis22 02.12.16✎ 12:38 | 
        + (152) и в окошке и в сообщении перед " 000006" идет непечатный символ типа буквы "г" в обратную сторону... наверно разделитель какой то.
 кстати, обратил внимание, ты считываеш 8 бит из порта : [02/12/2016 11:33:21] Written data 50 0d P. [02/12/2016 11:33:21] Read data 02 20 30 30 30 30 30 35 . 000005 [02/12/2016 11:33:21] - Close port COM1 а я 13 [02/12/2016 11:35:56] Read data 02 20 30 30 30 30 30 32 33 4b 47 4d 0d . 0000023KGM. [02/12/2016 11:35:56] Written data 50 0d P. [02/12/2016 11:35:57] Read data 02 20 30 30 30 30 30 32 31 4b 47 20 0d . 0000021KG . | |||
| 155
    
        Salimbek 02.12.16✎ 12:45 | 
        (154) Вероятно, что подразумевалось "ты считываешь 8 байт"     | |||
| 156
    
        Salimbek 02.12.16✎ 12:46 | 
        Но правильнее - до символа-терминатора считывать, 0d вроде...     | |||
| 157
    
        Кирпич 02.12.16✎ 12:49 | 
        (154) ну там просто стоит считывать всё подряд. нужно до терминатора считывать или чего там весы передают.     | |||
| 158
    
        Кирпич 02.12.16✎ 12:55 | 
        отправил новую версию. последний параметр - терминатор     | |||
| 159
    
        Кирпич 02.12.16✎ 12:56 | 
        типа так теперь запускать
 ВК.Старт("COM3","19200,8,N,0",10000,500,Симв(080)+Симв(013),"",1,Симв(013)); | |||
| 160
    
        Кирпич 02.12.16✎ 13:06 | 
        потом сделаю чтобы можно было в поток код JS передавать и пускай читает пишет что угодно. типа очень универсально.     | |||
| 161
    
        Salimbek 02.12.16✎ 13:07 | 
        (160) И эти люди запрещают мне писать на Ruby ! :-)     | |||
| 162
    
        Кирпич 02.12.16✎ 13:08 | 
        (161) да пиши, пиши.     | |||
| 163
    
        Кирпич 02.12.16✎ 13:11 | 
        (161) ну и у меня будет всё в одной dll. JS будет встроенный. Или интерпретатор СИ встроенный. Или оба два.     | |||
| 164
    
        Кирпич 02.12.16✎ 13:13 | 
        А потом моя ВК станет международной шахматной столицей.     | |||
| 165
    
        Torquader 02.12.16✎ 13:15 | 
        Чем вам ещё и JS упёрся - видимо - проблемы со сборкой мусора и залочкой объектов из-за этого вам просто не знакомы ?     | |||
| 166
    
        Кирпич 02.12.16✎ 13:22 | 
        (165) Да какая нафиг сборка мусора. Просто примитивные скрипты писать. Типа прочитал из порта, чего нибудь сделал и в 1с отправил.
 Просто весы такая фигня, что универсально, без программирования ничего не получится. Какие нибудь весы, например, могут вес в формате BCD каком нибудь передавать. И чего с ними делать тогда? А так в скрипте все преобразования сделал и вернул в 1с красивое значение. | |||
| 167
    
        Кирпич 02.12.16✎ 13:23 | 
        я ж не собираюсь NodeJS туда запихивать. Хотя пригодилось бы кому нибудь :)     | |||
| 168
    
        Torquader 02.12.16✎ 13:30 | 
        (166) Был такой язык Pascal Script, он как-то попонятнее выглядел.
 А если Microsoft Script Control прикручивать, то там VbScript есть - язык, в котором в функции и процедуры все параметры по ссылке передаются, и он быстрее JavaScript, реализованного в том же Microsoft Script Control. | |||
| 169
    
        Кирпич 02.12.16✎ 13:33 | 
        (168) ну вот что-то из этого можно взять. или сразу треш в виде tcc     | |||
| 170
    
        uno-group 02.12.16✎ 13:53 | 
        vk_rs232 вполне нормально работает. неправильно построен алгоритм работы с весами. Сейчас тоже бьюсь с весами. Ушел нафик от всех шатных мозгов. тензодатчики + Своя платка с ардулино и далее хоть в сеть хоть в ком порт, хоть в вайфай, хоть блюпуп. 20-30 баксов за электронику и весы выдают данные как мне нужно.     | |||
| 171
    
        Serginio1 02.12.16✎ 15:11 | 
        (152) Там по ссылке в 144 есть отчет правда на 8 ке есть отчет TestSerialPort
 Внутри данные получаются Процедура DataReceived(Данные) sp1 = Данные.sender; ШтрихКод = sp1.ReadExisting(); Компорт = sp1.PortName; Сообщить(СтрШаблон("ШК=%1 Порт=%2",ШтрихКод,Компорт)); КонецПроцедуры Можешь читать как массив байт bytes = sp1 .BytesToRead; buffer = Врап.СоздатьМассив("System.Byte",bytes); sp1 .Read(buffer, 0, bytes); Ну и обрабатывай массив байт как тебе хочется | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |