Имя: Пароль:
1C
1C 7.7
v7: Дисплей покупателя по USB. А можно ли без сторонних дров?
0 vTanke
 
09.08.11
08:07
Приобрели дисплей покупателя posiflex pd-308/U подключаемый по USB. Есть 1С v7.7 (сетевая версия). Слышал, что можно выводить из 1Ски данные на дисплей информацию без использования драйверов, каким-то образом просто посылая инфу на порт. Возможно ли это? Если да то как? Если нет, то какие драйвера использовать (Атолл платные, что-нибудь кроме них возможно?) и как использовать-то? Что прописывать?
1 ЧеловекДуши
 
09.08.11
08:09
Ты гуглем пользоваться не умеешь?
И причем тут 1С?
2 ЧеловекДуши
 
09.08.11
08:09
+(0)Во всех поисковиках, сначала идут платные ссылки, а потом, начиная с 10-той ветки, идут бесплатные :)
3 vTanke
 
09.08.11
08:11
ну вообще-то я с 1Ски хочу данные брать для вывода на дисплей. А без атолла это возможно?
4 1Сергей
 
09.08.11
08:14
как может Usb-устройство работать без дров?
5 vTanke
 
09.08.11
08:16
ну вообще-то да, Винда сама находит дрова и определяет его как хидсовместимое устройство.
6 VoditelKobyly
 
09.08.11
08:18
Добавлю к (4). Как может 1С посылать инфу на порт?
7 vTanke
 
09.08.11
08:19
Сформулирую по другому:
Как настроить вывод информации с 1С на дисплей покупателя posiflex pd-308/U
8 dmpl
 
09.08.11
08:21
(4) Как USB HID device.

(6) Открываешь девайс как файл - и пишешь.
9 vTanke
 
09.08.11
08:22
(8) Объясни пожалуйста как это сделать с 1Ске????
10 VoditelKobyly
 
09.08.11
08:29
Тут глянь драйвер торгового оборудования: OPOS драйвер для подключения дисплеев покупателя Posiflex и весов CAS к приложениям, реализованным на 1С.

http://www.ccrs.ru/software/index.php?ELEMENT_ID=26
11 big
 
09.08.11
08:29
(8) может хватит "умничать", если по делу ничего сказать не можешь?
12 dmpl
 
09.08.11
08:31
(9) В 1С вряд ли... точнее, имя файла придется определять или внешней компонентой, или один раз определить и вбить (но тогда при изменении конфигурации, например, воткнули в другой порт или еще чего произошло, придется заново вбивать путь к файлу).

Но для начала надо определить протокол обмена данными. Т.е., как именно посылать данные.

Сам код на C++ для определения имени файла для HID устройства такой:


bool InitDivece()
{
   GUID HidGuid;
   HDEVINFO PnPHandle;
   SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
   SP_DEVINFO_DATA DevData;
   PSP_DEVICE_INTERFACE_DETAIL_DATA FunctionClassDeviceData;
   BOOL Success;

   BYTE InputReport[255];
   DWORD BytesRead;    
   DWORD BytesReturned;
   char *HidName;

   bool DeviceFound = false;

   
   HidD_GetHidGuid(&HidGuid);

   PnPHandle = SetupDiGetClassDevs(&HidGuid, 0, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);

   if (PnPHandle == INVALID_HANDLE_VALUE)
   {
       return false;
   }
   
   int DevIndex = 0;

   do {
       DeviceInterfaceData.cbSize = sizeof(DeviceInterfaceData);

       Success = SetupDiEnumDeviceInterfaces(PnPHandle, NULL, &HidGuid, DevIndex, &DeviceInterfaceData);
       if (Success)
       {
           DevData.cbSize = sizeof(DevData);
           BytesReturned = 0;

           SetupDiGetDeviceInterfaceDetail(PnPHandle, &DeviceInterfaceData, NULL, 0, &BytesReturned, &DevData);

           if ((BytesReturned != 0) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER))
           {
               FunctionClassDeviceData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)(new BYTE [BytesReturned]);
               FunctionClassDeviceData->cbSize = 5;

               if (SetupDiGetDeviceInterfaceDetail(PnPHandle, &DeviceInterfaceData, FunctionClassDeviceData, BytesReturned, &BytesReturned, &DevData))
               {
                   HidName = FunctionClassDeviceData->DevicePath;
                   DeviceFound = CheckHID(HidName);
               }
               delete [] (PBYTE)FunctionClassDeviceData;
           }

       }
       DevIndex++;
   } while ((Success) && (!DeviceFound));

   SetupDiDestroyDeviceInfoList(PnPHandle);

   return DeviceFound;
}

