PDA

View Full Version : نوشتن یه برنامه برای دریافت شناسه صیاد چک ها از بارکد خوان فیزیکی متصل به ویندوز



khikhof
پنج شنبه 11 آبان 1402, 10:33 صبح
سلام نمیدونم تاپیکم جای درستیه یا نه ...؟
ما یه بارکدخوان 2 بعدی داریم که اطلاعات qr چک ها رو بخونیم ولی ما کل اطلاعات رو لازم نداریم و میخوایم فقط شناسه صیاد که توئ اکثر بانک ها 16 رقم آخر هست رو جدا کنیم و به تکست باکسی که فعال هست وارد کنیم
و این رو هم بگم که ما از اینترنت بانک استفاده میکنیم و این تسکت باکس که میگم داخل برنامه خودمون نیست که بخوایم کاری بکنیم پس بنابراین یه برنامه میخوایم که تو پس زمینه کار کنه هر وقت اسکنر یه qr رو خوند اونو بگیره و 16 رقم آخر رو استخراج کنه و جایگذاریش کنه تو تکست باکس که فعاله ( حالا ممکنه تو هر برنامه ای باشه حتی نوت پد) آیا امکانش هست یا خیر؟

پرستو پارسایی
پنج شنبه 11 آبان 1402, 20:16 عصر
به نظرم ، از کتابخانه ZXing برای خواندن QR استفاده کنید.در کد زیر یک شیء از نوع BarcodeReader ایجاد شده و تنظیمات دیکودر QR تنظیم می‌شه . سپس یک فرم جدید ایجاد می‌شه و یک تکست باکس برای نمایش شناسه صیاد اضافه می‌شه. رویداد فشردن کلید در تکست باکس بررسی می‌کنه که آیا کلید Enter فشرده شده یا نه، و در صورت فشرده شدن، شناسه صیاد را از رشته QR استخراج و در تکست باکس نمایش می‌ده. رویداد خواندن QR از اسکنر نیز شناسه صیاد را استخراج و در تکست باکس نمایش می‌ده. برنامه در پس زمینه اجرا می‌شه و منتظر خواندن QR از اسکنر هست. این هم مثالش



using System;
using System.Windows.Forms;
using ZXing;


class Program
{
static void Main(string[] args)
{
// ایجاد یک شیء از نوع BarcodeReader
var barcodeReader = new BarcodeReader();


// تنظیم تنظیمات دیکودر QR
barcodeReader.Options = new ZXing.Common.DecodingOptions
{
PossibleFormats = new[] { BarcodeFormat.QR_CODE },
};


// ایجاد یک فرم جدید
var form = new Form();


// ایجاد یک تکست باکس برای نمایش شناسه صیاد
var textBox = new TextBox();
form.Controls.Add(textBox);


// رویداد فشردن کلید در تکست باکس
textBox.KeyDown += (sender, e) =>
{
if (e.KeyCode == Keys.Enter)
{
// استخراج شناسه صیاد از رشته QR
string qrString = textBox.Text;
string hunterID = qrString.Substring(qrString.Length - 16);


// نمایش شناسه صیاد در تکست باکس
textBox.Text = hunterID;
}
};


// رویداد خواندن QR از اسکنر
barcodeReader.OnBarcodeScanned += (result) =>
{
// استخراج شناسه صیاد از رشته QR
string qrString = result.Text;
string hunterID = qrString.Substring(qrString.Length - 16);


// نمایش شناسه صیاد در تکست باکس
textBox.Invoke((MethodInvoker)(() => textBox.Text = hunterID));
};


// اجرای برنامه در پس زمینه
Application.Run(form);
}




امیدوارم منظورتان رو درست متوجه شده باشم و این مطلب مفید واقع بشه

رامین مرادی
دوشنبه 15 آبان 1402, 11:10 صبح
نه ایشون منظورشون این بود برنامه شون تو پس زمینه اجرا بشه و وقتی بارکد خوانده میشه عدد رو بگیره و یه تغییری ایجاد بشه و هر جا که قراره عدد نوشته بشه تغییر یافته نوشته بشه.
صرفا حالا اونجا میتونه یه صفحه وب باشه یا هر برنامه ای دیگه.
به نظرم برید سمت تکنولوژی هوکینگ و با کتابخانه user32.dll کلید های فشرده شده(اسکنر ها هم یه جورایی انگار کلید فشار داده شدند) در سطح سیستم عامل رو دریافت کنید. و بعدش با همون کتابخونه تابع های keybd_event کلیدد های خودتون رو دوباره ارسال کنید(در لحظه).
بازم سرچ کنید یه کم پیچیده هست و باید مطالعه بیشتری کنید.

khikhof
چهارشنبه 17 آبان 1402, 07:40 صبح
سلام دوست عزیز بله منظورم همینه بارکد خوان به عنوان یه صفحه کلید تو سیستم ویندوز شناخته میشه و اعداد هم به یکباره به مقصد نمیره و دونه دونه اعداد رو تایپ میکنه !!! ولی بانک ها به غیر از برنامه های موبایلی که اسکنر رو گذاشتن و از دوربین گوشی برای این کار استفاده میکنن برای اینترنت بانک هاشون فکری نکردن و ما با این مشکلات مواجه شدیم و طی تحقیقات من خود اسکنر ها هم برنامه خاصی برای این موارد ندارن :(
من از تکنولوژی هوکینگ اطلاعی ندارم ولی به نظرم پیچیده اس :|| حالا بازم سرچ میکنم اگه کس دیگه ای کمکم کنه من بتونم این برنامه رو بنویسم به صورت رایگان برای استفاده همه میزارمش

shahryari
دوشنبه 27 آذر 1402, 13:12 عصر
سلام
فرمت بارکد روی چک ها (حد اقل 10 مدل بانک را تست کردم) بعضیایش یکیه و بعضیاش متفاوت،
ابتدا باید split کنی بر اساس "\r\n" همون کارکتر با کد اسکی 13 و 10
بعد با ریجکس یک پترن ایجاد کنی که بمحض دریافت رشته از بارکد خوان در ورودی ، اون آیتم که 16 رقمه و عدد هست (غیر رشته) رو دریافت کنی که میشه همون صیاد
موفق باشی
عکس اسکن شده از بارکد چک رفاه که اکثرا این فرمت هست ولی چکهایی اسکن کردم که به این روش فرمت نشده بودند (سپه و کشاورزی و انصار سابق و ...)

155158