Форум OlegON > Программы и оборудование для автоматизации торговли > Оборудование

Price cheker NCR 7802 и Супермаг + : Оборудование

01.12.2024 19:52


20.08.2015 09:28
Добрый день!
Вопрос по довольно дорогой железке.
Магазин был раньше под 1С астор и в нем реализована работа с данным прайсчекером.(отдельный сервер для NCR)
Перевели магазин на Супераг+.
Официально его нет в поддержке.
Нашел описание протоколов обмена, но информации очень мало.
Примеры что в SDK написаны на VС++ 6, в чем я не силен. (Технология Net. расслабляет, в VC++ 2010 куда проще работать)
Так вот вопрос: совмещал ли кто эту железку с супермагом?
Вытянуть данные из супермага не составит труда, а вот как их отправить на прайсчекер?
Либо может у кого завалялось толовое описание протоколов обмена(SMB, FTP, QFX)
20.08.2015 10:38
озадачил. это всё протоколы передачи файлов.

я правильно понимаю, что задача состоит в том, чтобы имеющийся файл в чекер засунуть?
или необходимый формат файла ты тоже не знаешь?

зачем тебе описания настолько стандартных протоколов?
ты их правда сам реализовать решил? достаточно уже создано реализаций.

из какого контекста выдернул список протоколов?
тебе понять бы для начала: чекер хочет быть клиентом или сервером при обмене файлами?
20.08.2015 11:01
1) Не правильно выразился про протоколы.
В моем посте я имел ввиду формат(синтаксис) передачи по тому или иному протоколу.
Более менее в документации описан принцип обмена через QFX.
Но пример на VC++6 тяжеловат для разбора и в нем(примере) описаны не все возможности.

Код:
QFX Quick File Transfer Protocol
QFX is a very low overhead protocol that is a much simpler and faster alternative to
FTP for moving files quickly across the network. There is no authentication. The QFX
server permits access to files in and below its default directory; this is the extent of
security.
QFX packets consist of a 4-byte (network order) packet length, a 4-character token, and
possibly data. Packet length includes the 4-byte length field.
Tokens
INFO
File information request/response
SEND
File send request/response
DIFF
File timestamp comparison
ERRR
Error response
INFO exchange
Request
[ length ][ INFO ][ filespec <NUL>]
Response
[ length ][ INFO ][ YYYYMMDDhhmmss size <NUL>]
Four digits for year, two each for month (January is 01), day (01-31), hour (00-23),
minute (00-59), and second (00-59), followed by a single space character, and finally
the size of the file, in bytes.
Response
[ length ][ ERRR ]
Requested file does not exist or request is malformed. Explanatory message is
optional, should be string consisting of number, white space, optional text.
Request
[ length ][ SEND ][ filespec <NUL>]
Response
[ length ][ SEND ][ file data ]
Response
[ length ][ ERRR ]
Requested file does not exist or request is malformed. Explanatory message is
optional, should be string consisting of number, white space, optional text.
Request
[ length ][ DIFF ][ filespec <NUL>][ YYYYMMDDhhmmss<NUL>]
Response
[ length ][ DIFF ][ Bool ]
Bool value is TRUE if the file's date/time are DIFFERENT than the provided
timestamp and FALSE if it is the same.
Response
[ length ][ ERRR ]
Requested file does not exist or request is malformed. Explanatory message is
optional, should be string consisting of number, white space, optional text.
2) Описания форматов файлов так же нет.(В 1с работала через SMB и данные брались из sql'ной базы и без создания каких-либо файлов отправлялиь в прайсчекер)
3) Прайсчекер является клиентом, вот сервер и нужно наваять(или взять)

Нет нормального описания, нет примеров на современных языках программирования, да и те что есть описывают очень мало. Разочаровался я немного в NCR. Железо у них всегда хорошее
20.08.2015 12:19
еще раз. это протоколы ПЕРЕДАЧИ ФАЙЛОВ. они насквозь документированы. и описания широкодоступны.

они не привязаны к прайсчекеру. их надо искать в мануалах и учебниках про основы сетей.
и сразу информации станет сильно больше, чем нужно в рамках задачи.

smb - Server Message Block - протокол microsoft для сетей windows
ftp - File Transfer Protocol - протокол передачи файлов поверх tcp/ip-стека (в современной инкарнации)
qfx - Quick File transfer protocol - протокол передачи файлов из яблочного мира
20.08.2015 12:23
интереснее другое.
если обмен с чекером построен на этих протоколах - вероятнее всего он сводится к обмену файлами.
вот это и надо понять: что за файлы, кто инициатор?

может, чекеру надо положить в определенное место файл с данными, он их всосет в свою базу и будет искать в ней.
а может, он выкладывает файлик с ШК, его надо подобрать и отдать обратно файлик с данными (менее вероятно, на мой взгляд).
20.08.2015 13:27
а, не. малыми усилиями не отделаться.

Цитата:
FTP, SMB or QFX can be used to get the graphics files for the RealScan 7802’s slideshow. SMB is the default mode.
Цитата:
The RealScan 7802 requires a file server for storing graphics files and a ProductInfo server (host or back office computer) the price/description database.
то есть файловые протоколы - они только чтобы чекер картинки для слайдшоу в режиме простоя себе подтягивал.

реальный обмен информацией про товар происходит по протоколу ProductInfo
20.08.2015 14:28
Оказалось куда все проще.
Действительно вся эта приблуда(выбор протокола и др.) нужна для оформления информации на дисплее прайсчекере. Т.е. картинки, слайды, расположение текста на экране.
Сам ШК просто выплевывается на сервер по порту и ждет ответа.
Пример на VB:
Код:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim server As TcpListener
        server = Nothing
        Try
            ' Set the TcpListener on port 13000.
            Dim port As Int32 = 1283
            Dim localAddr As IPAddress = IPAddress.Parse("192.168.100.11")

            server = New TcpListener(localAddr, port)

            ' Start listening for client requests.
            server.Start()

            ' Buffer for reading data
            Dim bytes(1024) As Byte
            Dim data As String = Nothing

            ' Enter the listening loop.
            While True
                Application.DoEvents()
                l1.Items.Add("Waiting for a connection... ")

                ' Perform a blocking call to accept requests.
                ' You could also user server.AcceptSocket() here.
                Dim client As TcpClient = server.AcceptTcpClient()
                l1.Items.Add("Connected!")

                data = Nothing

                ' Get a stream object for reading and writing
                Dim stream As NetworkStream = client.GetStream()

                Dim i As Int32

                ' Loop to receive all the data sent by the client.
                i = stream.Read(bytes, 0, bytes.Length)
                While (i <> 0)
                    ' Translate data bytes to a ASCII string.
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                    l1.Items.Add(data)

                    ' Process the data sent by the client.
                    data = data.ToUpper()
                    Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes("Book PRICE 22,22")
                    'MsgBox(data)
                    ' Send back a response.
                    stream.Write(msg, 0, msg.Length)
                    l1.Items.Add(data)

                    i = stream.Read(bytes, 0, bytes.Length)

                End While

                ' Shutdown and end connection
                client.Close()
            End While
        Catch ex As SocketException
            l1.Items.Add(ex)
        Finally
            server.Stop()
        End Try

        l1.Items.Add(ControlChars.Cr + "Hit enter to continue....")
    End Sub
20.08.2015 14:28
А дальше только привести в человечески вид
Часовой пояс GMT +3, время: 19:52.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.