bool CheckHID(char *HidName)
{
   HIDD_ATTRIBUTES Attributes;

   HidHandle = CreateFile(HidName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);

   if (HidHandle == INVALID_HANDLE_VALUE)
   {
       return false;
   }

   Attributes.Size = sizeof(Attributes);

   if (HidD_GetAttributes(HidHandle, &Attributes))
   {
       if ((Attributes.VendorID == OUR_VENDOR_ID) && (Attributes.ProductID == OUR_PRODUCT_ID))
       {
           return true;
       }
       else
       {
           CloseHandle(HidHandle);
       }
   }

   return false;
}


Дальше работа примерно такая: формируешь посылку с командой, пишешь ее в файл. Ждешь немного и читаешь из файла результат.
13 big
 
09.08.11
08:34
(10) создалось впечатление, что они не бесплатные
14 vTanke
 
09.08.11
08:39
(10) По ссылке только драйвер весов. Там Дисплея чет вообще не наблюдается, хоть и написано...
(12) Это уж больно радикальное решение...
15 dmpl
 
09.08.11
08:43
(14) Ну, внешними компонентами же пользуются. Будет просто еще одна...
16 VoditelKobyly
 
09.08.11
08:43
(13),(14) Возможно вы правы.
У нас есть посифлексы. Работают на старых атоловских драйверах версии ещё 5 какой-то. Вроде тогда были бесплатные, сейчас не знаю.
17 dmpl
 
09.08.11
08:44
(14) Кстати, к Дисплеям никакой доп. документации не было? А то можно было бы и наваять компоненту - там ничего сложного нет... вопрос только в протоколе.
18 big
 
09.08.11
08:45
(0)  Этот дисплей поддерживает протокол Epson. У Штрих-а есть драйвер дисплеев, ессно поддерживает этот протокол. Только-что установил его - вроде про лптаность нигде не пишется. Попробуй качни, поставь - http://www.shtrih-m.ru/modules.php?name=Downloads&d_op=showpage&cid=110&lid=152&typeid=19
19 big
 
09.08.11
08:45
(17) не ищешь ты легких решений )))
20 dmpl
 
09.08.11
08:48
(19) Я уже весы подключал, так что наработки у меня есть ;) Там только десяток-другой строк поменять. Зато никаких проблем с лицензиями и лицензионными соглашениями.
21 VoditelKobyly
 
09.08.11
08:49
(20) Цена?
22 VoditelKobyly
 
09.08.11
08:50
(20) Надо по протоколу TCP получить данные с весов CAS LP о текущем весе товара на весах.
23 vTanke
 
09.08.11
08:58
(18) Перепробовал все настройки. Пишет "Ошибка записи в HID-устройство"

Нашел какую-то утилиту, которая выводит текущую дату и время:
http://narod.ru/disk/21230769001/USBPD.vc6.rar.html
24 vTanke
 
09.08.11
09:00
(18)+ я про тест, который идет в комплекте с драйвером
25 dmpl
 
09.08.11
09:08
(22) У меня через USB весы работали, с TCP/IP сложнее, но тоже, наверное, решаемо, если есть описание протокола.
26 dmpl
 
09.08.11
09:08
(23) Там исходники есть в комплекте?
27 vTanke
 
09.08.11
09:09
(26) да
28 big
 
09.08.11
09:16
(23) п.1  я пробую на своем PD2600 - та же беда.
29 VoditelKobyly
 
09.08.11
09:19
(26) Сориентируй по цене написания компоненты. А то может дешевле атоловские драйвера купить?
30 vTanke
 
09.08.11
09:22
(28) А как сами его до этого настраивали? В принципе у меня почти такое же устройство.
31 Tatitutu
 
09.08.11
09:23
Ставишь вот эти дрова (они бесплатные)
Драйвера АТОЛ (17.44 Мбайт 2010-05-08 16:54:39)
http://www.magazka.com/nastroyka-to.html

С дисплеем идет диск - ставишь драйвер для USB to COM
у тебя в диспечере устройств появится  Posiflex (Com Х)
и всех делов.
32 vTanke
 
09.08.11
09:24
(31) А нету диска...
33 Ork
 
09.08.11
09:24
Вообще говоря - если дисплей поддерживает эмуляцию Com и известенн протокол обмена - какие могут быть вопросы?
34 dmpl
 
09.08.11
09:27
(27) Там работа идет через usbpd.dll (которая от Posiflex). В принципе, можно сделать программу, которая бы запусклась через КомандаСистемы() и передавала параметры через командную строку.

Вот попробуйте http://narod.ru/disk/21231808001/pd308set.rar.html

Надо скопировать usbpd.dll в ту же папку и запустить из командной строки примерно как

