powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сетевая печать на Zebra Z4M Plus с помощью ZPL II
25 сообщений из 28, страница 1 из 2
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34648649
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый вечер.

Вопрос к профи, кто-нибудь осуществлял печать на Zebra Z4M Plus с помощью ZPL II по сети ?
Т.е. принтер установлен на одном ПК, а печать ведется из соседней комнаты с другого ПК по сети.

С уважением. mr.Gandalf
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34648739
Valerii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RemoteDesktop....
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34649558
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я печатал. Делал кассовый сервер, который с 1 стороны работает с оборудованием по протоколу, с другой стороны с приложением - клиентом по winsock.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34650921
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый Декоратор.

Нельзя ли чуть по подробней? За общими фразами не видно сути!

За ранее благодарен. mr.Gandalf
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34650926
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через Remote Desctop.... Это чуть чуть не-то. Хотелось через приложение и ZPLII .
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34650949
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как бы так все предельно ясно , по моему.
Пишется программа, которая работает с вашим оборудованием. Как я понимаю в том или ином виде она у вас есть. Получилось что-то типа сервера функций для работы с Zebra. Реализуем в этой же программе клиента сервер TCP-IP, слушающего N-й порт. В клиентской программе, реализуем клиента TCP-IP и при нажатии пимпочки что-то типа "Печать" , вы шлете на сервер строку с данными по вашему(то есть придуманному вами протоколу. Кране не советую слать бинарные данные протокола Zebra). Сервер парсит и уже используя свой функционал для работы с Zebra печатает засылет в порт ту или иную команду.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34651703
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер.

Да программа есть все работает, хочется новых возможностей.
Слабо разбираюсь в сетях и протоколах не говоря уже о слове "парсит". Примерчиком нельзя сее чудо продемонстрировать ? Очень хочется через клиента TCP-IP отправлять ту или иную команду на Zebra.

С уважением mr.Gandalf
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34651981
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно.
Реализация для VFP 8.0
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
Везде:
*Ip  -  IP соединившегося клиента
*hSocket -  хендл соединения, через него соединением можно рулить
*На  1  порт можно подключить  1024  клиента, у каждого будет свой hSocket 

XDllR.dll -  клиент tcp-ip, должен лежать по пути видимому приложению -  клиенту по SET("PATH")
XDll.dll  -  сервер, tcp-ip, должен лежать по пути видимому приложению - серверу (  у вас это уже принт  -  сервер ) по SET("PATH")

* Сервер
* Реализовать на машине  к которой подключен принтер
*Пример -  использоваания 
Public oServer As cWinSockSever
oServer =  Createobject("cWinSockSever")
* К сожалению, пока объект сервера может быть именован только как oServer(!)
With oServer
	.cTCPPort =   23   && Это для тестинга по телнету, лучше использовать порты за  5001 
	?  .InitSocket() &&  Слушаем порт, ждем клиентов
Endwith

* Реализация 
Define Class cWinSockSever As Custom
	cTCPPort =  23 
	iIDispath = Sys( 3095 ,_vfp)
	hSocket =  0 
	
	PROCEDURE Init
		Declare Integer GetSum In XDll.Dll  Integer, Integer
		Declare Integer InitSocket In XDll.Dll  Integer, Integer
		Declare Integer Send_Message In XDll.Dll  String @, Integer
		Declare Integer Socket_Close In XDll.Dll  Integer
		Declare Integer WSAGetLastError In ws2_32.Dll
	EndProc

	Procedure InitSocket
	This.hSocket = InitSocket(This.cTCPPort,This.iIDispath)
	Return ( This.hSocket >  0 )
	Endproc

	Procedure WsMessage
	Lparameters cMsg
		*Асинхронное
		*Диангостические сообщения, можно выводить в статус бар.. например
		*Все ошибки критические, если такую словили все, разбирайтесь что-то не так либо с сетью либо с параметрами ( в частности порт )
		*Возвращает:
		*WSAStartup Error           - ошибка инициализации интерфейса winsocket  2 . 0 
		*INVALID_SOCKET             - ошибка создания сокета
		*bind error                 - ошибка ассоциации сокета с сетевым интерфейсом (очень редкая,но возможная)
		*Error listen               - ошибка инициализации слушателя порта
		*WSA_WAIT_FAILED            - ошибка времени ожидания событий FD_READ|FD_CLOSE ( установлено в бесконечно, реализовано в потоке, работу не тормозит)
		*SOCKET_ERROR               - ошибка перечесления собитий для слушателя порта
		*Accept Error   		    - ошибка  анализа запроса соединения
		*WSAEnumNetworkEvents Error - фиг знает что за собтие приперлось вместо сетевого
		
		*OK -  все Хокей!
		*Реальные номера ошибок можно получить через WSAGetLastError , описание в MSDN
	?"Error ",cMsg
    ? WSAGetLastError()
	Endproc

