[ОТВЕТИТЬ]
Опции темы
10.06.2015 08:18  
student
Цитата:
Сообщение от FinSoft
которые требуется отдельно регистрировать и лицензировать. Может, я с ходу чего не увидел, но если это так, то вариант с vbscript становится не интересен.
скриптовые языки нормально работают с mscomm32.ocx через CreateObject, правда использовать более 10 портов не получится но и этого достаточно для работы с ком портом на примитивном уровне

пример от микрософта
================================================
REM VBScript Example of using MSComm control for send and receive

REM ---------------------------------------------------------------------------

' NOTES:
' This is a complete example of using the MSComm control distributed with Visual
' Studio 6 to both send and receive data. The received data is stored in a text
' file. Both binary and printable text characters can be received. The text file
' is stored in the same directory as this script. The number of characters to
' receive before ending the script is settable through 'MyThreshold'.

' For maximum efficiency of burst-mode data, the event handler buffers the
' incoming data before writing it to the file. Since it is not possible to
' know how many characters may be in the MSComm control's input buffer, the
' only sure way of knowing how many characters are received is to accumulate
' the count through a call to the control's InBufferCount property. While this
' may appear to be counter-intuitive, the control does not interrupt the program
' on every received character. It is not possible to know how many characters
' are waiting without using the InBufferCount property. When the Input()
' method is called, it will take InBufferCount number of bytes (all of them) out
' of the input buffer if the InputLen property is set to '0'.

' After the threshold number of bytes are received, the event handler processes
' the contents of the receive buffer by writing the contents to the log file
' two bytes at a time with commas separating each pair of bytes.

Option Explicit

Dim objTest ' MSComm control reference pointer
Dim objFSO ' file system reference pointer
Dim objLogFile ' file pointer
Dim s ' general purpose string
Dim path ' path to current directory
Dim msg ' message sent out of comm port
Dim flag ' indicates whether or not script continues
Dim rxCnt
Dim rxBuf
Dim i

const logfile = "\log.txt" ' file where received data is stored

const MyPort = 1 ' COM1
const MyBaud = "57600" ' bps rate
const MyThreshold = 6 ' how many characters to receive until done

const comEvSend = 1 ' enumeration of comm events
const comEvReceive = 2
const comEvCTS = 3
const comEvDSR = 4
const comEvCD = 5
const comEvRing = 6
const comEvEOF = 7

const comInputModeText = 0 ' enumeration of input mode constants
const comInputModeBinary = 1

flag = 0 ' keep program running until comm event
rxCnt = 0

Set objFSO = CreateObject _
("Scripting.FileSystemObject") ' create a file system object

path = objFSO.GetAbsolutePathName ("c:")' get the path to this directory

Set objLogFile = objFSO.CreateTextFile _
(path & logfile, True) ' create a text file in local directory

Set objTest = WScript.CreateObject _
("MSCOMMLib.MSComm", "MSCommEvent_") ' second parameter (MSCommEvent_) +
' name of event (OnComm) creates the
' event handler that is called when
' the event fires

objTest.CommPort = MyPort ' select a port to use
objTest.InputLen = 0 ' if = 0, will retrieve all waiting chars
objTest.InputMode = comInputModeText ' causes Input() to return string (not array)
objTest.RThreshold = 2 ' must be non-zero to enable receive
objTest.PortOpen = TRUE ' open COM port for use

s = MyBaud & ",n,8,1" ' settings: baud,parity,bits,stop in BSTR
objTest.Settings = s ' send to COM port

msg = "Test Message "
objTest.Output = msg ' send test message out of port

While flag = FALSE ' put script in idle until comm event
Wscript.Sleep (1000)
Wend

objLogFile.Close ' close log file
objTest.PortOpen = FALSE ' close port

Wscript.DisconnectObject objTest ' destroy object
Wscript.DisconnectObject objFSO ' destroy object
Wscript.DisconnectObject objLogFile ' destroy object

Set objTest = Nothing ' uninitialize reference pointer
Set objFSO = Nothing ' uninitialize reference pointer
Set objLogFile = Nothing ' uninitialize reference pointer

Wscript.Echo "Script completed."

REM ---------------------------------------------------------------------------

