Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] ПО для терминала сбора данных (http://forum.oszone.net/showthread.php?t=287464)

Tonny_Bennet 04-09-2014 10:16 2398189

ПО для терминала сбора данных
 
Здравствуйте.

Есть терминалы сбора данных CipherLab CP30, подключаются по wi-fi, запускается RDP сеанс, внутри которого работает обработка 1С. Всё работает.

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

Нашёл библиотеки с SDK_API для этого терминала; нашёл инструкцию с описанием классов и их применения.

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

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

    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 2398218

Цитата:

Цитата Tonny_Bennet
Но я не могу найти и понять что нужно подключить в using чтобы стала доступно Win32API? »

Так класс же SDK-шниками и реализован (вы далее пишете). Смотрите, где он реализован и подключайте.
Цитата:

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

А этой dll в папке с SDK нету? Ссылка говорит, что registerwindowmessage есть в user32, попробуйте ее. А вообще, Win32API похоже реализован так.
Про coredll.dll гляньте это.

Tonny_Bennet 05-09-2014 09:36 2398631

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

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

User001 06-09-2014 09:02 2399081

Цитата:

Цитата Tonny_Bennet
Скажите можно ли как-нибудь добавить в список эмулятор этого устройства? »

Я особо WM не интересовался. Может пригодится и для WM 6.5 хелп (VS2005), там раздел раздел Mimicking exotic devices, в котором аж разрешение экрана поменять можно :) .
А про само устройство тема есть, которая ведет к саппорту.

User001 08-09-2014 09:38 2399886

Кстати, Пишем под ТСД.

vmiterator 16-05-2022 12:07 2985125

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


Время: 22:49.

Время: 22:49.
© OSzone.net 2001-