* Принял соединение
	Procedure WsAccept
	*Асинхронное
	* Тут можете послать клиента через Socket_Close( hSocket )  если адрес не устраивает,
	* если нет, то  соединение клиента принимается по умолчанию
	Lparameters Ip As String, hSocket As Integer
	? "Accept ",Ip
	? "hSocket ",hSocket
	Endproc


	Procedure WsRead
	*Асинхронное
	*Событие  -  прием данных
	*Send_Message(@tStr,hSendSock) эхо ответ, для тестинга
	*тут разбираете tcStr и пихаете в порт данные. Лучше   MS Com Control ActiveX  не использовать.
	* лучше описать функции ввода  - вывода на с++ и сделать асинхронные очереди.
	Lparameters tcStr As String
	?? tcStr
	Endproc

	Procedure WsClose
	*Асинхронное
	* собитие  -  узер с адресом Ip закрыл соединение
	Lparameters Ip, hSocket
	? "CLOSE ",Ip, ' ', hSocket
	ENDPROC
Enddefine


*Клиент
*Реализовать на строне приложения- клиента
*Пример -  использоваания
	Public oClient
	oClient =  Createobject("cWinSockClient")
	* К сожалению, пока объект клиента может быть именован только как oClient(!)
	oClient.nTcpPort =  23 
	oClient.sHost = "192.168.0.1" && Для случая когда клиента и сервер запущены на  1  машине
	oClient.Connect()
	
	* Заершение работы приложения клиента - выдать oClient.CloseConnect(), на сервере возникнет собитие oClient.WsClose( Ip, hSocket )

* Реализация 	
Define Class cWinSockClient As Custom
	nTcpPort =  23 
	sHost = ""
	iIDispath = Sys( 3095 ,_vfp)
	hSocket =  0 

	Procedure Connect
	*Асинхронное
	* Запрос на соединение с сервером 
	Local lcHost
	lcHost =  This.sHost
	With This
		This.hSocket = WsConnect( .nTcpPort, .iIDispath, @lcHost)
	Endwith
	Return ( This.hSocket >  0 )
	Endproc

	Procedure WsMessage( tMessage As String )
	*Асинхронное
	? tMessage
	
	Endproc

	Procedure WsConnected( )
	*Асинхронное
	* Соединение с сервером установлено, можно слать данные
	? "Соединение установлено"
	Endproc

	Procedure WsClose()
	*Асинхронное
	* Сервер закрыл соединение с текущим клиентом

	Endproc

	Procedure CloseConnect
	* Если нужно отрубиться от сервера, стоит ее вызвать
	Return Socket_Close_Cli( This.hSocket )
	Endproc

	Procedure WsRead(tData As String)
	*Асинхронное
	* Пришли данные от сервера
	? tData
	Endproc

	Procedure Init
	Declare Integer WsConnect 	 In XDllR.Dll  Integer, Integer, String @
	Declare Integer Send_Message In XDllR.Dll  String @, Integer, integer 
	Declare Integer Socket_Close In XDllR.Dll As Socket_Close_Cli Integer
	Declare Integer WSAGetLastError In ws2_32.Dll
	Endproc

	Procedure s_message(tData As String)
	* Послать сообщение на сервер, сервер примет данные в событии oServer.WsRead(...)
	* Вот тут и посылаете свои данные из любого места  программы клиента (ну конечно после соединения с сервером)
             * Строка для обмена  100  байт, могу увеличить
	LOCAL  cMessage as String
	cMessage  = tData+CHR( 0 )
	Send_Message(@cMessage , This.hSocket,LEN(cMessage  ))
	Endproc
ENDDEFINE
Сами библы во вложении.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34654818
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер Декоратор .