Sub MSCommEvent_OnComm ' OnComm event handler
Select Case objTest.CommEvent
Case comEvReceive
rxCnt = rxCnt + objTest.InBufferCount
rxBuf = rxBuf & objTest.Input
If rxCnt >= MyThreshold Then
For i = 2 To MyThreshold Step 2
objLogFile.Write (Mid (rxBuf, i - 1, 2))
objLogFile.Write (",")
Next
flag = TRUE
rxCnt = 0
End If
Case Else
End Select
End Sub
================================================
насчет лицензирования - если есть что то из ниже перечисленного у разработчика то можно распространять совместно с разработкой (по крайней мере так было ранее :) )

FILE INFORMATION:

Name: mscomm32.ocx
Description: MSComm
Version: 6.0.81.69
DLLSelfRegister: Yes
TypeLib Guid: {648A5603-2C6E-101B-82B6-000000000014}
TypeLib Version: 1.1

PRODUCTS CONTAINING THIS VERSION:
PRODUCT SIZE MOD DATE CAB/IEXPRESS RELATIVE PATH
SharePoint Portal Server 103,744 6/24/1998 spsimeximport.cab \rk\tools\spsimex\import
Visual Basic 6.0 103,744 6/23/1998 \disk 1\os\system
Visual C++ 6.0 103,744 6/23/1998 \os\system
Visual FoxPro 6.0 103,744 6/23/1998 \disk 1\os\system
Visual Studio 6.0 103,744 6/24/1998 mscomm32.cab \disk3\common\tools\vb\cabinets
Visual Studio 6.0 103,744 6/23/1998 \disk1\os\system

COCLASSES:

GUID NAME
{648A5600-2C6E-101B-82B6-000000000014} MSComm

You could consider download and install of the NT 4.0 options pack, it is free.
 
"Спасибо" student от:
10.06.2015 09:03  
FinSoft
Я про это и написал. Mscomm32.ocx не входит в состав windows и требует отдельной установки. Насколько я понял, там есть еще нюансы с лицензированием. А работать с com-портом, как с файлом, судя по обсуждениям, vbscript не может. Вопрос только в этом.

У меня в системе разработки есть небольшой класс для прямой работы с com-портом, использующий win api. Сейчас через него, в частности, организована отправка sms. В такой ситуации выбор будет в его пользу.

Идея использования vbscript была связана с тем, чтобы вынести за пределы приложения нюансы работы с конкретной маркой оборудования. Но не ценой установки дополнительных компонент у каждого клиента.
 
10.06.2015 09:53  
AndreyZh
Цитата:
Сообщение от rasul332
опт планируется запускать, потому и ставил такой вопрос, как и открытие ещё магазинов (главная причина из за которой задумался над автоматизацией). В связи с чем и думал первоначально разделить склад на одном компе, а на втором остатки в магазине, весь процесс продаж. На данный момент пока нет четкого понимания, как Ваша программа работает через сеть, к примеру нужно ли постоянное подключение к сети сервера? Потому и решил сначала опробовать программу без сети, а дальше уже медленно, но верно знакомиться с ней больше.

То есть начать от простого и потихоньку идти к сложному пока нормально не познакомлюсь с системой. Сам я практик, то есть пока не попробую на деле, толком не разберусь в системе читая документы программы. Все попутно собирался делать.

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

Касательно опта только Я. Все работы с системой на первоначальном этапе буду тоже проводить Я сам.

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

Решить все разом эти вопросы не планировал. Думал по порядку, потому и спрашивал, возможности Вашей системы, чтобы приблизительно знать перспективу возможностей заложенных в ней. Начинать все равно собирался только с розницы, а дальше уже смотреть по ситуации и от простого к сложному, то есть сначала попробовать без интернет сети, а далее протестировать по сети.
Видится с учетом расширения сети off-line магазинов на начальном этапе следующая архитектура:

1. ПК-ОПТ. Ставится две копии программы (БД). Первая для реальной работы опта и распределительного склада, так же в ней будут отслеживаться расчеты и с некой периодичностью остатки магазина, который в данной БД учитывается, как отдельный склад. Вторая - это просто отчетная копия программы магазина, данные переносятся штатными средствами или банальным копированием каталога

2. ПК-МАГАЗИН. Работает БД магазина с минимальной степенью детализации учета.

!!! На данном этапе вообще никаких сетей не нужно, да и использоваться возможно всё на одном ПК.

Оптимальная схема товародвижения в программах, учитывая перспективы (ОПТ-прога опта, МАГ-прога магазина):

1. Весь товар штихкодируется и приходуется на ОПТ
2. Передача в магазин - междускладское перемещение в ОПТ. По данной накладной делается авто посылка
3. В МАГ посылка автоматом приходуется, после чего можно производить продажи
4. Либо периодически брать сводные продажи МАГ и ручками (20 минут) вводить их по складу ОПТ или заплатить и будет сделан автоввод продаж
5. Все финансовые операции всех точек учитываются в ОПТ
6. Из ОПТ по всем складам или складу магазина выгружаются остатки в интернет магазин
7. Вся аналитика, в том числе для заказов доступна в ОПТ
....
!!! Конструкция позволяет наращивать сколь угодно большую сеть магазинов и развивать крупный опт со множеством операторов и торговых агентов без её изменения. Все бизнес технологии вносятся в данную архитектуру в любой момент без необходимости заведения новых БД.
 
10.06.2015 11:41  
student
Цитата:
Сообщение от FinSoft
У меня в системе разработки есть небольшой класс для прямой работы с com-портом, использующий win api. Сейчас через него, в частности, организована отправка sms. В такой ситуации выбор будет в его пользу.
тогда все еще проще - пишется примитивный модуль по отправке чего либо в порт из файла или командной строки :) раз уж озвучил:
Цитата:
Сообщение от FinSoft
сделаю файл на vbscript и выложу в открытый доступ.
просто тогда я думаю многие тебе спасибо скажут ...
 
10.06.2015 12:48  
FinSoft
А смысл изобретать колесо? Я думаю, что программ для работы с com-портами, и так, как грязи.
Хотел спросить, атоловские, штриховские драйвера - это более высокоуровневые надстройки для работы с оборудованием через com-порты и esc-последовательности? Я в эту тему не погружался, сорри, если вопрос ламерский...
 
10.06.2015 14:13  
AndreyZh
Добрый день Расул - всё получил. Позвольте напомнить по настройкам:

1. Основная система. Реквизиты фирмы и поведение программы: Администратор/настройки/задание/настройка общих переменных работы
2. Основная система. Набор используемых полей справочников: Администратор/настройки/определение используемых полей справочников
3. Основная система. Доступ пользователей к режимам: Администратор/настройки/доступ пользователей...
4. Смена пароля пользователя: на запрос пароля при запуске программы администратор нажимаете две клавиши Ctrl+BackSpace, вводите системный пароль. На пользователе нажимаете Enter и вводите новый пароль
5. Смена системного пароля, вернуть пароль VICTORY - удалить системный пароль. Всё в настройках
6. Настройка "ценников": В программе нажимаете кнопку настройка
7. Настройка ХБК: в каталоге cst_xbm\xbm меняете содержимое текстовых файлов pril_b.txt и cst.txt - инструкция в подкаталоге TXT
...
Для начала Вам нужно прочитать электронные учебники - после установки их вызовы будут в "документация" по "приходу", "финансам", "отчетам"
 
10.06.2015 14:53  
rasul332
Спасибо, что показали.
Касательно интерфейса кассира, все таки думаю интереснее реализация, чтобы ему не приходилось опять заходить, а пропускать клиентов и возвращаться в интерфейс просто нажимая кнопку энтер, либо другое сочетание клавишь. Когда над душой стоит 3 клиента, на уме одно отпустить их быстро, но там видимо у Вас для каких то ещё других задач, такой формат предусмотрен.
 
10.06.2015 15:14  
AndreyZh
Цитата:
Сообщение от rasul332
... Касательно интерфейса кассира, все таки думаю интереснее реализация ...
Сделал, но доступно это будет в версии 1507. Вызов клавишей BackSpace

 
10.06.2015 20:09  
rasul332
будет интересно посмотреть :)
 
16.06.2015 20:35  
FinSoft
Чтобы логически завершить вопрос по дисплею покупателя.

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

Единственная проблема возникла с переключением кодовой страницы (русификацией), код переключения не соответствовал стандартному. Для решения был предложен способ отмониторить, что шлет стандартная тестовая программа, прилагаемая к девайсу. Например, с помощью утилиты portmon. И вставить нужный символ в свою программу.

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


Опции темы



Часовой пояс GMT +3, время: 07:47.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.