Войти

Показать полную графическую версию : [решено] ПО для терминала сбора данных


Tonny_Bennet
04-09-2014, 10:16
Здравствуйте.

Есть терминалы сбора данных CipherLab CP30 (http://www.scancode.ru/catalog/item/4/494/), подключаются по wi-fi, запускается RDP сеанс, внутри которого работает обработка 1С. Всё работает.

Я тут решил в целях самообразования, возможно оптимизации работы (если получится) написать своё ПО, которое будет выполнять те же операции, что и обработка в 1С (но без RDP, лицензий на 1С и лицензий на RDP). Мой уровень познания .NET и C# основан на университете и никаких сложных проектов я не создавал.

Нашёл библиотеки с SDK_API для этого терминала; нашёл инструкцию (http://www.scancode.ru/files/item/13/634/) с описанием классов и их применения.

Сделал проект, закодил пару кнопок, закинул в терминал - работает. Инициализировал ридер штрихкодов, получилось при помощи обработки таймера считать данные (понимаю что это костыль, просто пробовал).

На одной из первых страниц инструкции описан классс:

public class MsgWindow : MessageWindow
{
int bl = 0;
string tmp;

protected override void WndProc(ref Message msg)
{
if (msg.Msg == decodeMsg)
{

switch (msg.WParam.ToInt32())
{
case 7: //Barcode
bl = Reader.ReaderEngineAPI.GetDecodeData(ref tmp, 5000);
bl = Reader.ReaderEngineAPI.GetOutputRecord(DC_READER_BC, ref tmp);
break;

default:
break;
}

base.WndProc(ref msg);

}
}
}


Как я понял из описания, это класс, наследуемый от MessageWindow, и в нём происходит перехват сообщения DC_READER_BC, которое является идентификатором считанного штрих-кода. Т.е. при считывании штрих кода создаётся сообщение, а этот класс перехватывает это сообщение.

Этот код не работает, т.к. нет некоторых параметров (да и не понятно откуда им взяться). В конце инструкции есть глава Sample Code, в которой этот же класс немного расширен, и приведён к более-менее рабочему виду, но в нём снова встречаются пункты, в которых я не могу разобраться:

First, register the WM_DECODEDATA message.
For example,
decodeMsg = Win32API.RegisterWindowMessage("WM_DECODEDATA" ) ;
where decodeMsg is the message identifier to be broadcasted when a scan engine decodes data.


тут предлагается зарегистрировать сообщение с идентификатором WM_DECODEDATA. Но я не могу найти и понять что нужно подключить в using чтобы стала доступно Win32API?

Немного ниже есть такой кусочек кода:


public class Win32API {
[DllImport("coredll.dll", SetLastError = true)]
public static extern uint RegisterWindowMessage(string lpString);
}


Вроде бы вот он класс Win32API, но откуда разработчики взяли этот загадочный coredll.dll?

Пожалуйста помогите разобраться.

User001
04-09-2014, 11:22
Но я не могу найти и понять что нужно подключить в using чтобы стала доступно Win32API? »Так класс же SDK-шниками и реализован (вы далее пишете). Смотрите, где он реализован и подключайте.
Вроде бы вот он класс Win32API, но откуда разработчики взяли этот загадочный coredll.dll? »А этой dll в папке с SDK нету? Ссылка (http://www.pinvoke.net/default.aspx/user32.registerwindowmessage) говорит, что registerwindowmessage есть в user32, попробуйте ее. А вообще, Win32API похоже реализован так (http://www.c-sharpcorner.com/UploadFile/shrijeetnair/win32api12062005005528AM/win32api.aspx).
Про coredll.dll гляньте это (http://social.msdn.microsoft.com/Forums/en-US/4c5dcb4d-9da7-4408-afea-11b713311abc/cannot-find-coredlldll-why?forum=vcgeneral).

Tonny_Bennet
05-09-2014, 09:36
User001, даже не знаю что написать :). Я ещё раз переписал листинг программы и всё заработало. Как я понял coredll.dll это библиотека системы, а не .net. Сейчас всё запускается (но пока не работает). Лезут ошибки при инициализации ридера и т.д.

Ещё есть вопрос по поводу отладки. При написании приложений под мобильные устройства программа запускается в одном из эмуляторов, у меня (как наверное у всех в VisualStudio 2008) это какое-то подобие Windows PDA. Программу я пишу под терминал сбора данных. Скажите можно ли как-нибудь добавить в список эмулятор этого устройства?

User001
06-09-2014, 09:02
Скажите можно ли как-нибудь добавить в список эмулятор этого устройства? »Я особо WM не интересовался. Может пригодится и для WM 6.5 хелп (http://msdn.microsoft.com/en-us/library/bb278114.aspx) (VS2005), там раздел раздел Mimicking exotic devices, в котором аж разрешение экрана поменять можно :) .
А про само устройство тема (http://www.scancode.ru/forum/topic/4/1156/) есть, которая ведет к саппорту.

User001
08-09-2014, 09:38
Кстати, Пишем под ТСД. (http://habrahabr.ru/post/235869/)

vmiterator
16-05-2022, 12:07
Программы для Windows CE наша компания писала на Sys Dev Kalipso (база данных, файлы, вебсервисы, коммуникации с различными интерфейсами и многое другое без заморочек.., единственный минус в том, что она платная). Демоверсию одного из наших проектов можно посмотреть по ссылке https://www.mercoded.com/id/terminals/po-dlya-terminalov-sbora-dannykh (в этом проекте предусмотрена возможность интеграции с 1с или другой учётной системой) . Но недавно наша компания начала торговать китайскими ТСД с ОС Andrpid (Caribe) информацию по ним можно посмотреть у нас на сайте https://www.mercoded.com/. Существущие проекты с небольшими изменениями перенесли на эти девайсы и теперь поддерживаем в основном проекты на Android. Программы для них ( можно на Kalipso писать, можно на беспланой IDE Android Studio, сами девайсы дешёвые и шустрые, наша компания даёт по ним полную поддержку, есть все необходимые SDK, поддерживаем связь с производителем.




© OSzone.net 2001-2012