Огромное спасибо за столь подробное пояснение. На первй взгляд вроде все понятно. Буду разбираться , попробую приминить на практике. Вот только один вопрос, на VFP 6.0 пойдет?
Или есть какие-нибудь тонкости?

Еще раз спасибо. С уважением mr.Gandalf
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34654939
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.Gandalf эта версия не пойдет для VFP 6.0. Вообще без вариантов. Всегда будет падать.
Только для VFP 8.0. Причем для приложений нормально регистрирующих RTL фокса. Тоесть в командном окне написать что-то типа
? _vfp.Application.Version
и данная команда выполнится.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34655196
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро Декоратор .

Все понял.
А на VFP 9.0 ? Пройдет ? Или нужна только 8.0 версия !
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34655237
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта только для 8-ки. Для 9-ки легко исправить.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34657062
DmGr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А чем не подходит мой вариант, который я предложил в предыдущей ветке про Zebra

Ставим принтер Generic TextOnly.
Расшариваем его и печатаем на него.

Или вопрос в чем то другом?
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34658298
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ваш вариант тоже попробуем. О лучших результатах сообщим, но уже после отпуска.

Удачи.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34769395
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большой привет.

*А чем не подходит мой вариант, который я предложил в предыдущей ветке про Zebra

*Ставим принтер Generic TextOnly.
*Расшариваем его и печатаем на него.

Вариант сей не прошел. Есть какая-то засада? Пытался через внутренние команды ZPL II определить принтер в сети. Не помогло!

Принтер сидит на одном из ПК на LPT 1. Использую драйвера от Seagul т.к. через них удобно закачивать во флеш память принтера русские фонты.

Кто силен в решении такой проблемы? Помогите !

Уж очень хочется через ZPL II
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34822880
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос пока не решен. Вопрос к Вам "профи".
Представьте, что у Вас к одному из ПК подключен Ваш Zebra… (через LPT1), на котором у Вас идет массовая печать бирок (этикеток).
ПК находится в сети и Вам нужно с другого ПК (к которому на прямую не подключен принтер Zebra….), используя ZPL команды (это некий текст ) отправить на Вашу Zebra…. (короче распечать несколько бирок).
Как с другого ПК печатать на Zebre……. ?
Как бы Вы поступили? У меня чего-то ничего не получается. Заранее благодарен
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34823068
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.GandalfВопрос пока не решен. Вопрос к Вам "профи".
Представьте, что у Вас к одному из ПК подключен Ваш Zebra… (через LPT1), на котором у Вас идет массовая печать бирок (этикеток).
ПК находится в сети и Вам нужно с другого ПК (к которому на прямую не подключен принтер Zebra….), используя ZPL команды (это некий текст ) отправить на Вашу Zebra…. (короче распечать несколько бирок).
Как с другого ПК печатать на Zebre……. ?
Как бы Вы поступили? У меня чего-то ничего не получается. Заранее благодарен
Вариант от Декоратора с TCP/IP ты не осилил.
1. Можешь в сторону DCOMа покопать - чтобы объект работал на машине с принтером. Примеров нет, давно как-то побаловался, но реально нигде не использовал.
2. Проще некуда. Расшареная папка куда кладутся файлы с заданиями на печать. На компе с принтером крутится менеджер печати, который постоянно проверяет папку, если там что-то появляется - печатает и удаляет файл-задание
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34823109
sergej_57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотри на соседнем форуме, я там тебе ответил на свой вопрос
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34823508
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
*Вариант от Декоратора с TCP/IP ты не осилил.
*1. Можешь в сторону DCOMа покопать - чтобы объект работал на машине с принтером. Примеров *нет, давно как-то побаловался, но реально нигде не использовал.
*2. Проще некуда. Расшареная папка куда кладутся файлы с заданиями на печать. На компе с *принтером крутится менеджер печати, который постоянно проверяет папку, если там что-то *появляется - печатает и удаляет файл-задание

Спасибо за оперативность.
Может я чего не понимаю, но вся штука в том, что на принтер идет текстовая последовательность (это и есть команды управления) . Т.е. не подготовленные к печати файлы! Ферштейн?
С помощью этих команд печатается штрих код и все остальное.

