|
Работа с USB-портом | ☑ | ||
---|---|---|---|---|
0
PALESIA
06.04.13
✎
14:43
|
Добрый день всем!
Если кто-нить работал или встречался с инфой по USB - порту, который регится как виртуальный COM5 - скиньте плиз ссылочки сюда. Необходимо направлено отправлять инфу на него через определенные промежутки времени. Аппаратка висит на конвейере - параллельно через RS232 - идет обмен сигналами с датчиками и весами. Заранее благодарю. |
|||
1
dangerouscoder
06.04.13
✎
14:51
|
Для весов драйвер нужно писать.. ищи sdk
|
|||
2
vs1c
06.04.13
✎
15:10
|
Ну так и отправляйте в COM5. Что мешает?
|
|||
3
Voronve
06.04.13
✎
15:12
|
Точно на Ком5 ? а то есть на Ком2; но там система комнд и синтаксис принципиально разный
|
|||
4
vs1c
06.04.13
✎
15:12
|
Где-где синтаксис разный?
|
|||
5
Torquader
06.04.13
✎
15:13
|
Если у вас виртуальный COM-порт, то USB уже вообще не при чём. А для работы с COM-портом есть много компонент, ну и никто не отменял написание программы.
(3) Виртуальный COM-порт может быть любой - его номер в настройках драйвера можно поменять. |
|||
6
Voronve
06.04.13
✎
15:13
|
на ком 2 и ком 5
|
|||
7
vs1c
06.04.13
✎
15:13
|
(6) Вы о чем???
|
|||
8
oleg_km
06.04.13
✎
15:14
|
(1) Ну если не знаешь, зачем фантазировать? Если устройство является чистым USB-девайсом, то да, без драйвера не обойтись. Но если оно эмулирует COM-порт, значит драйвер уже есть и можно спокойно пользовать его в пользовательском режиме.
(0) Можно попробовать 1С-ный ScanOPOS, можно попробовать Misrosoft ActiveX |
|||
9
Voronve
06.04.13
✎
15:14
|
(7) А Вы ?
|
|||
10
vs1c
06.04.13
✎
15:15
|
"на ком 2 и ком 5"
Это вот о чем? |
|||
11
Voronve
06.04.13
✎
15:15
|
о синтаксисе, а что ?
|
|||
12
vs1c
06.04.13
✎
15:16
|
Хорошо... Можете привести пример?
|
|||
13
Web00001
06.04.13
✎
15:17
|
(11)тут просто все возбудились от фразы
>>но там система комнд и синтаксис принципиально разный в ожидании подробностей запаслись попкорном, а ты все тянешь, ну не томи же, жги уже давай :) давай (12)! |
|||
14
Voronve
06.04.13
✎
15:19
|
(12)
ConnectString;Port=Com2,AnnexA=True ... ConnectString;Port=Com5,AnnexВ=True ... (13) по запросу ;) |
|||
15
Torquader
06.04.13
✎
15:21
|
(13) На самом деле, драйвер может узнавать номер порта, через который он работает, и это позволяет использовать разные протоколы для разных номеров портов - НО ЗАЧЕМ ???
|
|||
16
vs1c
06.04.13
✎
15:22
|
(14) Титры пошли... А где кино?
|
|||
17
Voronve
06.04.13
✎
15:23
|
(16) чо ты как баба; то не так свистю, то не так крыльями машу. Лопай чо дают
|
|||
18
vs1c
06.04.13
✎
15:24
|
(17) А что ты свистнул-то тут в (14), махатель крыльями?
|
|||
19
Voronve
06.04.13
✎
15:26
|
Тапера не трогать! Играю как могу...
|
|||
20
oleg_km
06.04.13
✎
15:51
|
ТС только куда-то исчез. Само рассосалось похоже
|
|||
21
Torquader
06.04.13
✎
15:58
|
(20) Так поди он уже всё написал и забыл.
|
|||
22
PALESIA
06.04.13
✎
15:59
|
сори, ребят отлучился - на участок бегал
клюшка RS232 с COM3 и 4 работают уже давно - норм - но итальянцы новую приспособу прикрутили - принтер через прокладку USB - она его не видит, хотя сигналы передает ( |
|||
23
PALESIA
06.04.13
✎
16:01
|
Для наглядности из дока:
//************************************************************************************************** Процедура ОткрытиеПортов() ИмяПорта1 = "COM3"; Попытка КомПорт1 = Новый("AddIn.vk_rs232"); КомПорт1.ОткрытьПорт(ИмяПорта1); КомПорт1.КонецСтроки = Символ(13); //КомПорт1.ПерехватКлавиатуры(1); Сообщить("Был открыт порт: " + ИмяПорта1); Исключение Сообщить("Не был открыт порт: " + ИмяПорта1); КонецПопытки; ИмяПорта2 = "COM4"; Попытка КомПорт2 = Новый("AddIn.vk_rs232"); КомПорт2.ОткрытьПорт(ИмяПорта2); КомПорт2.КонецСтроки = Символ(13); //КомПорт2.ПерехватКлавиатуры(1); Сообщить("Был открыт порт: " + ИмяПорта2); Исключение Сообщить("Не был открыт порт: " + ИмяПорта2); КонецПопытки; ИмяПорта3 = "COM5"; Попытка КомПорт3 = Новый("AddIn.vk_rs232"); КомПорт3.ОткрытьПорт(ИмяПорта2); КомПорт3.КонецСтроки = Символ(13); //КомПорт2.ПерехватКлавиатуры(1); Сообщить("Был открыт порт: " + ИмяПорта3); Исключение Сообщить("Не был открыт порт: " + ИмяПорта3); КонецПопытки; Сообщить("-"); КонецПроцедуры // ОткрытиеПортов() //************************************************************************************************** Функция ОбрСтроки(перСтрока) Результат = СокрЛП(перСтрока); Результат = СтрЗаменить(Результат,",","."); Результат = СтрЗаменить(Результат,"я","Я"); Возврат Результат; КонецФункции // ОбрСтроки(перСтрока) //************************************************************************************************** Функция СтрокаПараметров(перНомерУпаковки,перМассаБрутто,перМассаТары,перМассаКонусов,перМассаНетто,перМассаКондиции) Результат = ОбрСтроки(перНомерУпаковки) + "," // Номер упаковочного места + ОбрСтроки(Наименование1) + " " + ОбрСтроки(Наименование2) + "," // Наименование пряжи + ОбрСтроки(ТексПряжи.Сокращение) + "," // Текс пряжи + "," // Пропущенное значение + ОбрСтроки(НоменПряжи.Код) + "," // Артикул пряжи + ОбрСтроки(СоставПряжи.Наименование) + "," // Состав пряжи + Лев(СортПряжи,1) + "," // Сорт пряжи + ОбрСтроки(ЦветПряжи.Наименование) + "," // Цвет пряжи + ОбрСтроки(УстойОкраски.Сокращение) + "," // Группа устойчивости окраски + ОбрСтроки(КолтвоЕдиниц) + "," // Количество единиц продукции + ОбрСтроки(ПартияПряжи.Наименование) + "," // Номер партии пряжи + ОбрСтроки(Формат(ВлажностьНорма,ФорматВлажности)) + "," // Нормированная влажность + ОбрСтроки(Формат(ВлажностьФакт,ФорматВлажности)) + "," // Фактическая влажность + ОбрСтроки(Формат(перМассаБрутто,ФорматМасс)) + "," // Масса брутто + ОбрСтроки(Формат(перМассаТары,ФорматМасс)) + "," // Масса тары + ОбрСтроки(Формат(перМассаКонусов,ФорматМасс)) + "," // Масса конусов + ОбрСтроки(Формат(перМассаНетто,ФорматМасс)) + "," // Масса нетто + ОбрСтроки(Формат(перМассаКондиции,ФорматМасс)) + "," // Кондиционная масса + ОбрСтроки(Формат(Дата,"ДФ=dd.MM.yyyy")) + "," // Дата упаковывания + ОбрСтроки(ИспытаниеПряжи.ВидПаковки.Сокращение) + "," // Вид единицы продукции + ОбрСтроки(Упаковщик.ТабНомер) + "," // Таб.номер упаковщика + "№ " + СокрЛП(ИспытаниеПряжи.Номер) + "," // Номер паспорта качества + "от " + Формат(ИспытаниеПряжи.Дата,"ДФ=dd.MM.yyyy") + "," // Дата паспорта качества + ОбрСтроки(Норматив1) + "," // Норматив (стандарт) № 1 + ОбрСтроки(Норматив2) + "," // Норматив (стандарт) № 2 + "24" + Формат(перНомерУпаковки,"ЧЦ=10; ЧДЦ=0; ЧВН=; ЧГ=0") + "," // Штрихкод (12 символов) + СокрЛП(Техусловие.ВидЭтикетки) + "," // Код вида этикетки (в принтере) + ОбрСтроки(Примечание) + "," // Примечание + ","; // Дополнительная строка Возврат Результат; КонецФункции // СтрокаПараметров() //************************************************************************************************** Процедура ЗакрытиеПортов() Сообщить("-"); Попытка КомПорт1.ЗакрытьПорт(); Сообщить("Был закрыт порт: " + ИмяПорта1); Исключение Сообщить("Не был закрыт порт: " + ИмяПорта1); КонецПопытки; Попытка КомПорт2.ЗакрытьПорт(); Сообщить("Был закрыт порт: " + ИмяПорта2); Исключение Сообщить("Не был закрыт порт: " + ИмяПорта2); КонецПопытки; Попытка КомПорт3.ЗакрытьПорт(); Сообщить("Был закрыт порт: " + ИмяПорта3); Исключение Сообщить("Не был закрыт порт: " + ИмяПорта3); КонецПопытки; КонецПроцедуры // Процедура ЗакрытиеПортов() //************************************************************************************************** Процедура МенюУпаковокЗапустить(Кнопка) ОчиститьСообщения(); ОткрытиеПортов(); Заползло = Ложь; Напечатано = Ложь; Режим = РежимДиалогаВопрос.ОК; Текст = "ПРЕРВАТЬ ВЫПОЛНЕНИЕ ОПЕРАЦИИ ?"; Пока Вопрос(Текст, Режим, 4,,"ИДЕТ ПРОЦЕСС !!!") = КодВозвратаДиалога.Таймаут Цикл ПерЗначение = Символ(2) + "1,1,Строка данных 1,Строка данных 2,Строка данных 3,Строка данных 4,Строка данных 5,Строка данных 6" + Символ(3); КомПорт3.ЗаписатьСтроку(ПерЗначение); Сообщить("Передано на " + ИмяПорта3 + ": " + ПерЗначение); ПерЗначение = Символ(2) + Символ(5) + Символ(3); КомПорт2.ЗаписатьСтроку(ПерЗначение); Сообщить("Передано на " + ИмяПорта2 + ": " + ПерЗначение); Если Заползло Тогда ПерЗначение = Символ(27) + Символ(5) + Символ(13); КомПорт1.ЗаписатьСтроку(ПерЗначение); Сообщить("Передано на " + ИмяПорта1 + ": " + ПерЗначение); КонецЕсли; КонецЦикла; ЗакрытиеПортов(); КонецПроцедуры // МенюУпаковокЗапустить(Кнопка) //************************************************************************************************** Процедура ВнешнееСобытие(Источник, Событие, Данные) ПолЗначение = СокрЛП(Данные); Сообщить("Получены данные: " + ПолЗначение); ПервыСимвол = Лев(ПолЗначение,1); Если ПервыСимвол = "0" Тогда Заползло = Ложь; Напечатано = Ложь; ИначеЕсли ПервыСимвол = "1" Тогда Заползло = Истина; ИначеЕсли ПервыСимвол = "$" Тогда Если Заползло Тогда Если не Напечатано Тогда СпрШтрихКоды = Справочники.ШтрихкодыУпаковок13; НовШтрихкод = СпрШтрихКоды.СоздатьЭлемент(); НовШтрихкод.Записать(); Штрихкод12 = глПрефиксУпаковок + Формат(НовШтрихкод.Код,"ЧЦ=10;ЧВН=;ЧГ=0"); НовШтрихкод.Наименование = ШтрихКод12 + глШтрихкод.КонтрСимволEAN13(ШтрихКод12); НовШтрихкод.Записать(); КонстМасс = Перечисления.КратныеКонстанты.МассыУпаковок; КонстСумм = Перечисления.КратныеКонстанты.УчетныеСуммы; НовУпаковка = Упаковки.Добавить(); НовУпаковка.НомерУпаковки = НовШтрихкод.Код; НовУпаковка.ШтрихкодУпаковки13 = НовШтрихкод.Ссылка; НовУпаковка.КолЕдиниц = КолтвоЕдиниц; НовУпаковка.МассаБрутто = Число(Сред(ПолЗначение,2,7)); Если (НовУпаковка.МассаБрутто = 0) или (НовУпаковка.КолЕдиниц = 0) Тогда НовУпаковка.НамотМасса = 0; НовУпаковка.УпакМасса = 0; НовУпаковка.ПаковМасса = 0; НовУпаковка.ПеремМасса = 0; НовУпаковка.МассаНетто = 0; НовУпаковка.КондМасса = 0; НовУпаковка.УчетСумма = 0; Иначе НовУпаковка.НамотМасса = глБазовые.Округлить(КонстМасс,ТараНамоточная.МассаТары*НовУпаковка.КолЕдиниц,Дата); НовУпаковка.УпакМасса = глБазовые.Округлить(КонстМасс,ТараУпаковочная.МассаТары*НовУпаковка.КолЕдиниц,Дата); НовУпаковка.ПаковМасса = глБазовые.Округлить(КонстМасс,ТараПаковальная.МассаТары,Дата); МассаНеттоУпаковки = НовУпаковка.МассаБрутто - НовУпаковка.НамотМасса - НовУпаковка.УпакМасса - НовУпаковка.ПаковМасса; НовУпаковка.МассаНетто = глБазовые.Округлить(КонстМасс,МассаНеттоУпаковки,Дата); НовУпаковка.КондМасса = глБазовые.Округлить(КонстМасс,НовУпаковка.МассаНетто*КоэфВлажности,Дата); НовУпаковка.УчетСумма = глБазовые.Округлить(КонстСумм,НовУпаковка.КондМасса*НоменПряжи.УчетнаяЦена,Дата); КонецЕсли; ПодсчетИтоговыхЗначений(); Записать(РежимЗаписиДокумента.Запись); ПерЗначение = Символ(2) + "1,1," + СтрокаПараметров (НовУпаковка.НомерУпаковки, НовУпаковка.МассаБрутто, НовУпаковка.УпакМасса + НовУпаковка.ПаковМасса, НовУпаковка.НамотМасса, НовУпаковка.МассаНетто, НовУпаковка.КондМасса) + Символ(3); КомПорт2.ЗаписатьСтроку(ПерЗначение); Сообщить("Передано на " + ИмяПорта2 + ": " + ПерЗначение); Напечатано = Истина; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ВнешнееСобытие(Источник, Событие, Данные) //************************************************************************************************** |
|||
24
PALESIA
06.04.13
✎
16:07
|
ну вобщем 3-ий порт (COM5) по стандарт схеме не срабатывает (
система на компе тоже итальянская - не смогу сменить - из-за специфики ((( вообщем полный пипец как вариант - поставить доп.РС-ку - но это понедельника жадать - итальянцы в командировке - могут срулить - не успеем ( |
|||
25
oleg_km
06.04.13
✎
16:23
|
(24) тебе протокол обмена известен? Если текстовой можно тупо из Hyperterminal попробовать
|
|||
26
PALESIA
06.04.13
✎
16:34
|
(25) подробнее плиз. или ссылочку на инфу?
|
|||
27
PALESIA
07.04.13
✎
09:57
|
опаньки, опатулечки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |