انجمن‌های فارسی اوبونتو

جامعه کاربران => معرفی نرم‌افزار => نویسنده: { AliReaza } در 02 آذر 1394، 05:53 ب‌ظ

عنوان: خواندن Barcode با WebCam
ارسال شده توسط: { AliReaza } در 02 آذر 1394، 05:53 ب‌ظ
سلام دوستان

شاید براتون پیش اومده باشه که نیاز باشه تا مثلا بیش از ۳ تا قبض را پرداخت کنید.
یکی از سختی های این کار وارد کردن شناسه ها است.

البته برنامه های برای Mobile وجود داره که می تونند این کارو انجام بدن.
اما بعضی مواقعه هست که ممکنه Camera موجود در Mobile کیفیت خوبی نداشته باشه. یا اصلا Camera نداشته باشه.

حتی ممکنه شما بخواید در جایی مثل شرکت از BarCode استفاده کنید، اما به هر دلیلی دستگاه BarCode خوان خراب شده.

و.....


با استفاده از ZBar میتونید این کارو انجام بدید. البته اضافه کنم که نیاز به برنامه نویسی دارید تا خروجی ‌BarCode را به برنامه مورد نظر ارسال کنید.

برای نصب در Ubuntu از دستور زیر استفاده کنید:

sudo apt-get install zbar-tools
بعد از نصب ۲ گزینه به خط فرمان اضافه میشه:
۱- zbarcam
۲- zbarimg

از اسمشون معلومه که برای چی هستند.

در اینجا من zbarcam را توضیح میدم.

وقتی zbarcam را اجرا کنید پنجره براتون باز میشه که خروجی WebCam است.

نکته: اگر چند WebCam دارید، به صورت زیر اجرا کنید:
zbarcam /dev/video*
بجای * شماره WebCam را وارد کنید.

حالا BarCode مورد نظر را جلوی WebCam بگیرید و به خط فرمان نگاه کنید، اگر زیاد تکون ندید باید بهتون BarCode نمایش بده.

حالا شما می تونید با استفاده از یک مقدار برنامه نویسی تنظیم کنید که BarCode به برنامه مورد نظر ارسال شود.

برای نمونه یک Script ساده نوشتم که می تواند اطلاعات قبوض آب، برق، گاز، تلفن ثابت، تلفن همراه و شهرداری را نمایش دهد.

پیش نیاز ها: zbar-tools و zenity
#!/bin/bash

tmp=/tmp/barcode
zbarcam > $tmp &
pid=$!

while [[ ! -s $tmp ]] ; do
    sleep 1
done

kill $pid

barcode=$(cat $tmp)
rm $tmp

barcode=${barcode:9}

bill_type=${barcode:11:1}
bill_id="$(echo ${barcode:0:13} | sed 's/^0*//')"
pay_id="$(echo ${barcode:13:13} | sed 's/^0*//')"
amount="$(echo ${barcode:13:8} | sed 's/^0*//')000"

echo "Barcode: $barcode"
echo "Bill Type: $bill_type"
echo "Bill ID: $bill_id"
echo "Pay ID: $pay_id"
echo "Amount: $amount"

case "$bill_type" in

1)
    bill_type="آب"
    ;;
2)
    bill_type="برق"
    ;;
3)
    bill_type="گاز"
    ;;
4)
    bill_type="تلفن ثابت"
    ;;
5)
    bill_type="تلفن همراه"
    ;;
6)
    bill_type="شهرداری"
    ;;
*)
    bill_type="قبض نامعتبر"
    ;;
esac

zenity --info --title="مشحصات قبض $bill_type" --text="شناسه قبض: $bill_id\n\nشناسه پرداخت: $pay_id\n\nمبلغ قابل پرداخت: $amount ریال"
عنوان: پاسخ : خواندن Barcode با WebCam
ارسال شده توسط: hamidrezakp در 02 آذر 1394، 07:14 ب‌ظ
عالی  :D