السلام عليكم و رحمة الله
إضافة دعم عتاد نظام المبيعات إلى برنامجك عملية سهلة تابع معنا الموضوع لتتعلمها
العتاد الذي سنتطرق له في هذا الموضوع
قارئ الباركود ، درج النقود ، عارض الزبون ، طابعة التذاكر ، طابعة الباركود ، طابعة البلوتوث في الأندرويد
1 BarcodeReader قارئ الباركود
قارئ الباركود متوفر بعدة أنواع ، كمبرمجين ما يهمنا في قارئ الباركود هو نوع المنفذ port( usb/ps2(wedge) /com)
لحسن الحظ الأنواع المتواجدة في السوق حاليا أغلبها usb
لذا سيكون التعامل بالبرمجة مع قارئ الباركود سهلا منعدما) لأنه يقرأ الباركود و يكتبه على المكون الموضع المؤشر عليه مع إضافة
enter في النهاية كخاصية افتراضية
نضع مثالا بسيطا لتنفيذ إجراء بعد إستقبال الباركود: نستعمل الحدث onkeypress الخاص بالمكون TEdit
كود :
procedure TForm1.edtBarcodeKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) then
begin
if edtBarCode.Text <> '' then
begin
// البحث
ShowMessage('البحث عن الباركود' + #10 + edtBarCode.Text);
edtBarCode.Clear;
end;
Key := #0;
end;
end;
اعتذر على الجودة
*يمكن التغيير في خصائص القارئ حسب نوعه من اللغة ، سرعة القراءة ، التحكم في الصوت ،الوقت بين القراة و القراءة
,,,,Caps lock ، Prefix and Suffix ، 2D ، Enter
بالكتيب أو الورقة التي تأتي معه و في بعض الأنواع برنامج لتغيير الخصائص
الملف في الرابط اسفله يحتوي صور الموضوع فقط
السلام عليكم
2 CashDrawer درج النقود
كمبرمجين ما يهمنا في درج النقود هو نوع المنفذusb / Com / Rj11
Rj11 هذا المنفذ يوصل بطابعة التذاكر فتقوم بفتحه أوتوماتيكيا بعد أو قبل الطباعة يمكنك تفعيلها أو تغييرها في خصائص الطابعة
usb عند تنصيبها تقوم بإنشاءVirtual Com وتتعامل معه مثل منفذcom
للتعامل مع منفذ com
* Delphi
نستعمل المكون المجاني Tcomport
اختر رقم المنفذ المتصل مع الخصائص كما في الصورة
ثم نقوم بإرسال حرف واحد يفتح الدرج
كود :
ComPort.Connected:=true;
ComPort.WriteStr('a');
ComPort.Connected:=false;
* Lazarus
نستعمل مكتبةSynapse- synaser
أضف وحدة[/font] synaser إلى uses
كود :
var
ser: TBlockSerial;
begin
ser:=TBlockSerial.Create;
try
ser.Connect('COM1');
// Config(baud, bits: integer; parity: char; stop: integer;softflow, hardflow: boolean)
ser.config(9600, 8, 'N', SB1, False, False);
ser.SendString('A');
finally
ser.free;
end;
end;
ملاحظات
- توجد بعض الأنواع التي تدعم فحص حالة الدرج إذا كان مفتوحا أو لا ( لم أستعملها من قبل )
يوجد جهاز يحول من[/font] Rj11→ usb يستعمل في حالة عدم وجود طابعة
توجد طريقة لفتح الدرج مباشرة دون طباعة في حالة المنفذ Rj11
بإستعمال أمر Esc/pos يبعث مباشرة للطابعة ، و هذا الأمر يختلف حسب نوع الطابعة
مثال
AnsiChar(27) + AnsiChar(112) + AnsiChar(0) + AnsiChar(64) + AnsiChar(240)
[تمرين بدون حل

3 عارض الزبون Customer Display
![[صورة: K9De79.jpg]](https://imagizer.imageshack.com/img922/7551/K9De79.jpg)
هو جهاز يستعمل لعرض تفاصيل البيع من اسم المادة و سعرها مع الإجمالي
يوجد نوعين مشهورين في السوق شاشة ذات سطرين مع تكنولوجيةLED
وهذا هو الذي يتمحور عليه موضوعنا و النوع الثاني شاشة صغيرة مثل شاشة الجهاز
النوع الأول نجده في السوق بأحد المنافذ usb / Com
سوف نتعامل معها مثل درج النقود مع الأخذ بعين الاعتبار عدد الحروف و عدد الأسطر في الجهاز
مثال عندي جهاز بسطرين كل سطر فيه 20 حرف
* Delphi
كود :
var line1,line2:string;
line1:='Product 1 price 200' ;
while Length(line1)<20 do
line1:=line1+' ';
line2:='Total : 500' ;
while Length(line2)<20 do
line2:=line2+' ';
ComPort.Connected:=true;
ComPort.WriteStr(line1);
ComPort.WriteStr(line2);
ComPort.Connected:=false;
* Lazarus
كود :
ser.SendString(line1);
ser.SendString(line2);
![[صورة: giphy.gif]](https://media.giphy.com/media/Dpm6BMzkkZgALNckum/giphy.gif)
معظم الأنواع تدعم أوامر ESC/POS
من مسح الشاشة، تحريك النص ، مدة العرض ، اللغة ...
مثال عن مسح الشاشة CLR
decimal=12
كود :
ComPort.WriteStr(#12);
4 طابعة التذاكر Receipt Printer
توجد عدة طرق للتعامل مع الطابعات في Delphi/Lazarus
* الطباعة المباشرة للمنفذ بالنسبة للطابعات ذات المنافذ COM/LPT
* الطباعة باستخدام محرر التقارير
الطباعة اليدوية باستخدام TPrinter
في موضوعنا نختار الأسهل باستخدام محرر التقارير
التعامل مع هذه الطابعة مثل التعامل مع أي طابعة فقط خذ بعين الاعتبار عرض الورق مثل 8سم
* Delphi
مثال Fastreport
كود :
frxreport1.LoadFromFile('myReport.fr3');
frxreport1.PrepareReport;
frxreport1.PrintOptions.Printer:='MyPrinter';
frxreport1.PrintOptions.ShowDialog := False;
frxreport1.Print;
يجب اختيار الطابعة و إلا ستتم الطباعة على الطابعة الافتراضية كما يفضل أن تكون الطباعة مباشرة دون معاينة
* Lazarus
مثال Lazreport
كود :
uses LR_Prntr;
var
prnold :Integer;
...
prnold:=prn.PrinterIndex;
frReport1.LoadFromFile('MyReport.lrf');
prn.PrinterIndex := prn.Printers.IndexOf('Myprinter');
if prnold<>prn.PrinterIndex then
frReport1.ChangePrinter(prnold,prn.PrinterIndex);
if frReport1.PrepareReport then
frReport1.PrintPreparedReport('1',1);
يمكن التغيير في خصائص طابعة التذاكر: من تفعيل أو تعطيل قاطع الورق ، تفعيل أو تعطيل فتح درج النقود قبل أو بعد الطباعة ،طول وعرض الورق ، الجودة إن وجدت ، تفعيل أو تعطيل الصوت قبل أو بعد الطباعة ، عدد النسخ
ملاحظة Fastreport لا يغير الطابعة أثناء المعاينة بل أثناء الطباعة فقط
سيتم رفع الأمثلة لاحقا
السلام عليكم ورحمة الله, أخ عبد الجليل ما هو سعر كل جهاز من تلك الأجهزة من فضلك؟
وعليكم السلام و رحمة الله وبركاته
الأسعار التقريبية بالدينار الجزائري للأجهزة ( سعر التجزئة )
قارئ الباركود العلامة الصينية
النوع البسيط إبتداءا من 6000
النوع الثابت إبتداءا من 14000
درج النقود بالتقريب ( لأن ثمنه في إرتفاع ) 10000
عارض الزبون ( لا أضنه متوفر حاليا ) 11000
طابعة التذاكر العلامة الصينية
14000 -> 22000
Star / Epson
29000 -> 35000
طابعة الباركود الصينية
17000 -> 21000
tsc/zebra
+38000
طابعة البلوتوث الصينية
20000-> 25000
5 طابعة الباركود و الملصقات Barcode & Label Printer
التعامل معها مثل طابعة التذاكر الفرق فقط في أن الطول و العرض محددان
مثال 2سم على4سم
الأمثلة مضمنة في تطبيق واحد (الأول خاص بالدلفي و الثاني لازاروس )
![[صورة: QJaoPQ.png]](https://imagizer.imageshack.com/img922/6046/QJaoPQ.png)
السلام عليكم
رمضان مبارك بارك الله فيك اخ عبد الجليل..
و عليكم السلام و رحمة الله
أخي فاتح رمضان مبارك على الجميع و بارك الله فيكم و قدركم على فعل الطاعات
السلام عليكم
رمضان كريم أخي وشكرا على هذا الطرح
أليس من الأفضل أن ترفق الصور في الموضوع بدل إستخدام روابط خارجية...
وعليكم السلام و رحمة الله
بارك الله فيك أخي و عفا الله عنا وعنكم في هذا الشهر .
إقتباس :أليس من الأفضل أن ترفق الصور في الموضوع بدل إستخدام روابط خارجية...
ظننت أن المنتدى محدود في المرفقات ، اذا كان العكس سأرفعها غدا إن شاء الله