Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Подлючение автовесов к 1С 2 страниц V   1 2 >          
kosalex Подменю пользователя
сообщение 10.06.14, 11:46
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Добрый день. Есть весы которые подключаются к COM - порту, нужно, делать взвешивание и запись результата в 1С.

Использую com объект "MsCommLib.MsComm"

При нажатии на кнопку "Взвесить" выполняется код:
ComPort = Новый COMОбъект("MsCommLib.MsComm");
    
    ComPort.CommPort        = 1;
    ComPort.Settings        = "9600,N,8,1";
    ComPort.Handshaking     = 0;
    ComPort.InBufferCount   = 0;
    ComPort.InBufferSize    = 70;
    ComPort.InputLen        = 0;
    ComPort.InputMode       = 1;
    ComPort.NullDiscard     = 0;
        ComPort.PortOpen = Истина;
        ПринятыеДанные = ComPort.Input;



Вопрос:
Чтобы протестить код, сделал файл test.bat с содержимым:
mode com1 baud=9600 parity=n data=8 stop=1
type test.txt >com1


Ничего не получает "ПринятыеДанные" (см. код выше). Что делать, куда смотреть?


 ! 

Правила, п.3
 


Сообщение отредактировал logist - 10.06.14, 11:59

logist Подменю пользователя
сообщение 10.06.14, 12:04
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(kosalex @ 10.06.14, 11:46) *
Что делать, куда смотреть?

А почему он должен получать что-то? Если есть возвращаемые данные, то должен быть какой-то метод который их вернет. Т.е. ПринятыеДанные = ComPort.Input(); Либо ComPort.ЧеготоВыполнить(); ПринятыеДанные = ComPort.Input;
+ может быть порт занят другим приложением.
p.s. маловато исходной/отладочной информации


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kosalex Подменю пользователя
сообщение 10.06.14, 12:11
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(logist @ 10.06.14, 13:04) *
А почему он должен получать что-то? Если есть возвращаемые данные, то должен быть какой-то метод который их вернет. Т.е. ПринятыеДанные = ComPort.Input(); Либо ComPort.ЧеготоВыполнить(); ПринятыеДанные = ComPort.Input;
+ может быть порт занят другим приложением.
p.s. маловато исходной/отладочной информации


Процедура КнопкаВыполнитьНажатие(Кнопка)
    ComPort = Новый COMОбъект("MsCommLib.MsComm");
    
    ComPort.CommPort        = 1;
    ComPort.Settings        = "9600,N,8,1";
    ComPort.Handshaking     = 0;
    ComPort.InBufferCount   = 0;
    ComPort.InBufferSize    = 70;
    ComPort.InputLen        = 0;
    ComPort.InputMode       = 1;
    ComPort.NullDiscard     = 0;
    
    ComPort.PortOpen = Истина;
    
    ComPort.OutPut = "1";
    
    Если ComPort.PortOpen Тогда
    ПринятыеДанные = ComPort.Input;
    КонецЕсли;
    
    ComPort.PortOpen = Ложь;
    
    ЭлементыФормы.Надпись1.Значение = "";
    ЭлементыФормы.Надпись1.Значение = ПринятыеДанные;

КонецПроцедуры


При таком коде, в "ПринятыеДанные" должно же что то передаться от весов?

logist Подменю пользователя
сообщение 10.06.14, 13:21
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(kosalex @ 10.06.14, 12:11) *
ComPort.CommPort        = 1;

А весы подключены к СОМ1?

Вы отладчиком прошлись, в ComPort вообще что-то есть?
Если ComPort.PortOpen Тогда

сюда заходит?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Ardi Подменю пользователя
сообщение 10.06.14, 13:52
Сообщение #5

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Может надо через "Обработка ожидания" ловить сигнал с ком порта?


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

logist Подменю пользователя
сообщение 10.06.14, 13:57
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Ardi @ 10.06.14, 13:52) *
Может надо через "Обработка ожидания" ловить сигнал с ком порта?

Нет, этот комобъект сам открывает порт и читает.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 10.06.14, 15:50
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

А что такое 1 в
ComPort.OutPut = "1";

?

DartRomanius Подменю пользователя
сообщение 10.06.14, 15:58
Сообщение #8

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(Vofka @ 10.06.14, 16:50) *
А что такое 1 в
ComPort.OutPut = "1";

?


