Delphi Can

Orjinalini görmek için tıklayınız: bluetooth yazıcı
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba,

sewoo marka bluetooth yazıcıya cpcl mod da etiket yazdırmak istiyorum ancak internette örnek bulamadım, etikette text, barkod ve image ( .png mesela) olacak, daha önceden bu konu ile uğraşmış arkadaş var mı? var ise örnek kod paylaşabilir mi?

teşekkürler
(15-03-2021, Saat: 17:05)ceylan Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,

sewoo marka bluetooth yazıcıya cpcl mod da etiket yazdırmak istiyorum ancak internette örnek bulamadım, etikette text, barkod ve image ( .png mesela) olacak, daha önceden bu konu ile uğraşmış arkadaş var mı? var ise örnek kod paylaşabilir mi?

teşekkürler

Bahsettiğiniz tip yazıcıların çoğunda artık standart haline gelmiş ZEBRA marka yazıcılar ile uymluluk olabiliyor. Zebra yazıcıların ZPL (Zebra Programing Language) diye bir dili var. 
Eğer yazıcınızın Windows sürücüsü varsa bunların hiç birine gerek kalmadan yazdırabilrsiniz. Eğer destek ve döküman gerekirse, ithalatçısı;
https://www.setsis.com.tr/urunler/?produ...BCEALw_wcB

diye bir firma. 
Eğer zebra ile uyumlu ise Zebranın internetten de indirebileceğiniz ücretsiz bir etiket dizayn programı var. Bununla bir denetebilirsiniz. Bu program dizayn ettiğiniz etiketi "print to file" seçeneği ile ZPL komutlarıyla text olarak çıktı verebiliyor. Bu dosyayı yazıcıya gönderirseniz baskı alabiliyorsunuz.
Merhaba,
uygulamayı android cihada çalıştırma istediğimi yazmamışım, kusura bakmayın,

internette araştırdığımda;
socket create ederek işlem yapılan örnekler var


if (FSocket <> nil) and (FSocket.Connected) then