pd308set.exe "Тест"
35 vTanke
 
09.08.11
09:31
(31)(33) Я с такого рода оборудованием не сталкивался, поэтому у меня есть вопросы. Буду признателен если поподробнее...
(34) Ничего не происходит
36 dmpl
 
09.08.11
09:33
(35) А usbpd.dll точно в той же папке лежит, где программа распакована?
37 vTanke
 
09.08.11
09:35
(36) Точнее некуда - честно)
38 dmpl
 
09.08.11
09:37
39 vTanke
 
09.08.11
09:39
(38) А сейчас есть, правда вместо кириллицы крякозяблы и все мною написанное по 3 раза выходит
40 big
 
09.08.11
09:40
парни, тут более развернутые примеры. Ставишь OPOS-драйвер и там пару проектов для изучения есть

http://narod.ru/disk/21232500001/PosiFlex.zip.html
41 dmpl
 
09.08.11
09:42
(39) Кракозяблы - это из-за CP866 (из 1С должно быть нормально, как мне кажется). 3 раза сейчас посмотрю.
42 vTanke
 
09.08.11
09:51
(40) Чет настраиваю Posiflex OPOS Manager пробую в Line Display VB Demo и ничего, молчит дисплей. Это менеджер или демка не пашет. В другой папке примеры работают. А для чего менеджер вообще нужен?
43 dmpl
 
09.08.11
10:02
http://narod.ru/disk/21233783001/pd308set2.rar.html

Должна 1 раз печатать и добавил 3 параметр - A или a (латинские). Т.е., если вызвать

pd308set.exe "Тест" A

то программа переконвертирует строку в CP1251.
44 big
 
09.08.11
10:08
(42) а ХЗ для чего он нужен. Нашел у себя на диске только-что.
45 vTanke
 
09.08.11
10:15
(43) Печатает один раз, а с ключом A ничего нет вообще...
46 vTanke
 
09.08.11
10:17
(44) )))) Рядом с менеджером еще есть OPOSAdmin, от него можно добиться теста устройства указанному в менеджере (выводит все возможные символы на экране монитора), ну больше от него ничего добиться не смог
47 dmpl
 
09.08.11
10:28
48 vTanke
 
09.08.11
10:36
(47) "А" работает, но выдает другого вида крякозяблики. А то что из командной строки это делается? там не досовская кодировка когда я кириллицей пишу?
49 dmpl
 
09.08.11
10:41
(48) А если попробовать вывести "вопрос" - случаем, БНОПНЯ не вылезает?
50 MikeFromAtol
 
09.08.11
10:42
Могу ошибаться, но USB ДП от Посифлекса вроде как имеет свой протокол обмена, со своими заморочками. Поэтому простой драйвер с поддержкой Epson протокола может и не помочь
51 dmpl
 
09.08.11
10:43
Или попробовать из обработки

ЗапуститьПриложение("pd308set.exe ""Тест""");
52 vTanke
 
09.08.11
11:36
(48) Неа, это совсем не БНОПНЯ. Это даже на буквы не похоже. Если вызывать из 1С как (51) выходит уже получается третий вариант крякозябл
53 dmpl
 
09.08.11
11:43
Так... а если оригинальную программу запустить с ключом, например, A? Она после даты/времени должна вывести все символы с кодами от 30 до 255. Как это выглядит? На каких местах буквы?
54 dmpl
 
09.08.11
11:44
55 vTanke
 
09.08.11
11:56
(53) Сначала символы, англ. большие, маленькие, русск. большие, маленькие и значки типа стрелочки, параграф, 1/2, 1/3
56 vTanke
 
09.08.11
11:56
(53)+ все по три раза
57 miki
 
09.08.11
11:59
(56) у него там цикл:
>>    for (long i=0;i<3;++i)
58 vTanke
 
09.08.11
12:02
(54) Сразу тогда еще вопрос. А как вывести символы переноса на новую строку и очистки экрана?
59 dmpl
 
09.08.11
12:04
(55) Русские символы так начинаются

}~?АБВ

Или после фигурной скобки больше символов?
60 dmpl
 
09.08.11
12:10
Вот тогда версия:

http://narod.ru/disk/21245920001/pd308set2.rar.html

Если после строки стоит A, то выполняется преобразование CP866 -> CP1251. Если после строки стоит B - то выполняется преобразование CP1251 -> CP866.
61 popcorn
 
09.08.11
12:12
(0) Если дисплей определится как COM порт, то в 1С просто открываешь этот порт как текстовый файл и выводишь в него данные так же как в обычный файл. Я так делал
62 vTanke
 