Есть подозрение что это команда весам типа "дай данные". smile.gif
И маленькое подозрение что должна быть циферка а не символ.

Сообщение отредактировал DartRomanius - 10.06.14, 15:59


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

Vofka Подменю пользователя
сообщение 10.06.14, 16:11
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(DartRomanius @ 10.06.14, 16:58) *
Есть подозрение что это команда весам типа "дай данные".

Я к чему спрашиваю. "1" - это точно ли "дай данные"? Может автор откуда-то скопипастил шото не то... Интересно откуда он взял именно "1".

Сообщение отредактировал Vofka - 10.06.14, 16:12

logist Подменю пользователя
сообщение 10.06.14, 16:24
Сообщение #10

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

ComPort.OutPut - отправить данные в буфер
ComPort.InPut - получить данные из буфера
[необходимо зарегистрироваться для просмотра ссылки]


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 10.06.14, 16:26
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

logist, а это вы к чему?

logist Подменю пользователя
сообщение 10.06.14, 17:24
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Vofka @ 10.06.14, 16:26) *
а это вы к чему?

К этой теме. Если Вы про буфер, в данном случае без разницы как обзывать объект работы с данными.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 10.06.14, 18:10
Сообщение #13

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(logist @ 10.06.14, 18:24) *
Если Вы про буфер, в данном случае без разницы как обзывать объект работы с данными.

Я про то почему именно "1"? Не 1, не "3", не "Вася", а именно "1".

sava1 Подменю пользователя
сообщение 10.06.14, 19:39
Сообщение #14

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Весовой процессор какой (чей) ?

kosalex Подменю пользователя
сообщение 11.06.14, 7:55
Сообщение #15

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Данные с весов попадают в перем "Данные".

Процедура КнопкаВыполнитьНажатие(Кнопка)
    ComPort = Новый COMОбъект("MsCommLib.MsComm");
    
    ComPort.CommPort        = 1;
    ComPort.Settings        = "9600,N,8,1";
    ComPort.Handshaking     = 0;
    ComPort.InBufferCount   = 0;
    ComPort.InBufferSize    = 70;
    ComPort.InputLen        = 0;
    ComPort.InputMode       = 1;
    ComPort.NullDiscard     = 0;
    
    ComPort.PortOpen = Истина;
    
    ComPort.Output = "1";
    
    Данные = ComPort.Input;
    
    ComPort.PortOpen = Ложь;
    
КонецПроцедуры



Посылает в порт единицу, чтобы весы выдали вес.
ComPort.Output = "1";


Вопрос, как эти данные преобразовать в десятичную систему вычисления?

Vofka Подменю пользователя
сообщение 11.06.14, 8:33
Сообщение #16

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

kosalex, так уже заработало? В чем же была ошибка?

kosalex Подменю пользователя
сообщение 11.06.14, 8:37
Сообщение #17

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(Vofka @ 11.06.14, 9:33) *
kosalex, так уже заработало? В чем же была ошибка?



Ошибки как таковой не было, просто не посылал эту еденицу
 ComPort.Output = "1";
. Теперь бы преобразовать полученный COMSafeArray в десятичные числа =)

Petre Подменю пользователя
сообщение 11.06.14, 8:50
Сообщение #18

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Цитата(kosalex @ 11.06.14, 9:37) *
Теперь бы преобразовать полученный COMSafeArray в десятичные числа =)

Какой в этом смысл?


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

DartRomanius Подменю пользователя
сообщение 11.06.14, 8:54
Сообщение #19

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(kosalex @ 11.06.14, 9:37) *
Ошибки как таковой не было, просто не посылал эту еденицу
 ComPort.Output = "1";
. Теперь бы преобразовать полученный COMSafeArray в десятичные числа =)


Число(....)? smile.gif


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

kosalex Подменю пользователя
сообщение 11.06.14, 8:59
Сообщение #20

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(Petre @ 11.06.14, 9:50) *
Какой в этом смысл?



вы предлогаете записывать в БД 1С данные полученные с COM порта напрямую? Преобразовывать их в десятичную систему не надо?

Цитата(DartRomanius @ 11.06.14, 9:54) *
Число(....)? smile.gif


Я думаю, это не подойдет, так как данные это строка состоящая из грубо говоря: 64 00 00 00 00 00 00 00 48

Приходит ComSafeArray и элементы этого массива 64 00 00 00 00 00 00 00 48

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Тема закрыта Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 17:56
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!