FSocket.SendData(TEncoding.UTF8.GetBytes('Delphi deneme'+ chr(13));


ancak bu komuta yazıcı tepki vermiyor

zpl olarak oluşturduğum text i de senddata ile yazıcıya gönderdiğimde hiç tepki vermiyor


t := '! 0 200 200 48 1\r\n' +'TEXT 7 0 0 0 Delphi deneme\r\n ' +'PRINT \r\n';
FSOCket.sendData(t);

bu şekilde de hiç tepki yok, zpl komutlarını delphi kullanarak yazıcıya nasıl gönderebilirz?

iyi günler
(18-03-2021, Saat: 15:35)ceylan Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,
uygulamayı android cihada çalıştırma istediğimi yazmamışım, kusura bakmayın,

internette araştırdığımda;
socket create ederek işlem yapılan örnekler var

if (FSocket <> nil) and (FSocket.Connected) then
FSocket.SendData(TEncoding.UTF8.GetBytes('Delphi deneme'+ chr(13));

ancak bu komuta yazıcı tepki vermiyor

zpl olarak oluşturduğum text i de senddata ile yazıcıya gönderdiğimde hiç tepki vermiyor

t := '! 0 200 200 48 1\r\n' +'TEXT 7 0 0 0 Delphi deneme\r\n ' +'PRINT \r\n';

FSOCket.sendData(t);

bu şekilde de hiç tepki yok, zpl komutlarını delphi kullanarak yazıcıya nasıl gönderebilirz?

iyi günler

Androd  ile nasıl yapılır bilmiyorum ama Windows'ta Yazıcının IP numarası üzerinden port numarasına gönderince yazıyor. Bazı modellerde satır sonunda CR+LF  eki gerekebiliyor.
Ben Windows'ta ClientSocket ile bunu yapıyorum.
merhaba,
aşağıdaki şekilde tanımlı olan printCPCLText prosedürünü buton un onclik metodunda nasıl kullanabilirim?

teşekkürler




 
JCPCLClass = interface(JObjectClass)
   ['{1FA43D21-0A43-4DD2-B9DE-D5A9861AAB23}']
   {class} function init: JCPCL; cdecl;//Deprecated
 end;

 [JavaSignature('com/sewoo/jpos/command/CPCL')]
 JCPCL = interface(JObject)
   ['{A840BD47-D9B3-4FCE-8ABE-8CDFC10777CA}']
   procedure clearBuffer; cdecl;//Deprecated
   procedure concatText(P1: Integer; P2: Integer; P3: Integer; P4: JString); cdecl;//Deprecated
   function getBuffer: JStringBuffer; cdecl;//Deprecated
   procedure inverseLine(P1: Integer; P2: Integer; P3: Integer; P4: Integer; P5: Integer); cdecl;//Deprecated
   procedure multiLineData(P1: JString); cdecl;//Deprecated
   procedure multiLineText(P1: Integer; P2: Integer; P3: Integer; P4: Integer; P5: Integer); cdecl;//Deprecated
   procedure printBox(P1: Integer; P2: Integer; P3: Integer; P4: Integer; P5: Integer); cdecl;//Deprecated
   procedure printCPCL2DBarCode(P1: Integer; P2: JString; P3: Integer; P4: Integer; P5: Integer; P6: Integer; P7: Integer; P8: Integer; P9: JString); cdecl;//Deprecated
   procedure printCPCLBarcode(P1: Integer; P2: JString; P3: Integer; P4: Integer; P5: Integer; P6: Integer; P7: Integer; P8: JString; P9: Integer); cdecl;//Deprecated
   procedure printCPCLImage(P1: JString; P2: Integer; P3: Integer); cdecl;//Deprecated
   procedure printCPCLText(P1: Integer; P2: Integer; P3: Integer; P4: Integer; P5: Integer; P6: JString; P7: Integer); cdecl;//Deprecated
   procedure printForm; cdecl;//Deprecated
   procedure printGraphic(P1: Integer; P2: Integer; P3: Integer; P4: Integer; P5: TJavaArray<Byte>); cdecl;//Deprecated
   procedure printLine(P1: Integer; P2: Integer; P3: Integer; P4: Integer; P5: Integer); cdecl;//Deprecated
   procedure resetCPCLBarcode; cdecl;//Deprecated
   procedure resetConcat; cdecl;//Deprecated
   procedure resetCountry; cdecl;//Deprecated
   procedure resetMagnify; cdecl;//Deprecated
   procedure resetMultiLine; cdecl;//Deprecated
   procedure setCPCLBarcode(P1: Integer; P2: Integer; P3: Integer); cdecl;//Deprecated
   procedure setCharSet(P1: JString); cdecl;//Deprecated
   procedure setConcat(P1: Integer; P2: Integer; P3: Integer); cdecl;//Deprecated
   procedure setContrast(P1: Integer); cdecl;//Deprecated
   procedure setCountry(P1: JString); cdecl;//Deprecated
   procedure setForm(P1: Integer; P2: Integer; P3: Integer; P4: Integer; P5: Integer); cdecl;//Deprecated
   procedure setFormMode; cdecl;//Deprecated
   procedure setJournalMode; cdecl;//Deprecated
   procedure setJustification(P1: Integer); cdecl;//Deprecated
   procedure setMagnify(P1: Integer; P2: Integer); cdecl;//Deprecated
   procedure setMeasure(P1: Integer); cdecl;//Deprecated
   procedure setMedia(P1: Integer); cdecl;//Deprecated
   procedure setMultiLine(P1: Integer); cdecl;//Deprecated
   procedure setPageWidth(P1: Integer); cdecl;//Deprecated
   procedure setPattern(P1: Integer); cdecl;//Deprecated
   procedure setSpeed(P1: Integer); cdecl;//Deprecated
   procedure setTone(P1: Integer); cdecl;//Deprecated
   procedure userString(P1: JString); cdecl; overload;//Deprecated
   procedure userString(P1: JString; P2: Boolean); cdecl; overload;//Deprecated
 end;
 TJCPCL = class(TJavaGenericImport<JCPCLClass, JCPCL>) end;

 JCPCLConstClass = interface(IJavaClass)
   ['{B2FFAD87-E7E6-4295-95B7-F1779B7496D9}']
   {class} function _GetLK_BXX_MODEL: Integer; cdecl;
   {class} function _GetLK_CPCL_0_ROTATION: Integer; cdecl;
   {class} function _GetLK_CPCL_180_ROTATION: Integer; cdecl;
   {class} function _GetLK_CPCL_270_ROTATION: Integer; cdecl;
   {class} function _GetLK_CPCL_90_ROTATION: Integer; cdecl;
   {class} function _GetLK_CPCL_BCS_0RATIO: Integer; cdecl;
   {class} function _GetLK_CPCL_BCS_128: JString; cdecl;
   {class} function _GetLK_CPCL_BCS_1RATIO: Integer; cdecl;
   {class} function _GetLK_CPCL_BCS_20RATIO: Integer; cdecl;
   {class} function _GetLK_CPCL_BCS_21RATIO: Integer; cdecl;
   {class} function _GetLK_CPCL_BCS_22RATIO: Integer; cdecl;
   {class} function _GetLK_CPCL_BCS_23RATIO: Integer; cdecl;
   {class} function _GetLK_CPCL_BCS_24RATIO: Integer; cdecl;
   {class} function _GetLK_CPCL_BCS_25RATIO: Integer; cdecl;
   {class} function _GetLK_CPCL_BCS_26RATIO: Integer; cdecl;
   {class} function _GetLK_CPCL_BCS_27RATIO: Integer; cdecl;
Merhaba,

bu konuda ilerleme oldu mu acaba? epey araştırdım, denedim ama bluetooth yazıcıdan yazdırabildiğim bir örneğe rastlayamadım, bu işin abileri bi yardımcı olup küçük bir örnek paylaşabilir mi acaba?
Merhabalar, 
Örnek olması için aşağıdaki kodları gönderiyorum. Birçok bluetooth yazıcıda çalışıyor. 
SendData ile gönderilen sıralı kodları Yazıcı teknik dokümanınızda görebilirsiniz.

Formunuz üzerine bluetooth bileşeni ekleyin. ayrıca telefon üzerinde yazıcı ile eşleştiğiniz yazıcı ismine ihtiyacınız olacak.

unit uMain;

interface

uses
 System.SysUtils, System.Types, ......

type
 TfrmMain = class(TForm)
   .......
   procedure TfrmMain.btnYazdirClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   function YaziciBaglan(pNomeDevice: String): boolean;
   function YaziciKontrol(pNomeDevice: String): TBluetoothDevice;

 end;

var
 FSocket: TBluetoothSocket;

implementation

{$R *.fmx}

uses ..........;


const
 UUID = '{00001101-0000-1000-8000-00805F9B34FB}';


procedure TfrmMain.FormCreate(Sender: TObject);
begin
// if cbYaziciBaglan.IsChecked then
// begin
    Bluetooth1.Enabled := true;
    YaziciBaglan('YAZICI_ADI');  //Yazıcının telefon bluetooth bağlantısında gözüken adı
// end;
end;


function TfrmMain.YaziciBaglan(pNomeDevice: String): boolean;
var
 lDevice: TBluetoothDevice;
begin
 Result := False;
 lDevice := YaziciKontrol(pNomeDevice);
 FSocket := nil;
 if lDevice <> nil then
 begin
   FSocket := lDevice.CreateClientSocket(StringToGUID(UUID), False);
   if FSocket <> nil then
   begin
       FSocket.Connect;
       Result := FSocket.Connected ;
   end;
 end;
end;

function TfrmMain.YaziciKontrol(pNomeDevice: String): TBluetoothDevice;
var
 lDevice: TBluetoothDevice;
begin
 Result := nil;
 for lDevice in Bluetooth1.PairedDevices do
 begin
   if lDevice.DeviceName = pNomeDevice then
   begin
     Result := lDevice;
   end;
 end;
end;

procedure TfrmMain.btnYazdirClick(Sender: TObject);
begin

  if (FSocket <> nil) and (FSocket.Connected) then
  begin
    FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(64)));  //Initialize printer
    FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(97) + chr(1))); //set position alignment  - sondaki 0:left 1:center 2:right
    FSocket.SendData(TEncoding.UTF8.GetBytes('DENEME TEXT'));
    FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(100) + chr(1))); //Satır boşluk
  end;
end.
Yanlış anlamış olabilirim. Burada BT yazıcısına doğrudan bir şey yazdırılmak mı isteniyor. Aksi olsa Windows sürücüsü üzerinden yazıcı seçip yazdır denebilir.