09.08.11
13:00
(60) В командной строке:
Если с B запускать, то вместо "вопрос" выходит:
ёЫЭДЫЦ,
если с A, из значков, которые шли последними когда запускали "demo.exe A":
Щ, круг, о, 1/4, круг, 1/3
В 1С с А:
1/2, символ как "включить отображение спец. знаков" в ворде, черный квадрат, П, опять этот странный символ, и
если с B:
Щ, круг, о, 1/4, круг, 1/3

Кириллица явно не та.
(61) Дисплей определился как USB-HID совместимое устройство
63 dmpl
 
09.08.11
13:33
(62) Что-то похоже на KOI8-R, но не то... а в какой последовательности demo.exe A русские буквы выводит?
64 vTanke
 
09.08.11
14:23
(63) БГёЖЗИЙКЛПУФЧШЪЫЭЮЯ
65 vTanke
 
09.08.11
14:24
(63) ДЦЩ и дфцщ вообще идут уже со значками
66 ЧеловекДуши
 
09.08.11
14:31
Столько буковок и постов, а некто не удосужился спросить у автора, если он не 1С-ник, то "кто оно"?
Какова его должность всей конторе?
67 vTanke
 
09.08.11
14:39
(67) Я не 1Сник, в силу обстоятельств затянуло в сеть столовых по обслуживанию оборудования. С имеющимся разобрался, но подкупают новое и иногда не спрашивая зачем и для чего. Раньше работал в САПРе сисадмином, поэтому много нового, но разбираюсь понемногу. Если еще есть вопросы - отвечу. Я не вредный, только хамить не надо...
68 dmpl
 
09.08.11
14:43
(64) Это вообще какая-то нетленка получается... ни в одной известной мне кодировке нет такого, чтобы буква Д была пропущена, а на ее месте шла буква ё...
69 vTanke
 
09.08.11
14:57
Нашел на него драйвера... В руководстве по установке пишут что устройство станет "Posiflex PD320 USB Device(COM5)" и будет отображаться в диспетчере в портах COM и LPT. Только вот беда, не могу теперь подменить виндовые дрова на эти. Сносишь устройство в диспетчере устройств, в следующий раз винда при подключении устройства подсовывает опять свои дрова как usb hid устройство, пытаешься обновить - "в указанном месте отсутствуют сведения об оборудовании". Хотя в inf-файле vid и pid на устройство прописаны, значит те дрова... как поставить то нормальные дрова вместо виндузовых?
70 Torquader
 
11.08.11
14:10
(69) Удалить стандартные дрова и отключить HID-службу, тогда Windows будет вынуждена использовать то, что есть.
Но не будет работать USB мышь и клавиатура.
71 vTanke
 
19.08.11
13:50
В общем если кому интересно решение моей проблемы:

Этот монитор работает только в режиме хид-устройства, все мытарства по переделке его USB->COM не удались и как я понял много новых железок (не только экраны покупателя) посифлекса будут работать только как хид-устройства. С дисплеями покупателя именно этой серии не получилось, а вот в PD-2000 series допустим эмуляция идет при установке дров сразу, устройство хоть и USB, но в диспетчере видно как COM, с этим так не проканало.

Пришлось поставить-таки атоловские драйвера старые (еще бесплатные), с настройкой в них экрана как Posiflex USB. На счет кодировки кириллицы говорили правильно, у этих экранов она какая-то своя необычная и в новых атоловских дровах она присутствует и без проблем настраивается и устройство начинает работать правильно, но естественно мешает ограничение тогда демо-версии (звездочка в каждом 4м символе). В старых дровах так ничего сделать и не смог. Пришлось подбирать соответствие букв написанных в 1С и отображенных на экране (так когда пишешь букву "а" на экране она вылазит как "Б", б = Г, в = ё, г = Ж и т.д.), к сожалению потерялись "Ю" и "Я" с таким бредом...
Далее просто читал мануал атола по драйверам и все, устройство работает почти (к сожалению) как надо.
72 vTanke
 
19.08.11
13:51
кстати всем огромное спасибо за ответы:)
73 Torquader
 
21.08.11
15:11
(71) А вывести все 255 кодов поочерёдно и посмотреть, что и чему соответствует, а потом просто сделать массив перекодировки - это для дисплеев стандартно.
Кстати, старый драйвер умеет выплёвывать на дисплей строку безе перекодировки - тогда можно перекодировать самому.
74 orefkov
 
22.08.11
02:13
Возможно кодировка ISO - буржуины не знают о windows-1251 и KOI-8R, и видимо в списке кодировок с кириллицей ISO выходит первой.
75 popcorn
 
22.08.11
06:58
(71) Где взять старые бесплатные атоловские дрова? ? ? Они поддерживают бегущую строку? Очень надо.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший