You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
8.5 KiB
140 lines
8.5 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "64ad4ddb4de81a18b7252e968f10b404",
|
|
"translation_date": "2025-08-27T00:07:35+00:00",
|
|
"source_file": "6-consumer/lessons/3-spoken-feedback/single-board-computer-set-timer.md",
|
|
"language_code": "ur"
|
|
}
|
|
-->
|
|
# ٹائمر سیٹ کریں - ورچوئل IoT ہارڈویئر اور راسپبیری پائی
|
|
|
|
اس سبق کے اس حصے میں، آپ اپنی سرور لیس کوڈ کو کال کریں گے تاکہ تقریر کو سمجھا جا سکے، اور نتائج کی بنیاد پر اپنے ورچوئل IoT ڈیوائس یا راسپبیری پائی پر ایک ٹائمر سیٹ کریں۔
|
|
|
|
## ٹائمر سیٹ کریں
|
|
|
|
تقریر سے متن میں تبدیل ہونے والے متن کو آپ کی سرور لیس کوڈ میں بھیجنا ضروری ہے تاکہ اسے LUIS کے ذریعے پروسیس کیا جا سکے، اور ٹائمر کے لیے سیکنڈز کی تعداد واپس حاصل کی جا سکے۔ ان سیکنڈز کی تعداد کو ٹائمر سیٹ کرنے کے لیے استعمال کیا جا سکتا ہے۔
|
|
|
|
ٹائمرز کو Python کی `threading.Timer` کلاس کے ذریعے سیٹ کیا جا سکتا ہے۔ یہ کلاس ایک تاخیر کا وقت اور ایک فنکشن لیتی ہے، اور تاخیر کے وقت کے بعد، فنکشن کو چلایا جاتا ہے۔
|
|
|
|
### کام - متن کو سرور لیس فنکشن میں بھیجیں
|
|
|
|
1. VS Code میں `smart-timer` پروجیکٹ کھولیں، اور یقینی بنائیں کہ اگر آپ ورچوئل IoT ڈیوائس استعمال کر رہے ہیں تو ٹرمینل میں ورچوئل ماحول لوڈ ہو۔
|
|
|
|
1. `process_text` فنکشن کے اوپر، ایک فنکشن `get_timer_time` کا اعلان کریں تاکہ آپ کے بنائے گئے REST اینڈ پوائنٹ کو کال کیا جا سکے:
|
|
|
|
```python
|
|
def get_timer_time(text):
|
|
```
|
|
|
|
1. اس فنکشن میں درج ذیل کوڈ شامل کریں تاکہ کال کرنے کے لیے URL کو ڈیفائن کیا جا سکے:
|
|
|
|
```python
|
|
url = '<URL>'
|
|
```
|
|
|
|
`<URL>` کو اپنے کمپیوٹر یا کلاؤڈ میں بنائے گئے REST اینڈ پوائنٹ کے URL سے تبدیل کریں۔
|
|
|
|
1. اس فنکشن میں درج ذیل کوڈ شامل کریں تاکہ متن کو JSON پراپرٹی کے طور پر کال میں پاس کیا جا سکے:
|
|
|
|
```python
|
|
body = {
|
|
'text': text
|
|
}
|
|
|
|
response = requests.post(url, json=body)
|
|
```
|
|
|
|
1. اس کے نیچے، رسپانس پے لوڈ سے `seconds` کو حاصل کریں، اور اگر کال ناکام ہو تو 0 واپس کریں:
|
|
|
|
```python
|
|
if response.status_code != 200:
|
|
return 0
|
|
|
|
payload = response.json()
|
|
return payload['seconds']
|
|
```
|
|
|
|
کامیاب HTTP کالز 200 رینج میں اسٹیٹس کوڈ واپس کرتی ہیں، اور آپ کی سرور لیس کوڈ 200 واپس کرتی ہے اگر متن پروسیس ہو اور اسے ٹائمر سیٹ کرنے کے ارادے کے طور پر پہچانا جائے۔
|
|
|
|
### کام - بیک گراؤنڈ تھریڈ پر ٹائمر سیٹ کریں
|
|
|
|
1. فائل کے اوپر درج ذیل امپورٹ اسٹیٹمنٹ شامل کریں تاکہ threading Python لائبریری کو امپورٹ کیا جا سکے:
|
|
|
|
```python
|
|
import threading
|
|
```
|
|
|
|
1. `process_text` فنکشن کے اوپر، ایک فنکشن شامل کریں تاکہ جواب کو بول سکیں۔ فی الحال یہ صرف کنسول پر لکھے گا، لیکن اس سبق کے بعد یہ متن کو بولے گا۔
|
|
|
|
```python
|
|
def say(text):
|
|
print(text)
|
|
```
|
|
|
|
1. اس کے نیچے ایک فنکشن شامل کریں جو ٹائمر کے مکمل ہونے پر اعلان کرے گا:
|
|
|
|
```python
|
|
def announce_timer(minutes, seconds):
|
|
announcement = 'Times up on your '
|
|
if minutes > 0:
|
|
announcement += f'{minutes} minute '
|
|
if seconds > 0:
|
|
announcement += f'{seconds} second '
|
|
announcement += 'timer.'
|
|
say(announcement)
|
|
```
|
|
|
|
یہ فنکشن ٹائمر کے لیے منٹ اور سیکنڈز کی تعداد لیتا ہے، اور ایک جملہ بناتا ہے جو بتاتا ہے کہ ٹائمر مکمل ہو گیا ہے۔ یہ منٹ اور سیکنڈز کی تعداد کو چیک کرتا ہے، اور صرف وہی وقت شامل کرتا ہے جس کی کوئی ویلیو ہو۔ مثال کے طور پر، اگر منٹ کی تعداد 0 ہو تو صرف سیکنڈز کو پیغام میں شامل کیا جاتا ہے۔ یہ جملہ پھر `say` فنکشن کو بھیجا جاتا ہے۔
|
|
|
|
1. اس کے نیچے، درج ذیل `create_timer` فنکشن شامل کریں تاکہ ایک ٹائمر بنایا جا سکے:
|
|
|
|
```python
|
|
def create_timer(total_seconds):
|
|
minutes, seconds = divmod(total_seconds, 60)
|
|
threading.Timer(total_seconds, announce_timer, args=[minutes, seconds]).start()
|
|
```
|
|
|
|
یہ فنکشن ٹائمر کے لیے کل سیکنڈز لیتا ہے جو کمانڈ میں بھیجے جائیں گے، اور انہیں منٹ اور سیکنڈز میں تبدیل کرتا ہے۔ پھر یہ کل سیکنڈز کا استعمال کرتے ہوئے ایک ٹائمر آبجیکٹ بناتا اور شروع کرتا ہے، `announce_timer` فنکشن اور ایک لسٹ جس میں منٹ اور سیکنڈز شامل ہوں، پاس کرتا ہے۔ جب ٹائمر ختم ہو جائے گا، یہ `announce_timer` فنکشن کو کال کرے گا، اور اس لسٹ کے مواد کو پیرامیٹرز کے طور پر پاس کرے گا - لہذا لسٹ کا پہلا آئٹم `minutes` پیرامیٹر کے طور پر پاس ہوتا ہے، اور دوسرا آئٹم `seconds` پیرامیٹر کے طور پر۔
|
|
|
|
1. `create_timer` فنکشن کے آخر میں کچھ کوڈ شامل کریں تاکہ ایک پیغام بنایا جا سکے جو صارف کو بتایا جائے کہ ٹائمر شروع ہو رہا ہے:
|
|
|
|
```python
|
|
announcement = ''
|
|
if minutes > 0:
|
|
announcement += f'{minutes} minute '
|
|
if seconds > 0:
|
|
announcement += f'{seconds} second '
|
|
announcement += 'timer started.'
|
|
say(announcement)
|
|
```
|
|
|
|
دوبارہ، یہ صرف وہی وقت شامل کرتا ہے جس کی کوئی ویلیو ہو۔ یہ جملہ پھر `say` فنکشن کو بھیجا جاتا ہے۔
|
|
|
|
1. `process_text` فنکشن کے آخر میں درج ذیل شامل کریں تاکہ متن سے ٹائمر کے لیے وقت حاصل کیا جا سکے، پھر ٹائمر بنایا جا سکے:
|
|
|
|
```python
|
|
seconds = get_timer_time(text)
|
|
if seconds > 0:
|
|
create_timer(seconds)
|
|
```
|
|
|
|
ٹائمر صرف اس وقت بنایا جاتا ہے جب سیکنڈز کی تعداد 0 سے زیادہ ہو۔
|
|
|
|
1. ایپ چلائیں، اور یقینی بنائیں کہ فنکشن ایپ بھی چل رہی ہو۔ کچھ ٹائمر سیٹ کریں، اور آؤٹ پٹ دکھائے گا کہ ٹائمر سیٹ ہو رہا ہے، اور پھر دکھائے گا جب یہ ختم ہو جائے:
|
|
|
|
```output
|
|
pi@raspberrypi:~/smart-timer $ python3 app.py
|
|
Set a two minute 27 second timer.
|
|
2 minute 27 second timer started.
|
|
Times up on your 2 minute 27 second timer.
|
|
```
|
|
|
|
> 💁 آپ اس کوڈ کو [code-timer/pi](../../../../../6-consumer/lessons/3-spoken-feedback/code-timer/pi) یا [code-timer/virtual-iot-device](../../../../../6-consumer/lessons/3-spoken-feedback/code-timer/virtual-iot-device) فولڈر میں تلاش کر سکتے ہیں۔
|
|
|
|
😀 آپ کا ٹائمر پروگرام کامیاب رہا!
|
|
|
|
---
|
|
|
|
**ڈسکلیمر**:
|
|
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ |