طباعة الباركود - فراس الغزي - 28-04-18
السلام عليكم
كيفكم اخوان اقوم ببرمجة برنامج يقوم بعمل باركود للمنتجات وعندي طابعة honeywell ولكن المشكلة لما اقوم بامر الطباعه يطبع ولكنه بيطلع ورقة الباركود فاضية ما فيها اي شي ولا اعرف السبب هل المشكلة في الطابعة ام المشكلة في البرمجة علما انا دربت اطلع الباركود على طابعة عادي طبع ومافي مشكلة ارجو من لديه حل ا يعرف السبب لا يبخل علينه بالاجابة
RE: طباعة الباركود - عبدالله الدوسري - 28-04-18
وعليكم السلام
اذا امكن ؟ يرجى ذكر بعض الامور لمعرفت الحل :
١ . كيف تنشئ الباركود.
٢ . كيف تقوم بإرسال الباركود للطابعة.
الأكيد هو اان الخطاء برمجي وليس من الطابعة.
الإحتمال الذي افكر فيه . هو انك تطبع في مكان خارج نطاق الطابعة اذا كانت تطبع اوراق صغيرة.
ممكن تحتاج تطبع في يسار اعلى الصفحة.
او من الممكن انك تعطي امر الطباعة ولكنك لا ترسم صورة الباركود على الورقة المطبوعة. لذك تعطي امر الطباعة على وثيقة خالية . فتظهر ورقة فاضية.
ارفق الاكواد التي تستخدمها . لمعرفة اين الخطاء
لماذا لا تحاول إستخدام :
Mobility SDK for Windows - Developer Library Software
توجد مكتبات لمساعدة المطورين :
أعتقد يوجد بها أوامر ووظائف كثيرة ستستفيد منها
للتحميل من هنا :
لا أعرف نوع الطابعة لديك , تحتاج إلى البحث عن الملفات المناسبة لك
https://hsmftp.honeywell.com/
https://www.honeywellaidc.com/products/software/developer-library/mobility-sdk-for-windows
[attachment=17790]
RE: طباعة الباركود - فراس الغزي - 28-04-18
(28-04-18, 06:17 PM)عبدالله الدوسري كتب : وعليكم السلام
اذا امكن ؟ يرجى ذكر بعض الامور لمعرفت الحل :
١ . كيف تنشئ الباركود.
٢ . كيف تقوم بإرسال الباركود للطابعة.
الأكيد هو اان الخطاء برمجي وليس من الطابعة.
الإحتمال الذي افكر فيه . هو انك تطبع في مكان خارج نطاق الطابعة اذا كانت تطبع اوراق صغيرة.
ممكن تحتاج تطبع في يسار اعلى الصفحة.
او من الممكن انك تعطي امر الطباعة ولكنك لا ترسم صورة الباركود على الورقة المطبوعة. لذك تعطي امر الطباعة على وثيقة خالية . فتظهر ورقة فاضية.
ارفق الاكواد التي تستخدمها . لمعرفة اين الخطاء
لماذا لا تحاول إستخدام :
Mobility SDK for Windows - Developer Library Software
توجد مكتبات لمساعدة المطورين :
أعتقد يوجد بها أوامر ووظائف كثيرة ستستفيد منها
للتحميل من هنا :
لا أعرف نوع الطابعة لديك , تحتاج إلى البحث عن الملفات المناسبة لك
https://hsmftp.honeywell.com/
https://www.honeywellaidc.com/products/software/developer-library/mobility-sdk-for-windows
السلام عليكم اخي العزيز
اخي العزيز انا عندي الطابعة من نوع PC421 hooneywell
اما بالنسبة الى الكود البرمجي فهذا الكود الي انا قاعد اتعامل فيه اخي الغالي
كود :
Imports MySql.Data.MySqlClient
Imports System.IO
Imports System.Drawing.Printing
Public Class add_barcode
Public ToDo As String = "add"
Public id As Integer
Private Sub Butcaret_Click(sender As Object, e As EventArgs) Handles Butcaret.Click
Dim Generator As New MessagingToolkit.Barcode.BarcodeEncoder
Generator.IncludeLabel = True
Generator.CustomLabel = Textcod.Text
Try
PictureBox1.Image = New Bitmap(Generator.Encode(MessagingToolkit.Barcode.BarcodeFormat.Code11, Textcod.Text))
Catch ex As Exception
End Try
End Sub
Sub claertext()
Textcod.Clear()
Textcat.Clear()
Textnewcod.Clear()
Textnewcod.Clear()
Textnpro.Clear()
End Sub
Private Sub Butadd_Click(sender As Object, e As EventArgs) Handles Butadd.Click
If Textcat.Text = String.Empty Or Textcod.Text = String.Empty Or Textnewcod.Text = String.Empty Or Textnpro.Text = String.Empty Then
MsgBox("جميع الحقول مطلوبة يا صديقي العزيز", MsgBoxStyle.Information, "تحذير")
Exit Sub
End If
Try
Dim query As String
If ToDo = "add" Then
query = "insert into parcode (name_pro,dic_pro,newcode,pacrcode_ro,imgparcod) values(@name_pro,@dic_pro,@newcode,@pacrcode_ro,@imgparcod) "
Else
query = "update parcode set name_pro=@name_pro,dic_pro=@dic_pro,newcode=@newcode,pacrcode_ro=@pacrcode_ro,imgparcod=@imgparcod where id= " & id
End If
Dim filesize As UInt32
Dim mstrem As New System.IO.MemoryStream
PictureBox1.Image.Save(mstrem, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrimage() As Byte = mstrem.GetBuffer
filesize = mstrem.Length
mstrem.Close()
cmd = New MySqlCommand(query, con)
cmd.Parameters.Add("@name_pro", MySqlDbType.VarChar, 200).Value = Textnpro.Text
cmd.Parameters.Add("@dic_pro", MySqlDbType.VarChar, 200).Value = Textcod.Text
cmd.Parameters.Add("@newcode", MySqlDbType.VarChar, 200).Value = Textnewcod.Text
cmd.Parameters.Add("@pacrcode_ro", MySqlDbType.VarChar, 200).Value = Textcat.Text
cmd.Parameters.Add("@imgparcod", MySqlDbType.Blob).Value = arrimage
con.Open()
cmd.ExecuteNonQuery()
claertext()
MsgBox("تم حفظ البيانات بنجاح شكرا لكم", MsgBoxStyle.Information, "الاضافة")
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Sub
Private Sub add_barcode_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim SD As New SaveFileDialog
SD.Filter = "PNG File|*.png"
If SD.ShowDialog() = DialogResult.OK Then
Try
PictureBox1.Image.Save(SD.FileName, Imaging.ImageFormat.Png)
Catch ex As Exception
End Try
End If
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
print_bar.PictureBox1.ImageLocation = PictureBox1.ImageLocation
End Sub
Friend WithEvents prntDoc As New PrintDocument()
Private Print_Image As Image
Declare Auto Function BitBlt Lib "GDI32.DLL" ( _
ByVal hdcDest As IntPtr, _
ByVal nXDest As Integer, _
ByVal nYDest As Integer, _
ByVal nWidth As Integer, _
ByVal nHeight As Integer, _
ByVal hdcSrc As IntPtr, _
ByVal nXSrc As Integer, _
ByVal nYSrc As Integer, _
ByVal dwRop As Int32) As Boolean
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'print picture
Dim prnDialog As New PrintDialog()
'Get a Graphics Object from the form
Dim FormG As Graphics = Me.PictureBox1.CreateGraphics
'Create a bitmap from that graphics
Dim i As New Bitmap(Me.Width, Me.Height, FormG)
'Create a Graphics object in memory from that bitmap
Dim memG As Graphics = Graphics.FromImage(i)
'get the IntPtr's of the graphics
Dim HDC1 As IntPtr = FormG.GetHdc
Dim HDC2 As IntPtr = memG.GetHdc
'get the picture
BitBlt(HDC2, 0, 0, Me.PictureBox1.Width, Me.PictureBox1.Height, HDC1, 0, 0, 13369376)
'Clone the bitmap so we can dispose this one
Me.Print_Image = i.Clone()
'Clean Up
FormG.ReleaseHdc(HDC1)
memG.ReleaseHdc(HDC2)
FormG.Dispose()
memG.Dispose()
i.Dispose()
prnDialog.Document = prntDoc
' Optional Dialog:
Dim r As DialogResult = prnDialog.ShowDialog
If r = DialogResult.OK Then
prntDoc.Print()
End If
End Sub
Private Sub prntDoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles prntDoc.PrintPage
e.Graphics.DrawImage(Print_Image, 0, 0)
End Sub
End Class
هذا الكود بالكامل اخي العزيز بانتظار ردك الكريم وفقك الله
RE: طباعة الباركود - عبدالله الدوسري - 28-04-18
أخوي فراس ، أنت معقد الموظوع كثير , هو أبسط من هذا بكثير .
لطباعة الباركود : الأفضل تطبعة كخط وليس كصورة :
مثال على ما أقصد ولمعرفة الفرق :
جرب غير الأكواد كما هي موظحة هنا :
كود :
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
prnDialog.Document = prntDoc
If prnDialog.ShowDialog = DialogResult.OK Then
prntDoc.Print()
End If
End Sub
Private Sub prntDoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles prntDoc.PrintPage
e.Graphics.DrawImage(Me.PictureBox1.Image.Clone, 0, 0)
e.HasMorePages = False
End Sub
هذا مشروع كمثال جرب بنفسك :
[attachment=17804]
لاحظ هنا عند الطباعة كنص :
[attachment=17805]
طباعة الباركود على شكل نص : الباركود واضح ( حتى لو قمت بالتكبير عشرات المرات ) ستظل الخطوط حادة
[attachment=17803]
لاحظ هنا عند الطباعة كصورة :
[attachment=17806]
طباعة الباركود على شكل صورة : من البداية واضح أن الباركود مضبب وغير واضح.
[attachment=17802]
ملف المشروع :
[attachment=17807]
RE: طباعة الباركود - فراس الغزي - 28-04-18
اخي العزيز بارك الله فيك انا جربت المثال الي بعثه الي وحاولت اطبع منو لكن نفس المشكلة اخي لم يطلع ولم تأخذ الطابعة اي امر للطباعة نهائيا
RE: طباعة الباركود - محمد اسماعيل - 29-04-18
تابع الموضوع دة
- هو مميزاتة بدون ادوات خارجية
- عيوبة يعتمد علي ان الباركود يظهر كصورة غير واضحة بعض الشيء ولكن بعد الطباعة علي ورق يعمل بشكل جيد . مثل ما قالة لك الاخ : عبدالله الدوسري
1- رابط الموضوع
https://www.sourcecodester.com/visual-basic-net/4353/make-barcode-vbnet.html
2- هتحتاج لضبط طابعة الباركود بحسب حجم الملصق الخاص بالطباعة بالروابط الاتية :-
- الرابط الاول لطابعة Zebra LP2824
- الرابط الثاني لمختلف الطابعات
RE: طباعة الباركود - فراس الغزي - 29-04-18
(29-04-18, 12:05 AM)محمد اسماعيل كتب : تابع الموضوع دة
- هو مميزاتة بدون ادوات خارجية
- عيوبة يعتمد علي ان الباركود يظهر كصورة غير واضحة بعض الشيء ولكن بعد الطباعة علي ورق يعمل بشكل جيد . مثل ما قالة لك الاخ : عبدالله الدوسري
1- رابط الموضوع
https://www.sourcecodester.com/visual-basic-net/4353/make-barcode-vbnet.html
2- هتحتاج لضبط طابعة الباركود بحسب حجم الملصق الخاص بالطباعة بالروابط الاتية :-
- الرابط الاول لطابعة Zebra LP2824
- الرابط الثاني لمختلف الطابعات
اخي العزيز شكرا لك انا شفت المثال وعملت مثل ما مطلوب لكن الطابعة لم تستلم اي شي من البرنامج وفقك الله تعبت من هذي المشكلة علما ان الطابعة جديدة وغير مستعملة نهائيا
RE: طباعة الباركود - عبدالله الدوسري - 29-04-18
هل قمت بطباعة أي شيء على هذة الطابعة , هل أنت متأكد أنها تعمل ,
هل الدرايفر الخاص بالطابعة مثبت بشكل صحيح, هل تستطيع عمل أمر طباعة ( Test ) من لوحة التحكم
[attachment=17809]
RE: طباعة الباركود - sendbad100 - 29-04-18
(28-04-18, 11:36 PM)عبدالله الدوسري كتب : أخوي فراس ، أنت معقد الموظوع كثير , هو أبسط من هذا بكثير .
لطباعة الباركود : الأفضل تطبعة كخط وليس كصورة :
مثال على ما أقصد ولمعرفة الفرق :
جرب غير الأكواد كما هي موظحة هنا :
كود :
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
prnDialog.Document = prntDoc
If prnDialog.ShowDialog = DialogResult.OK Then
prntDoc.Print()
End If
End Sub
Private Sub prntDoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles prntDoc.PrintPage
e.Graphics.DrawImage(Me.PictureBox1.Image.Clone, 0, 0)
e.HasMorePages = False
End Sub
هذا مشروع كمثال جرب بنفسك :
لاحظ هنا عند الطباعة كنص :
طباعة الباركود على شكل نص : الباركود واضح ( حتى لو قمت بالتكبير عشرات المرات ) ستظل الخطوط حادة
لاحظ هنا عند الطباعة كصورة :
طباعة الباركود على شكل صورة : من البداية واضح أن الباركود مضبب وغير واضح.
ملف المشروع :
بارك الله فيك
وفي عملك
اخي / عبدالله الدوسري دائما مبدع
اتمنى الامثلة المميزة مثل هذا المشروع ان تقوم بوضعة في قسم الامثلة والمشاريع
بموضوع مستقل
وعنوان واضح
مثل باقي مواضيعك
كي يستفيد منه اكثر ما يمكن من الاعضاء
وشكرا
|