LINUX.ORG.RU
ФорумAdmin

rdesktop + COM port + 1с

 , ,


0

2

Доброго времени дня. Возникла такая проблема: c ubuntu (14.04, не думаю, что это как-то влияет) через rdesktop на win2k8 передается COM порт (/dev/ttyUSB0) как COM3, под виндой в putty все работает замечательно, но если открыть 1с и в номенклатуре считать штрих-код очень долго думает и курсор встает в нужную позицию. Т.е. если локально сделать так:

$ sudo cat /dev/ttyUSB0 
0000013605
0000013605
0000013605
0000013605
0000013605
..

Без проблем. На удаленной машине через puttу - все отлично. Но в 1С все плохо. И вот главное: если после считывания двинуть мышку или выбрать какую либо позицию из номенклатуры, то моментально отрабатывает считанный код и курсор встает куда надо. Пользователи виндов подобных проблем не имеют. Если честно, получается, что проблема в 1с, но я совершенно не могу понять как так. Может кто-то сталкивался с подобным поведением???

PS пробовал xfreerdp. Но у него проблемы с Enter при считывании кода. Т.е. он корректно не передает перевод корретки.


Если доступен отладчик 1С, то поставь бряк на функцию обработки ШК или обработчик внешнего события, и смотри, что там происходит. Можно ещё поэкспериментировать с настройками ТО.

Gotf
()
Ответ на: комментарий от Gotf

Да, забыл сказать. 1с'ники сказали что там ничего не происходит, до того момента пока чего либо не сделать (писал выше). Именно потому, я и не понимаю как это возможно. Что за настройки ТО? Если вот про эти, да тут и нет ничего. Как у всех.

modjo
() автор топика
Ответ на: комментарий от modjo

Тогда, я думаю, нужно копать в направлении драйвера сканера. Скорее всего он как-то неправильно работает в твоей ситуации.

Gotf
()

сканер настроен в разрыв клавиатуры? если да, то попробуйте в блокноте считать штрих-код. если нет, то попробуйте перевести в этот режим.

bvn13
()
Ответ на: комментарий от bvn13

Нет, он подключен через переходник COM->USB. Я не могу перевести его в режим простого набора текста, так как тогда в 1с не будет срабатывать внешнее событие.

modjo
() автор топика

Я бы попробовал подготовить файл с 0000013605\r\n и катнул бы его.

xfreerdp. Но у него проблемы с Enter при считывании кода. Т.е. он корректно не передает перевод каретки

А может у него те же проблемы?

arturpub
()
Ответ на: комментарий от modjo

Можно с этой стороны запустить прогу, которая без драйвера, как есть, читает с порта, и сравнить, что летит по рдп, и что летит, когда сканер локально.

arturpub
()
Ответ на: комментарий от arturpub

0000013605\r\n - по этому можно подробней, не понял что мне нужно сделать. Как писал выше, при локальном тесте проблем нет. Если использовать rdesktop то в putty проблем нет, если использовать xfreerdp то он не переводит каретку (замечание заметил) правильно. Вот как это выглядит:

12345

    12345

        12345

            12345
...

Вот так это видно в putty.

modjo
() автор топика
Ответ на: комментарий от arturpub

Локально и удаленно (использую putty) проблем вообще нет. Все четко.

sudo cat /dev/ttyUSB0 
0000013605
0000013605
0000013605
0000013605
0000013605
...
modjo
() автор топика
Ответ на: комментарий от modjo

Пути, блокнот, прочая хренотень в курсе, что бывают разные конвенции перевода строк (\r\n, \r, \n) и могут прозрачно хавать/преобразовывать некоторые из них. Ты шлешь \n с юникса, а может драйвер ждет две «буквы» в конце ШК. Надо открыть порт нормальной прогой и посмотреть, чем отличается поток чистых байт в рабочем варианте от варианта с рдп.

arturpub
()
Ответ на: комментарий от arturpub

Под рабочим вариантом имеется ввиду локальное подключение и нормальная работа драйвера.

arturpub
()
Ответ на: комментарий от arturpub

Я пробовал менять на LF, результата нет (что на rdesktop, что на xfreerdp).

modjo
() автор топика

проверь работу сканера локально на 1С на win2k8, отпадет сразу половина ненужных вопросов.

anonymous2
()

На удаленной машине через puttу - все отлично. Но в 1С все плохо.

Сталкивался давно с этим правда в контексте wine. 1C пытается открывать порт как «железный» а не как блочное устройство, соответсвенно и не работает потомучто виртуальный порт умеет лишь передавать данные, это фактически пайп а не эмулятор порта. Для wine делали раньше патчи чтобы решить эту проблему, а вот для винды хз-хз.

TheMixa
()

http://unixforum.org/index.php?showtopic=76746&view=findpost&p=1230653 Лови эпичный костыль с эпичного треда.

В общем суть проблемы ясна. Запускаешь в терминальном сеансе часы с секундами так, чтобы секунды тикали в видимой части экрана - сканер перестает тупить и нормально считывает коды раз в секунду. Можно написать программку, которая перерисовывает свою иконку в трее раз в полсекунды например - будет получение штрихкодов раз в полсекунды и так далее. Жалко только, что винда не умеет штатными средствами отображать секунды на своих часах в трее.

А в putty небось курсор мигает - вот и отрабатывает.

strangeman
()
Последнее исправление: strangeman (всего исправлений: 1)

попробоуй не в 1с приземлять коды, а в wintaskgen, а из него уже в 1с грузить.
там, кста, и настройка cr/lf есть

handbrake
()
Ответ на: комментарий от strangeman

Вот это да. Столько времени, а проблемы все те же. Увидев это решение вспомнил, что ранее видел подобное, но тогда это было неактуально.

В win2k8 подобное решение уже не работает. Я открыл часики, на заднем плане 1с. Вообще ноль эмоций. Вообще не отрабатывает, даже если фокус передать обратно 1с. Надо заново сканировать и уже делать клик по любой записи, потому как дерганье мышкой не помогает...

modjo
() автор топика
Ответ на: комментарий от strangeman

В общем одно из решений это сделать в 1с для форм обработчик (в нашем случае обработчик невидим), например те же часики с секундами, и тогда все начинает работать как надо. В 1с я мало что понимаю, может криво объяснил. Думаю кодеры из это среды поймут лучше. Это, конечно, костыль еще тот. В нашем случае, скорее всего, придется таки ставить винду, потому как есть множество всплывающих форм или подобной лабуды и 1с'ники сами не знают что и где. В общем решение есть, но с 1с надо еще справиться.

modjo
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.