Все равно спасибо, за идею.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34825206
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.GandalfМожет я чего не понимаю, но вся штука в том, что на принтер идет текстовая последовательность (это и есть команды управления) . Т.е. не подготовленные к печати файлы! Ферштейн?
С помощью этих команд печатается штрих код и все остальное.
Последовательность откуда берется? - программно формируется. Вот и пиши в файл что наформировал. Неважно в каком виде, хоть в DBF. Главное чтобы менеджер печати (его тоже тебе писать) взял этот файл, закончил его преобразование (если нужно) и послал на принтер не задавая никаких вопросов.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34825988
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер Дмитрий.

*Последовательность откуда берется? - программно формируется. Вот и пиши в файл что *наформировал. Неважно в каком виде, хоть в DBF. Главное чтобы менеджер печати (его тоже *тебе писать) взял этот файл, закончил его преобразование (если нужно) и послал на принтер не *задавая никаких вопросов.

Короче, сделал следующее: Создал локальный порт(через ХР настройка принтера). Расшарил его (через net use lpt5 \\server\zebra). Но печать на принтер не приходит. Вываливается на экран монитора. Что за "хрень", пока понять не могу ?
Есть вопрос: менеджер печати(который надо написать) - это что за чудо? Можно своими словами. Просьба без обид (если вопросы дико выглядят).

Еще раз спасибо за участие.

Удачи.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34826359
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.GandalfКороче, сделал следующее: Создал локальный порт(через ХР настройка принтера). Расшарил его (через net use lpt5 \\server\zebra). Но печать на принтер не приходит. Вываливается на экран монитора. Что за "хрень", пока понять не могу ?
На этот вопрос тебе лучше в форуме по администрированию Win ответят.

mr.GandalfЕсть вопрос: менеджер печати(который надо написать) - это что за чудо? Можно своими словами. Просьба без обид (если вопросы дико выглядят).
Твою зебру я в глаза не видел, каким образом строится с ней взаимодействие - тоже непонятно. Понятно что это не стандартный report, а какая-то байтовая последовательность посылаемая в LPT порт. Локально на одной машине у тебя все работает. Правильно ?
Т.к. с другой машины послать в lpt порт не получается, то надо разделить процедуру печати на два этапа:
1. Подготовка данных для печати (удаленный компьютер с участием пользователя)
2. Отправка данных на печать (комп с принтером, пользователь не нужен, он же "менеджер печати")

по п.1 - это твоя прога где пользователь выбирает что печатать. Выбранное в каком-то виде сохраняется, как вариант в файл писать последовательность байт которые надо отправить на принтер (fcreate(), fwrite(),StrToFile()). Затем файл кладется в заданную сетевую папку, например \\SERVER\ZEBRA

по п.2 - на компе с принтером висит постоянно запущенная программулька (менеджер печати), которая периодически (раз в секунду например) проверяет есть ли что в папке \\SERVER\ZEBRA если в папке появился файл, то он берется (fopen(), fread(), FileToStr()) и отправляется в LPT-порт. После чего файл удаляется.

PS Расшаренную папку и файлы можно заменить на любой другой способ взаимодействия двух компов по сети. Например, установку TCP/IP соединения и передачу инфы по этому соединению.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34826376
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо за разъяснения.

Бум, думать.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34826881
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в каком режиме работает устройство ? EPP или ECP ?
Советую просто для начала, выставить в BIOS правильный режим работы порта, которое поддерживает ваше устройство. Затем попробовать, просто для тестирования, открыть порт через FOPEN() и чегой-то там ему закинуть (через FWRITE() ) в соответствии с протоколом. А потом уже думать, где же в реализации команды по протоколу ошибка. А затем уже задуматься о высших материях, типа того как по сети все это добро заюзать. И кстати, это очень полезно, так как он вам ответит вне зависимости от того понял он команду или нет и во входной буфер припреться ответ ( можно его и почитать через FREAD(), только с длинной читаемых данных не переборщите, а-то будете висеть) , который по протоколу будет расшифровываться "Команда не поддерживаеться", или "недопустимый код операции", ну и т.д.
Удачи.
...
Рейтинг: 0 / 0
Сетевая печать на Zebra Z4M Plus с помощью ZPL II
    #34828454
mr.Gandalf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем кто откликнулся человеческое спасибо.

Проблема решена!

Всем удачи.

mr.Gandalf
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сетевая печать на Zebra Z4M Plus с помощью ZPL II
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]