You are on page 1of 522

‫‪01/12/2020‬‬

‫‪LabVIEW‬‬
‫اعداد المهندس ‪:‬عصام الجنبي‬

‫قناة دليل طلبة الدراسات العليا قسم الهندسة الكهربائية ‪/‬العراق ع التليغرام م‪/‬احمد العزاوي‬
‫برنامج الالب فيو ‪ LabVIEW‬هو برنامج من البرامج الهندسية وتحديداً‬
‫البرمجية‪ ،‬و ‪ LabVIEW‬هي اختصاراً لـ ‪( Laboratory Virtual‬‬
‫)‪Instrumentation Engineering Workbench‬وهي‬
‫واجهة برمجة هندسية من انتاج شركة ناشيونال إنسترومنتس ‪NI‬‬
‫وهي نفس الشركة المنتجة لبرنامج ‪ Multisim‬وبرامج كثيرة أخرى‪.‬‬

‫برنامج البرمجة الرسومية الذي اضحى يوفر عليك الوقت و الجهد في‬
‫البرمجة و كذلك في تطوير المنتجات‬
‫من انتاج و تطوير شركة‪National Instruments‬‬
‫له الكثير من االدوات و الموديوالت المساعدة‬
‫و دعما للمحتوى العربي …‪ .‬اقدم لكم كتاب في تعليم الالب فيو‬
‫برنامج الب فيو ‪ LabVIEW‬هو عبارة عن لغة برمجة رسومية‬
‫‪Graphical Language‬؛ بمعنى انه يقوم بعملية البرمجة ولكن‬
‫بإستخدام الرسومات وتتم هذه العملية من خالل دوال ورموز لها وظيفة‬
‫معينة وهذا النوع من البرمجة وفر على الكثير على المهندسين الوقت‬

‫يتم استخدام برنامج الالب فيو ‪ LabVIEW‬في تطبيقات كثيرة مثل‪:‬‬


‫صناعة اإللكترونيات والطائرات والسيارات والحاسوب وفي المصانع‬
‫ومراكز االبحاث واالتصاالت الالسلكية والكثير والكثير من التطبيقات‬
‫االخرى‬
‫اﻟﺪرس اﻻول‬

‫ﻣﻘﺪﻣﺔ ﻓﻰ ‪LabVIEW‬‬
‫اﻟﻬﺪف ‪:‬‬
‫اﻟﺘﻌﺮف ﻋﻠﻰ ﺑﻴﺌﺔ ‪.LabVIEW‬‬
‫اﻟﻤﺤﺘﻮﻳﺎت ‪:‬‬
‫‪ (١‬ﻣﺎ هﻰ ‪ Instruments Virtual‬وﻣﺎ هﻰ ﻋﻨﺎﺻﺮهﺎ‪.‬‬

‫‪ (٢‬اﻟﺘﻌﺮف ﻋﻠﻰ ﺷﺮﻳﻂ اﻻدوات ﻓﻰ ‪.Panel Front‬‬

‫‪(٣‬اﻟﺘﻌﺮف ﻋﻠﻰ ﺷﺮﻳﻂ اﻻدوات ﻓﻰ ‪.Block Diagram‬‬

‫‪ (٤‬اﻟﺘﻌﺮف ﻋﻠﻰ ‪. Tools Palette‬‬

‫‪ (٥‬اﻟﺘﻌﺮف ﻋﻠﻰ ‪.Controls Palette‬‬

‫‪ (٦‬اﻟﺘﻌﺮف ﻋﻠﻰ ‪.Function Palette‬‬

‫‪ (٧‬اﻟﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ ﺗﺤﻤﻴﻞ ﻣﺜﺎل و ﺗﻨﻔﻴﺬﻩ‪.‬‬

‫‪ (٨‬اﻟﻤﺼﺪر ‪.‬‬

‫ﻣﺎ هﻰ ‪Instruments Virtual‬؟‬


‫ﺗﺴﻤﻰ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﺼﻤﻤﺔ ﺑﻠﻐﺔ ‪ LabVIEW‬ﺑﺎﺳﻢ )‪.Virtual Instruments (VIs‬‬

‫وهﻰ ﻣﻠﻔﺎت ذات اﻣﺘﺪاد ‪.vi‬‬

‫و ﺗﺘﻜﻮن ‪ VIs‬ﻣﻦ ﺛﻼث ﻋﻨﺎﺻﺮ اﺳﺎﺳﻴﺔ ‪:‬‬

‫وهﻰ ‪ The Front Panel‬و ‪ The Block Diagram‬و ‪The Icon and‬‬
‫‪.Connectors Pane‬‬

‫‪: The Front Panel (١‬‬


‫هﻰ واﺟﻬﺔ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
. Indicators ‫ و‬Controls ‫ ﺑﻮاﺳﻄﺔ‬Front Panel The ‫و ﻳﺘﻢ ﺑﻨﺎء‬
‫‪: Controls‬‬
‫هﻰ وﺣﺪات اﻻدﺧﺎل ﻓﻰ ‪ VI‬ﻣﺜﻞ ‪ knobs‬و ‪ push buttons‬و ‪ dials‬و ﻏﻴﺮهﺎ ‪.‬‬

‫و هﻰ ﺗﻤﺎﺛﻞ وﺣﺪات اﻻدﺧﺎل ﻓﻰ اﻻﺟﻬﺰة اﻻﻟﻜﺘﺮوﻧﻴﺔ اﻟﺤﻘﻴﻘﻴﺔ‪.‬‬

‫‪:Indicators‬‬
‫هﻰ وﺣﺪات اﻻﺧﺮاج او اﻻﻇﻬﺎر ﻓﻰ ‪ VI‬ﻣﺜﻞ ‪ graphs‬و ‪ leds‬و ﻏﻴﺮهﺎ‪.‬‬

‫و هﻰ ﺗﻤﺎﺛﻞ وﺣﺪات اﻻﺧﺮاج و اﻻﻇﻬﺎر ﻓﻰ اﻻﺟﻬﺰة اﻻﻟﻜﺘﺮوﻧﻴﺔ اﻟﺤﻘﻴﻘﻴﺔ‪.‬‬


‫و ﻣﺎ ﻳﺤﺪث ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ اﻧﻪ ﺗﻨﺘﻘﻞ اﻟﺒﻴﺎﻧﺎت ﻣﻦ ‪ Controls‬اﻟﻰ ‪ Block Diagram‬ﻟﻴﺘﻢ‬
‫ﺗﻨﻔﻴﺬ آﻮد اﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﻴﻬﺎ ﺛﻢ ﺗﻈﻬﺮ اﻟﻨﺘﺎﺋﺞ ﻣﻦ ‪ Block Diagram‬اﻟﻰ ‪. Indicators‬‬

‫‪: The Block Diagram (٢‬‬


‫هﻮ آﻮد اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬى ﻳﺘﻢ ﺗﺼﻤﻴﻤﻪ ﺑﺎﻟﺮﺳﻢ ‪.‬‬
terminal ‫ ﻳﻮﺟﺪ ﺑﺎﻟﻤﻘﺎﺑﻞ ﻟﻪ‬Front Panel ‫ ﻣﻮﺟﻮد ﻓﻰ‬Indicator ‫ او‬Control ‫ﻟﻜﻞ‬
. The Block Diagram ‫ﻓﻰ‬

‫ او‬Control ‫ ﺑﻤﺠﺮد وﺿﻊ‬Diagram Block ‫ ﻳﻮﺿﻊ ﺗﻠﻘﺎﺋﻴﺎ ﻓﻰ‬terminal ١‫هﺬ‬


.Front Panel ‫ ﻓﻰ‬Indicator

‫ اﻟﺨﺎص‬terminal ‫ ﻳﺤﺬف‬Front Panel ‫ ﻣﻦ‬Indicator ‫ او‬Control ‫وﻋﻨﺪ ﺣﺬف اى‬


.‫ﺑﻪ ﺗﻠﻘﺎﺋﻴﺎ‬

.‫ اﻟﻤﻘﺎﺑﻞ ﻟﻪ‬Indicator ‫ او‬Control ‫ اﻻ ﺑﺤﺬف‬terminal ‫وﻻ ﺗﺴﺘﻄﻴﻊ ﺣﺬف‬


‫ﻳﺤﺘﻮى ‪ The Block Diagram‬ﺑﺎﻻﺿﺎﻓﺔ اﻟﻰ ‪ terminals‬ﻋﻠﻰ ‪ SubVIs‬و دوال‬

‫)‪ (Functions‬و ﺛﻮاﺑﺖ و هﻴﺎآﻞ ﺑﻴﺎﻧﻴﺔ )‪ (Structures‬ووﺻﻼت )‪ (Wires‬اﻟﺘﻰ ﺗﻜﻮن‬

‫ﻣﺴﺎر اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫‪: The Icon and Connector Pan(٣‬‬

‫ﻟﻜﻞ ‪ VI‬ﻳﻮﺟﺪ ‪ Icon‬ﺗﻈﻬﺮ ﻓﻰ اﻟﻄﺮف اﻻﻋﻠﻰ ﻋﻠﻰ اﻟﻴﻤﻴﻨﻤﻦ اﻟﻨﺎﻓﺬة ‪.‬‬

‫هﺬة ‪ Icon‬ﻳﻤﻜﻦ ان ﺗﺤﺘﻮى ﻋﻠﻰ رﺳﻢ او آﺘﺎﺑﺔ او آﻼهﻤﺎ‪.‬‬


‫هﺬة ‪ Icon‬ﺗﻤﺜﻞ ‪ VI‬ﻋﻨﺪﻣﺎ ﺗﺴﺘﺨﺪم آﺪاﻟﻪ ﻓﻰ ‪ VI‬اﺧﺮى و ﺗﺴﻤﻰ ‪ VI‬اﻟﻤﺴﺘﺨﺪﻣﺔ ﻋﻨﺪﺋﺬ ﺑﺎﺳﻢ‬
‫‪.SubVI‬‬

‫‪: Connectors Pane‬‬


‫هﻰ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ وﺻﻼت ﺗﺒﻴﻦ و ﺗﺤﺪد ﻃﺮﻳﻘﺔ وﺻﻞ ‪ SubVI‬ﻓﻰ ‪.Diagram Block‬‬
‫و ﺗﻌﺘﺒﺮ هﺬة اﻟﻮﺻﻼت هﻰ اﻟﻤﺪاﺧﻞ و اﻟﻤﺨﺎرج ﻟﻠـ ‪. SubVI‬‬

‫ﺗﻜﻤﻦ ﻗﻮة ‪ LabVIEW‬ﻓﻰ اﻟﻬﻴﻜﻞ اﻟﺒﻨﺎﺋﻰ ﻟﺒﺮاﻣﺠﻪ ‪ .‬ﺣﻴﺚ ان آﻞ ‪ VI‬ﻳﻤﻜﻦ ان ﺗﻜﻮن ‪SubVI‬‬
‫ﻓﻰ ‪ VI‬اﺧﺮى‪.‬‬

‫و ﻻ ﻳﻮﺟﺪ ﺣﺪ ﻣﻌﻴﻦ ﻟﻌﺪد ‪ SubVI‬اﻟﻤﻮﺟﻮدة ﻓﻰ ‪.VI‬‬


‫ﺷﺮﻳﻂ اﻻدوات ﻓﻰ ‪Front Panel‬‬
‫ﻳﺴﺘﺨﺪم ﻓﻰ ﺗﻨﻔﻴﺬ و ﺗﺼﻤﻴﻢ ‪. VI‬‬

‫‪.‬‬ ‫‪ .‬اذا آﺎن هﻨﺎك ﺧﻄﺄ ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ ﺗﻈﻬﺮ هﻜﺬا‬ ‫ﻟﺘﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ‪ .‬وﺗﻜﻮن هﻜﺬا‬

‫ﻟﻠﺘﻨﻔﻴﺬ اﻟﻤﺴﺘﻤﺮ ﻟﻠﺒﺮﻧﺎﻣﺞ ﺣﺘﻰ ﺗﻮﻗﻒ اﻟﺒﺮﻧﺎﻣﺞ او اﻟﻀﻐﻂ ﻋﻠﻴﻪ ﻣﺮة اﺧﺮى و ﻳﻈﻬﺮ اﺛﻨﺎء اﻟﺘﻨﻔﻴﺬ‬
‫اﻟﻤﺴﺘﻤﺮ ﻟﻠﺒﺮﻧﺎﻣﺞ هﻜﺬا ‪.‬‬

‫ﻟﻮﻗﻒ اﻟﺒﺮﻧﺎﻣﺞ ﻧﻬﺎﺋﻴﺎ وﻓﻰ اﻟﺤﺎل وهﻰ ﻣﺘﺎﺣﺔ ﻓﻘﻂ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫ﻟﻮﻗﻒ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻣﺆﻗﺘﺎ و ﻳﺴﻜﻤﻞ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻪ ﻣﺮة اﺧﺮى‪.‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻓﻰ ﺣﺎﻟﺔ اﻟﻮﻗﻒ اﻟﻤﺆﻗﺖ ﻳﻈﻬﺮ ‪ LabVIEW‬ﻣﻜﺎن ﺗﻮﻗﻒ اﻟﺮﻧﺎﻣﺞ ﻓﻰ ‪Block‬‬
‫‪.Diagram‬‬

‫ﻗﺎﺋﻤﺔ ﻣﻨﺴﺪﻟﻪ ﻟﺘﻐﻴﻴﺮ ﺧﺼﺎﺋﺺ اﻟﻨﺼﻮص اﻟﻤﻜﺘﻮﺑﺔ ‪ :‬اﻟﻠﻮن ‪ ،‬اﻟﺤﺠﻢ ‪،‬‬


‫ﻧﻮع اﻟﺨﻂ‪.‬‬

‫ﻗﺎﺋﻤﺔ ﻣﻨﺴﺪﻟﻪ ﻟﻤﺤﺎذاة اﻟﻮﺣﺪات ﻣﻊ ﺑﻌﻀﻬﺎ‪.‬‬

‫ﻗﺎﺋﻤﺔ ﻣﻨﺴﺪﻟﻪ ﻟﺘﻨﻈﻴﻢ اﻟﻤﺴﺎﻓﺎت ﺑﻴﻦ اﻟﻮﺣﺪات‪.‬‬

‫ﻗﺎﺋﻤﺔ ﻣﻨﺴﺪﻟﻪ ﻟﺘﺮﺗﻴﺐ اﻟﻮﺣﺪات اﻟﺘﻰ ﻓﻮق ﺑﻌﻀﻬﺎ ﻓﻬﻰ ﺗﺤﺪد ﻣﻦ ﻳﻈﻬﺮ ﻓﻰ اﻻﻣﺎم وﻣﻦ ﻳﻜﻮن‬
‫ﻓﻰ اﻟﺨﻠﻒ‪.‬‬

‫ﺷﺮﻳﻂ اﻻدوات ﻓﻰ ‪Diagram Block‬‬

‫‪ : Highlight‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻬﺎ ﻳﺘﻢ اﺳﺘﻌﺮض آﻴﻒ ﻳﺘﻢ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ وآﻴﻔﻴﺔ اﻧﺘﻘﺎل اﻟﺒﻴﺎﻧﺎت و‬
‫‪.‬‬ ‫ﺗﻈﻬﺮ ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫‪ : Step Into‬ﻟﺘﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺧﻄﻮة واﺣﺪة ‪ .‬وﺑﻬﺎ ﺗﺴﺘﻄﻴﻊ ان ﺗﺪﺧﻞ ﻓﻰ ‪ subVI‬او اﻟﻬﻴﺎآﻞ‬
‫اﻟﺘﻜﺮارﻳﺔ )‪ (loops‬ﻟﺘﻨﻔﻴﺬهﺎ ﺧﻄﻮة ﺧﻄﻮة‪.‬‬

‫‪ : Step Over‬ﻟﺘﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺢ ﺧﻄﻮة واﺣﺪة ﻣﻊ آﻞ ﺿﻐﻄﺔ ﻣﻊ اﻋﺘﺒﺎر ان ‪ SubVI‬او‬


‫‪ Loop‬ﺗﻨﻔﺬ ﻓﻰ ﺧﻄﻮة واﺣﺪة دون اﻟﺪﺧﻮل ﻓﻴﻬﺎ‪.‬‬
‫‪ : Step Out‬ﻟﻠﺨﺮوج ﻣﻦ ‪ loop‬او ‪ SubVI‬ﻓﻰ ﺧﻄﻮة واﺣﺪة‪.‬‬

‫‪Tools Palette‬‬
‫ﻟﻮﺣﺔ اﻻدوات‬
‫ﻳﺘﻢ ﻓﺘﺤﻬﺎ ﻣﻦ‪:‬‬
‫‪Show Tools Palette<< Window‬‬

‫‪Palette Tools‬‬

‫وهﻰ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ اﻻدوات اﻻﺳﺎﺳﻴﺔ ﻓﻰ ﺑﻴﺌﺔ ‪ LabVIEW‬ﻟﺘﺼﻤﻴﻢ و اﺧﺘﺒﺎرو ﺗﻨﻔﻴﺬ ‪. VI‬‬
‫‪ : Operating Tool‬ﻟﺘﻐﻴﻴﺮ ﻗﻴﻢ ‪ Controls‬او ﻧﺺ ﻣﻜﺘﻮب‪ .‬وﻋﺎدة ﻣﺎ ﺗﺴﺘﺨﺪم اﺛﻨﺎء ﺗﻨﻔﻴﺬ‬
‫اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪ : Positional Tool‬ﻻﺧﺘﻴﺎر و ﺗﺤﺮﻳﻚ و ﺗﻐﻴﺮ ﺣﺠﻢ اﻟﻮﺣﺪات )‪.(Objects‬‬

‫‪ : Labeling Tool‬ﻟﺘﺤﺮﻳﺮ اى ﻧﺺ او ﻋﻤﻞ ﻧﺺ ﻓﻰ اى ﻣﻜﺎن‪.‬‬

‫‪ : Wiring Tool‬ﻟﺮﺑﻂ اﻟﻮﺣﺪات ﻓﻰ ‪.Block Diagram‬‬

‫‪ : Object Shortcut Menu‬ﺗﻤﺎﺛﻞ اﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻟﻴﻤﻦ ﻟﻠﻤﺆﺷﺮ‪.‬‬

‫‪ : Scrolling Tool‬ﻟﻌﻤﻞ اﻧﺰﻻق ﻟﻠﻨﺎﻓﺬة ﺑﺪون اﺳﺘﺨﺪام ﺷﺮﻳﻂ اﻻﻧﺰﻻق‪.‬‬

‫‪ : Breakpoint‬ﻟﻌﻤﻞ ﻧﻘﻄﺔ ﺗﻮﻗﻒ ﻳﺘﻮﻗﻒ ﻋﻨﺪهﺎ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻦ اﻟﺘﻨﻔﻴﺬ‪ .‬ﺗﺴﺘﺨﺪم ﻓﻰ اﺧﺘﺒﺎر‬


‫اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪ : Probe Tool‬ﺗﺴﺘﺨﺪم ﻟﻌﻤﻞ ﻧﻘﻄﺔ ﻋﺮض ﺑﻴﺎﻧﺎت )‪ (Probe‬ﻟﻌﺮض اﻟﻘﻴﻢ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺮﻧﺎﻣﺞ‬
‫ﻻﺧﺘﺒﺎرﻩ او ﻣﻌﺎﻟﺠﺔ اﺧﻄﺄﻩ‪.‬‬

‫‪ : Color Copy Tool‬ﻻﺧﺬ ﻗﻴﻢ اﻟﻠﻮن ﻣﻦ اى ﻣﻮﺿﻊ ﻓﻰ اﻟﻨﺎﻓﺬة ﻟﻴﺘﻢ اﺳﺘﺨﺪاﻣﻪ ﺑﻮاﺳﻄﺔ‬
‫‪.Coloring Tool‬‬

‫‪ : Coloring Tool‬ﻟﺘﻠﻮﻳﻦ اﻟﻮﺣﺪات‪.‬‬

‫‪Controls palette‬‬
‫ﻟﻮﺣﺔ ادوات اﻟﺘﺤﻜﻢ‬
‫ﻳﺘﻢ ﻓﺘﺤﻬﺎ ﻣﻦ ﻧﺎﻓﺬة ‪: Front Panel‬‬
‫‪Controls palette Show <<Window‬‬
!
!Error

CONTROLS ALL
‫ﻳﻤﻜﻦ اﻳﻀﺎ ان ﺗﻔﺘﺢ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻔﺄرة ﻋﻠﻰ ﻧﺎﻓﺬة ‪Front‬‬
‫‪. Panel‬‬
‫ﺛﻢ ﺑﺎﻟﻤﺆﺷﺮ ﻋﻠﻰ ‪Controls All‬‬
‫‪!Error‬‬

‫‪Functions Palette‬‬
‫ﻟﻮﺣﺔ اﻟﺪوال‬
‫ﻳﺘﻢ ﻓﺘﺤﻬﺎ ﻣﻦ ﻧﺎﻓﺬة ‪: Block Diagram‬‬
‫‪Functions palette Show <<Window‬‬
!Error

Palette Functions
‫ﻟﻮﺣﺔ اﻟﺪوال‬
‫ﻳﻤﻜﻦ اﻳﻀﺎ ان ﺗﻔﺘﺢ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻔﺄرة ﻋﻠﻰ ﻣﻮﺿﻊ ﻓﻰ ﻧﺎﻓﺬة‬
‫‪.Block Diagram‬‬
‫ﺛﻢ ﺑﺎﻟﻤﺆﺷﺮ ﻋﻠﻰ ‪Functions All‬‬
‫‪!Error‬‬

‫ﺗﺤﻤﻴﻞ و ﺗﻨﻔﻴﺬ ﺑﺮﻧﺎﻣﺞ‬


!Error
!Error
!Error
‫اﻟﻤﺼﺪر‬
‫‪Manual LabVIEW Basics Course‬‬

‫اﻟﻰ اﻟﻠﻘﺎء ﻣﻊ اﻟﺪرس اﻟﺜﺎﻧﻰ ان ﺷﺎء اﷲ‬


‫اﻟﺪرس اﻟﺜﺎﻧﻰ‬
‫اﻧﺸﺎء وﺗﺤﺮﻳﺮ واﺧﺘﺒﺎر‪VI‬‬
‫اﻟﺠﺰء اﻻول‬
‫اﻧﺸﺎء ‪VI‬‬

‫‪) Tools Pallette‬ﻟﻮﺣﺔ اﻻدوات( ‪:‬‬


‫آﻤﺎ ﻋﻠﻤﻨﺎ ﻣﻦ اﻟﺪرس اﻟﺴﺎﺑﻖ اﻧﻨﺎ ﻧﺤﺼﻞ ﻋﻠﻰ ‪ Tools Palette‬ﻣﻦ ‪Show <<Window‬‬
‫‪.Tools Palette‬‬

‫وﻳﻤﻜﻦ ان ﻳﻜﻮن اﺧﺘﻴﺎر اﻻداة ﺑﺎﺣﺪى ﻃﺮﻳﻘﺘﻴﻦ‪:‬‬

‫‪ : Automatic‬ﻳﻘﻮم ‪ LabVIEW‬ﺑﺘﻐﻴﺮ اﻻداة ﺗﻠﻘﺎﺋﻴﺎ اﻟﻰ اﻻداة اﻟﻤﻨﺎﺳﺒﺔ‪.‬‬

‫‪ :Manual‬ﻳﻘﻮم اﻟﻤﺒﺮﻣﺞ ﺑﺄﺧﺘﻴﺎر اﻻداة اﻟﺘﻰ ﻳﺮﻳﺪهﺎ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻻداة ﻓﻰ ‪.Tools Palette‬‬

‫ﻟﺠﻌﻞ اﻻﺧﺘﻴﺎر ‪ Automatic‬او ‪ Manual‬ﻧﻀﻐﻂ اﻳﻘﻮﻧﺔ ‪Automatic Tool‬‬


‫‪ Selection‬اﻟﻤﻮﺟﻮدة اﻋﻠﻰ ‪.Tools Palette‬‬

‫آﻤﺎ ذآﺮﻧﺎ ﻓﻰ اﻟﺪرس اﻟﺴﺎﺑﻖ اﻧﻪ‪:‬‬

‫ﺗﺘﻜﻮن ‪ VI‬ﻣﻦ ﺛﻼث ﻋﻨﺎﺻﺮ اﺳﺎﺳﻴﺔ ‪:‬‬


The Icon and Connector ‫ و‬Diagram The Block ‫ و‬The Front Panel
. Pane

: The Front Panel : ‫اوﻻ‬


. Indicators ‫ و‬Controls ‫ ﺑﻮاﺳﻄﺔ‬Front Panel The ‫ﻳﺘﻢ ﺑﻨﺎء‬

.Front Panel ‫ ﻋﻠﻰ‬Indicators ‫ و‬Controls ‫ ﻟﻮﺿﻊ‬Controls ‫وﺗﺴﺘﺨﺪم ﻟﻮﺣﺔ‬

.‫ اﻻآﺜﺮ اﺳﺘﺨﺪاﻣﺎ‬Indicators ‫ و‬Controls ‫ﺳﻮف ﻧﻌﺮض ﺑﻌﺾ اﻣﺜﻠﺔ‬

:١) Numeric Controls And Indicators

. ‫ﻣﻦ اآﺜﺮ اﻟﻮﺣﺪات اﻟﺘﻰ ﺗﺴﺘﺨﺪم‬

Numeric Control •

‫ ( و اﻟﻘﻴﻤﺔ و اﺳﻬﻢ‬Label ) ‫ ﻋﻠﻰ ﻋﺪة ﺧﺼﺎﺋﺺ ﻣﺜﻞ اﻟﻌﻨﻮان‬Numeric Control ‫وﻳﺤﺘﻮى‬


. ‫ﻟﺘﻐﻴﻴﺮ ﺗﻠﻚ اﻟﻘﻴﻤﺔ‬

‫ ﻳﺴﺘﻄﻴﻊ ﻣﺴﺘﺨﺪم اﻟﺒﺮﻧﺎﻣﺞ ﺗﻐﻴﺮهﺎ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻻدﺧﺎل‬Numeric Control ‫وﻗﻴﻤﺔ‬
.‫اﻟﻘﻴﻢ ﻟﻠﺒﺮﻧﺎﻣﺞ‬
‫‪Indicator Numeric‬‬ ‫•‬

‫وﻳﺤﺘﻮى ‪ Numeric Indicator‬ﻋﻠﻰ ﻋﺪة ﺧﺼﺎﺋﺺ ﻣﺜﻞ اﻟﻌﻨﻮان ) ‪ ( Label‬و اﻟﻘﻴﻤﺔ ‪.‬‬

‫وﻗﻴﻤﺔ ‪ Numeric Indicator‬ﻻ ﻳﺴﺘﻄﻴﻊ ان ﻳﻐﻴﺮهﺎ اﻟﻤﺴﺘﺨﺪم اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ اﻧﻤﺎ ﺗﺘﻐﻴﺮ‬
‫ﻣﻦ ﺧﻼل ‪.Block Diagram‬‬

‫ﻟﺘﻐﻴﻴﺮ ﻗﻴﻤﺔ ‪Numeric Control‬‬

‫‪.‬‬ ‫ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻻﺳﻬﻢ ﺑﻮاﺳﻄﺔ ‪Operating Tool‬‬ ‫•‬


‫او‬ ‫ﺑﺎﻟﻀﻐﻂ ﻧﻘﺮﺗﻴﻦ ﻋﻠﻰ ﻗﻴﻤﺔ ‪ Control‬ﺑﻮاﺳﻄﺔ ‪Labeling Tool‬‬ ‫•‬

‫ﺛﻢ آﺘﺎﺑﺔ اﻟﻘﻴﻤﺔ اﻟﺠﺪﻳﺪة ‪ .‬ﺛﻢ ﺿﻐﻂ ﻣﻔﺘﺎح >‪ <ENTER‬او‬ ‫‪Operating Tool‬‬
‫اﻟﻤﻮﺟﻮد ﻓﻰ اﻻﻋﻠﻰ ‪ ToolBar‬او ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اى ﻣﻜﺎن‬ ‫اﻟﻀﻐﻂ ﻋﻠﻰ اﻻﻳﻘﻮﻧﺔ‬
‫ﺧﺎرج ‪.Control‬‬

‫‪:Boolean Controls and Indicators (٢‬‬

‫ﺗﺴﺘﺨﺪم ﻻدﺧﺎل و اﻇﻬﺎر اﻟﻘﻴﻢ اﻟﺜﻨﺎﺋﻴﺔ‪ True‬او ‪ False‬و هﻰ ﺗﻤﺎﺛﻞ اﻟﻤﻔﺎﺗﻴﺢ )‪( Switches‬‬
‫واﻟﻤﻔﺎﺗﻴﺢ اﻟﻀﺎﻏﻄﺔ ) ‪ (Push Buttons‬و ‪.LEDs‬‬

‫و ﻣﻦ اآﺜﺮ اﻟﻮﺣﺪات اﺳﺘﺨﺪاﻣﺎ ‪ Vertical Toggle Switch‬و ‪.Round LEDs‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬

‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ ﺧﺼﺎﺋﺺ ‪ Indicators‬و ‪ Controls‬ﺑﺎﻟﻀﻐﻂ اﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻮﺣﺪة‬
‫ﺳﻮاء آﺎﻧﺖ ‪ Indicator‬او ‪ Control‬ﻓﺘﻈﻬﺮ ﻟﻨﺎ ﻗﺎﺋﻤﺔ ﻣﻨﺴﺪﻟﻪ ﻓﻴﻬﺎ ﻣﺎ ﻳﻤﻜﻦ ﺗﻐﻴﺮﻩ ‪.‬‬
!

: Block Diagram The : ‫ﺛﺎﻧﻴﺎ‬


‫ ﻳﺘﻜﻮن ﻣﻦ ﺛﻼث ﻋﻨﺎﺻﺮ‬The Block Diagram

.( ‫ )وﺻﻼت او اﻟﺮواﺑﻂ‬Wires ‫ و‬Terminals ‫ و‬Nodes


‫‪:Nodes‬‬

‫هﻰ اى وﺣﺪة )‪ (Object‬ﻓﻰ ‪ Diagram Block‬ﻟﺪﻳﻬﺎ ﻣﺪاﺧﻞ او ﻣﺨﺎرج او آﻠﻬﻤﺎ و ﺗﻘﻮم‬


‫ﺑﻌﻤﻠﻴﺔ ﻣﺎ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫و اﻧﻮاع ‪ Nodes‬هﻰ ‪ :‬اﻟﺪوال و ‪ SubVI‬و اﻟﻬﻴﺎآﻞ اﻟﺒﻴﺎﻧﻴﺔ )‪. (Structures‬‬

‫اﻟﺪوال ‪:‬‬

‫وهﻰ دوال اﺳﺎﺳﻴﺔ ﺟﺎهﺰة ﻣﺒﻨﻴﺔ ﻓﻰ ﺑﻴﺌﺔ ‪.LaBVIEW‬‬

‫وﻳﻤﻜﻦ اﻟﺤﺼﻮل ﻋﻠﻴﻬﺎ ﻣﻦ ‪.Functions Palette‬‬


:‫ﻣﺜﺎل‬

: SubVI
‫وهﻰ ‪ VI‬ﻣﺒﻨﻴﺔ ﻣﺴﺒﻘﺎ ﺗﺴﺘﺨﺪم ﻓﻰ ‪ Block Diagram‬اﻟﺨﺎص ﺑـ ‪ VI‬اﺧﺮى وهﻰ ﺗﻤﺎﺛﻞ‬
‫‪ Subroutine‬ﻓﻰ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻻﺧﺮى‪.‬‬

‫اﻟﻬﻴﺎآﻞ اﻟﺒﻴﺎﻧﻴﺔ )‪:(Structures‬‬

‫وهﻰ ﻋﻨﺎﺻﺮ ﺗﺤﻜﻢ ﻓﻰ اﻟﻌﻤﻠﻴﺎت‬

‫ﻣﺜﻞ‬

‫‪:Terminals‬‬

‫وهﻰ ﻧﻮﻋﺎن ‪ or Control Terminal Indicator:‬و ‪Terminals Node‬‬

‫‪: Indicator or Control Terminal‬‬

‫آﻤﺎ اوﺿﺤﻨﺎ ﻣﻦ ﻗﺒﻞ ﻟﻜﻞ ‪ Control‬او ‪ Indicator‬ﻣﻮﺟﻮد ﻓﻰ ‪ Front Panel‬ﻳﻮﺟﺪ‬


‫ﺑﺎﻟﻤﻘﺎﺑﻞ ﻟﻪ ‪ Terminal‬ﻓﻰ ‪. Block Diagram The‬‬

‫وهﺬا ‪ Terminal‬ﻟﻪ ‪ Data Type‬اﻟﺨﺎص ﺑﺎل ‪ Control‬او ‪.Indicator‬‬

‫و ‪ Data Type‬ﻳﺤﺪد ﻧﻮع اﻟﺒﻴﺎﻧﺎت و اﻳﻀﺎ آﻞ ﻣﻦ اﻟﺴﻌﺔ اﻟﺘﺨﺰﻳﻨﻴﺔ ﻟﻠﻘﻴﻤﺔ و ﺑﺎﻟﺘﺎﻟﻰ ﻣﺪى هﺬة‬
‫اﻟﻘﻴﻤﺔ‪.‬‬

‫وﻟﻜﻞ ‪ Data Type‬ﻟﻮن ﻣﻌﻴﻦ‪.‬‬


‫‪: Node Terminals‬‬

‫ﻟﻜﻞ ‪ Node‬ﻳﻮﺟﺪ ﻟﻬﺎ ‪ Connector Pane‬ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ وﺻﻼت ﺗﺒﻴﻦ و ﺗﺤﺪد ﻃﺮﻳﻘﺔ‬
‫وﺻﻠﻬﺎ أى اﻣﺎآﻦ اﻻدﺧﺎل و اﻻﺧﺮج اﻟﺨﺎص ﺑـ ‪.Node‬‬

‫هﺬة اﻟﻮﺻﻼت هﻰ ‪Node Terminals‬‬

‫وﻟﻌﺮض ‪ Connector pane‬اﻟﺨﺎص ﺑـ ‪Node‬‬

‫ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Node‬ﺛﻢ ﻧﺨﺘﺎر‬

‫‪Terminals << Visible items‬‬


‫‪) Wires‬وﺻﻼت او اﻟﺮواﺑﻂ ( ‪:‬‬

‫هﻰ ﻣﺴﺎرت اﻟﺒﻴﺎﻧﺎت ﺑﻴﻦ وﺣﺪات ) ‪.Object) The Block Diagram‬‬

‫ﻳﺘﺼﻞ‪) Wire‬راﺑﻂ ( ﺑﻤﺼﺪر وﺣﻴﺪ ﻟﻠﺒﻴﺎﻧﺎت و ﻟﻜﻦ ﻳﻤﻜﻦ ان ﻳﺼﻞ هﺬة اﻟﺒﻴﺎﻧﺎت ﻟﻜﺜﺮ ﻣﻦ ﻣﺪﺧﻞ‬
‫ﻟﺪوال او ‪.SubVI‬‬
‫ﻟﻜﻞ راﺑﻂ ﻟﻮن و ﺷﻜﻞ و ﺳﻤﻚ ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﻧﻮع اﻟﺒﻴﺎﻧﺎت )‪ ( Data Type‬اﻟﺨﺎﺻﺔ ﺑﺎﻟﺮاﺑﻂ‪.‬‬

‫ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ (‪Scalar‬وﺣﻴﺪ‬


‫ﻧﻮع اﻟﺮاﺑﻂ‬ ‫ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ‬ ‫اﻟﻠﻮن‬
‫اﻟﻘﻴﻤﺔ)‬ ‫واﺣﺪ‬

‫ﺑﺮﺗﻘﺎﻟﻰ( رﻗﻢ‬
‫ﻋﺸﺮى )‬
‫‪(floating‬‬
‫رﻗﻤﻰ‬
‫)‪point‬‬
‫)‪(Numeric‬‬
‫ازرق )رﻗﻢ‬
‫ﺻﺤﻴﺢ )‬
‫‪Integer‬‬
‫ﺛﻨﺎﺋﻰ‬
‫اﺧﻀﺮ‬
‫)‪(Boolean‬‬
‫ﻧﺺ)‪(String‬‬ ‫وردى‬

‫ﺛﺎﻟﺜﺎ( ‪: Dataflow Programming‬‬


‫اﻟﺒﺮﻣﺠﺔ اﻟﻤﻌﺘﻤﺪة ﻋﻠﻰ ﺗﺪﻓﻖ اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫ﻳﻌﺘﻤﺪ ﺗﻨﻔﻴﺬ ﺑﺮاﻣﺞ ‪ LabVIEW‬ﻋﻠﻰ ﺗﺪﻓﻖ اﻟﺒﻴﺎﻧﺖ او ‪.Dataflow‬‬

‫ﺗﻨﻔﺬ ‪ Node‬ﻓﻮرا ﻋﻨﺪﻣﺎ ﺗﻜﻮن اﻟﺒﻴﺎﻧﺎت ﺟﺎهﺰة ﻋﻠﻰ ﻣﺪاﺧﻠﻬﺎ‪ .‬و ﻋﻨﺪ اﻧﺘﻬﺎء ﺗﻨﻔﻴﺬ ‪ Node‬ﺗﺨﺮج‬
‫اﻟﻨﻮاﺗﺞ ﻓﻮرا ﻋﻠﻰ ﻣﺨﺎرﺟﻬﺎ ﻟﺘﻜﻮن ﺟﺎهﺰة ﻟﻠـ ‪ Node‬اﻟﺘﺎﻟﻴﺔ ﻟﻬﺎ ﻓﻰ ﻣﺴﺎر ﺗﺪﻓﻖ اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫وذﻟﻚ ﻋﻜﺲ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻻﺧﺮى اﻟﺘﻰ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ‪ Control Flow‬ﺣﻴﺚ ﺗﻨﻔﺬ اﻟﺘﻌﻠﻴﻤﺎت ﺗﺒﺎﻋﺎ‬
‫ﺣﺴﺐ ﺗﺮﺗﻴﺐ آﺘﺎﺑﺘﻬﺎ ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫ﻣﺜﺎل‪ :‬ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺠﻤﻊ رﻗﻤﻴﻦ ﺛﻢ ﻳﻘﻮم ﺑﻄﺮح ‪ ٥٠‬ﻣﻦ ﺣﺎﺻﻞ اﻟﺠﻤﻊ ‪.‬‬

‫ﻧﻼﺣﻆ ان اﻟﺒﻴﺎﻧﺎت ﺟﺎهﺰ ﻋﻠﻰ ﻣﺪﺧﻠﻰ داﻟﺔ اﻟﺠﻤﻊ )‪ X‬و‪ (Y‬ﻟﺬﻟﻚ ﺗﻨﻔﺬ داﻟﺔ اﻟﺠﻤﻊ ﺗﻠﻘﺎﺋﻴﺎ‪ .‬وﺑﻌﺪ‬
‫اﻧﺘﻬﺎء ﺗﻨﻔﻴﺬ داﻟﺔ اﻟﺠﻤﻊ ﻳﺨﺮج اﻟﻨﺎﺗﺞ ﻋﻠﻰ ﻣﺨﺮج داﻟﺔ اﻟﺠﻤﻊ ﻟﺘﻜﻮن اﻟﺒﻴﺎﻧﺎت ﺟﺎهﺰة ﻋﻠﻰ ﻣﺪﺧﻠﻰ‬
‫داﻟﺔ اﻟﻄﺮح )ﺣﺎﺻﻞ اﻟﺠﻤﻊ و اﻟﺜﺎﺑﺖ ‪ (٥٠‬ﻟﺬﻟﻚ ﺗﻨﻔﺬ داﻟﺔ اﻟﻄﺮح و ﺑﻌﺪ ﺗﻨﻔﻴﺬهﺎ ﻳﺨﺮج اﻟﻨﺎﺗﺞ ﻣﻦ‬
‫ﻣﺨﺮج داﻟﺔ اﻟﻄﺮح اﻟﻰ اداة اﻻﻇﻬﺎر ‪. Z‬‬

‫اى ان داﻟﺔ اﻟﻄﺮح ﻻ ﺗﻨﻔﺬ اﻻ ﻋﻨﺪﻣﺎ ﺗﻘﻮم داﻟﺔ اﻟﺠﻤﻊ ﺑﺠﻤﻊ اﻟﺮﻗﻤﻴﻦ وﺗﺨﺮج اﻟﻨﺎﺗﺞ اﻟﻰ داﻟﺔ‬
‫اﻟﻄﺮح‪.‬‬

‫ﻣﺜﺎل ‪ :٢‬آﻤﺎ ﺑﺎﻟﺸﻜﻞ ﻳﻮﺟﺪ ﺟﺰﺋﻴﻦ ﻣﺴﺘﻘﻠﻴﻦ اﺣﺪهﻤﺎ ﻳﺒﺪأ ﺑﺪاﻟﺔ اﻟﺠﻤﻊ واﻻﺧﺮ ﻳﺒﺪأ ﺑﺪاﻟﺔ اﻟﻘﺴﻤﺔ‪.‬‬
‫ﻧﻼﺣﻆ ان اﻟﺒﻴﺎﻧﺎت ﺟﺎهﺰة ﻋﻠﻰ ﻣﺪاﺧﻞ داﻟﺔ اﻟﺠﻤﻊ و اﻳﻀﺎ اﻟﺒﻴﺎﻧﺎت ﺟﺎهﺰة ﻋﻠﻰ داﻟﺔ اﻟﻘﺴﻤﺔ ﻓﺄى‬
‫ﻣﻨﻬﻤﺎ ﻳﻨﻔﺬ اوﻻ ‪.‬ﺣﻘﻴﻘﺎ ﻻ ﻧﻌﻠﻢ ﻓﺎﻟﺠﺰﺋﻴﻦ ﻣﺴﺘﻘﻠﻴﻦ ﻋﻦ ﺑﻌﻀﻬﻤﺎ ﺗﻤﺎﻣﺎ ‪ .‬اذا ﻻﺑﺪ ﻣﻦ ﻃﺮﻳﻖ ﺗﺤﺪد ﻣﻦ‬
‫ﺳﻴﻨﻔﺬ اوﻻ ﺛﻢ اﻟﺬى ﻳﻠﻴﻪ ‪ .‬وهﺬا ﻣﺎ ﺳﻨﺘﻌﻠﻤﺔ ﻓﻰ اﻟﺪروس اﻟﻘﺎدﻣﺔ ان ﺷﺎء اﷲ‪.‬‬

‫ﻣﺜﺎل ‪CtoF.vi :‬‬


‫هﺪف اﻟﻤﺜﺎل‪:‬‬
‫اﻧﺸﺎء ‪ VI‬ﺗﻘﻮم ﺑﺄﺧﺬ رﻗﻢ ﻳﻤﺜﻞ درﺟﺔ اﻟﺤﺮارة ﺑﺎﻟﺴﻠﻴﺰﻳﻮس وﺗﺤﻮﻳﻠﻬﺎ اﻟﻰ رﻗﻢ ﻳﻤﺜﻞ درﺟﺔ‬
‫اﻟﺤﺮارة ﺑﺎﻟﻔﻬﺮﻧﻬﻴﺖ‪.‬‬

‫‪The Front Panel‬‬

‫‪The Block Diagram‬‬


‫اﻟﺨﻄﻮات ‪:‬‬
‫‪-١‬ﺗﺤﻤﻴﻞ ﻣﻠﻒ ﺟﺪﻳﺪ‬
‫‪ -١‬ﻗﻢ ﺑﺘﺤﻤﻴﻞ ﺑﺮﻧﺎﻣﺞ ‪LabVIEW‬‬

‫‪-٢‬اﺿﻐﻂ ‪.New VI‬‬


‫‪ -٣‬اﺧﺘﺮ ‪ .Blank VI‬ﻟﻌﻤﻞ ‪ VI‬ﺟﺪﻳﺪة‪.‬‬

‫‪-٢‬ﺗﺼﻤﻴﻢ ‪: Front Panel‬‬


‫ﺳﺘﻈﻬﺮ ﻟﻚ ‪The Front Panel‬‬

‫‪ -١‬ادراج ‪. Numeric Control‬‬

‫وهﻮ اداة اﻟﺘﺤﻜﻢ اﻟﺘﻰ ﺳﻨﺴﺘﺨﺪﻣﻬﺎ ﻻدﺧﺎل درﺟﺔ اﻟﺤﺮارة ﺑﺎﻟﺴﻠﻴﺰﻳﻮس‪.‬‬


‫ﻳﻈﻬﺮ ﻟﻨﺎ ‪ Control‬ﺑﻬﺬا اﻟﺸﻜﻞ آﻤﺎ ﻓﻰ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪.‬‬

‫ﻻﺣﻆ ان آﻠﻤﺔ ‪ Numeric‬ﻣﻈﻠﻠﺔ‪.‬هﺬا ﻳﻌﻨﻰ ان اى آﺘﺎﺑﺔ ﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺘﻬﺎ ﺳﺘﺤﻞ ﻣﺤﻞ آﻠﻤﺔ‬
‫‪.Numeric‬‬

‫اﻟﻤﻮﺟﻮد ﻓﻰ ‪ ToolBar‬او ﻧﻀﻐﻂ اى ﻣﻜﺎن‬ ‫ﻧﻜﺘﺐ ‪ deg C‬ﺛﻢ اﺿﻐﻂ ‪Enter Button‬‬
‫اﺧﺮ ﺧﺎرج ‪ Control‬او ﻧﻀﻐﻂ ‪.Enter‬‬

‫ﻣﻠﺤﻮﻇﺔ‬

‫اذا ﻟﻢ ﺗﻜﺘﺐ ‪ deg C‬ﻣﺒﺎﺷﺮة ﺳﻴﺨﺘﻔﻰ اﻟﺘﻈﻠﻴﻞ ﻣﻦ ﻋﻠﻰ آﻠﻤﺔ ‪.Numeric‬ﻓﺎذا اردت ﺑﻌﺪ ان ﺗﻌﻴﺪ‬
‫اﻟﺘﻈﻠﻴﻞ وﺗﻜﺘﺐ ‪ deg C‬ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻧﻘﺮﺗﻴﻴﻦ ﻋﻠﻰ ‪) Label‬آﻠﻤﺔ ‪ (Numeric‬ﺣﺘﻰ ﺗﻈﻠﻞ ﺛﻢ‬
‫اآﺘﺐ ‪.deg C‬‬

‫‪ -٢‬ادراج ‪. Numeric Indicator‬‬

‫وهﻮ اداة اﻻﻇﻬﺎر اﻟﺘﻰ ﺳﻨﺴﺘﺨﺪﻣﻬﺎ ﻻﺧﺮاج درﺟﺔ اﻟﺤﺮارة ﺑﺎﻟﻔﻬﺮﻧﻬﻴﺖ‪.‬‬


‫‪!Error‬‬

‫ﻳﻈﻬﺮ ﻟﻨﺎ ﺑﻬﺬا اﻟﺸﻜﻞ آﻤﺎ ﻓﻰ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪.‬‬

‫اﻟﻤﻮﺟﻮد ﻓﻰ ‪ ToolBar‬او اﺿﻐﻂ اى ﻣﻜﺎن‬ ‫ﻧﻜﺘﺐ ‪ deg F‬ﺛﻢ اﺿﻐﻂ ‪Enter Button‬‬
‫اﺧﺮ ﺧﺎرج ‪ Indicator‬او ﻧﻀﻐﻂ ‪.Enter‬‬

‫ﻣﻠﺤﻮﻇﺎت‪:‬‬
‫‪-١‬ﻻﺣﻆ اﻟﻔﺮق ﺑﻴﻦ اداة اﻟﺘﺤﻜﻢ ‪ Control‬و اداة اﻻﻇﻬﺎر ‪.Indicator‬‬

‫‪-٢‬ﻟﻜﻞ اداة ﻳﻮﺟﺪ ﻟﺪﻳﻬﺎ ﻋﻨﻮان ‪.Label‬‬

‫هﺬا اﻟﻌﻨﻮان ﻳﻤﻜﻦ ان ﻳﻈﻬﺮ او ﻳﺨﺘﻔﻰ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Control‬او‬
‫‪ Indicator‬ﺛﻢ اﺧﺘﻴﺎر‬

‫‪Label<<Visible Items‬‬

‫اﻻن ﻗﻤﻨﺎ ﺑﺘﺼﻤﻴﻢ ‪ The Front Panel‬اﻟﺨﺎﺻﺔ ﺑﺎﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬

‫‪ -٣‬ﺗﺼﻤﻴﻢ ‪:The Block Diagram‬‬


‫ﻧﻀﻐﻂ ‪ Ctrl+E‬او ﻧﺨﺘﺎر ‪.Diagram Show<<Window‬‬
‫ﻟﻨﻨﺘﻘﻞ اﻟﻰ ‪ Block Diagram‬ﻟﻜﺘﺎﺑﺔ آﻮد اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫ﻧﻼﺣﻆ اﻻﺗﻰ‪:‬‬

‫‪ -١‬ان ‪ Control‬اﻟﻤﻮﺟﻮد ﻓﻰ ‪ Front Panel‬ﻟﻪ ‪ Control Terminal‬ﻣﻮﺟﻮد ﻓﻰ‬


‫‪ Block Diagram‬ﺑﻨﻔﺲ اﻟﻌﻨﻮان ‪.deg C‬‬

‫‪ -٢‬اﺑﻀﺎ ‪ Indicator‬اﻟﻤﻮﺟﻮد ﻓﻰ ‪ Front Panel‬ﻟﻪ ‪ Indicator Terminal‬ﻣﻮﺟﻮد‬


‫ﻓﻰ ‪ Diagram Block‬ﺑﻨﻔﺲ اﻟﻌﻨﻮان ‪deg F‬‬

‫‪ -٣‬اﻻﻃﺎر اﻟﺨﺎرﺟﻰ ﻟﻠـ ‪ Control Terminal‬اآﺜﺮ ﺳﻤﻜﺎ ﻣﻦ اﻻﻃﺎر اﻟﺨﺎرﺟﻰ ﻟﻠـ ‪Indicator‬‬
‫‪. Terminal‬‬

‫‪-٤‬ﺗﻮﺟﺪ آﻠﻤﻪ ‪ DBL‬ﻋﻠﻰ ‪ Terminals‬وهﻰ ﺗﻌﻨﻰ ان ‪ Data type‬اﻟﺨﺎص ﺑﺎﻟـ ‪Terminal‬‬


‫هﻮ ‪.Double-Precision Floating Point Number‬‬

‫ﺗﻌﻠﻴﻖ ‪:‬‬

‫‪ Data type‬ﺗﺤﺪد اﻟﺴﻌﺔ اﻟﺘﺨﺰﻳﻨﻴﺔ ﻟﻠﻤﺘﻐﻴﺮ وﻣﺪى اﻻرﻗﺎم اﻟﺘﻰ ﻳﻤﻜﻦ ان ﻳﺄﺧﺬهﺎ‪.‬‬

‫ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ درﺟﺔ ﺣﺮارة ﺳﻠﻴﺰﻳﻮس اﻟﻰ درﺟﺔ ﺣﺮارة ﻓﻬﺮﻧﻬﻴﺖ ﻧﺴﺘﺨﺪم هﺬة اﻟﻌﻼﻗﺔ‬

‫‪Deg F=1.8*Deg C+32‬‬


‫وﻳﻤﻜﻦ ان ﻧﻜﺘﺒﻬﺎ ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫‪Deg C*1.8+32=Deg F‬‬

‫اذا ﺳﻮف ﻧﺤﺘﺎج اﻟﻰ داﻟﺔ اﻟﻀﺮب ‪ Multiply‬و داﻟﺔ اﻟﺠﻤﻊ ‪ Add‬ﻟﻌﻤﻞ اﻟﺘﺤﻮﻳﻞ اﻟﻤﻄﻠﻮب واﻳﻀﺎ‬
‫ﻧﺤﺘﺎج ﺛﺎﺑﺘﻴﻦ ﺑﺎﻟﻘﻴﻢ ‪ ١٫٨‬و ‪.٣٢٫٠‬‬

‫‪-١‬ادراج داﻟﺔ اﻟﻀﺮب ‪.Multiply‬‬

‫‪!Error‬‬

‫اﺳﺤﺐ رﻣﺰ اﻟﺪاﻟﺔ اﻟﻰ اﻟﻤﻜﺎن اﻟﺬى ﺗﺮﻳﺪﻩ ﺛﻢ اﺿﻐﻂ ﺑﺎﻟﺰر اﻻﻳﺴﺮ ﻟﻠﻤﺎوس ﻟﻮﺿﻌﻪ ﻓﻰ اﻟﻤﻜﺎن اﻟﺬى‬
‫ﺣﺪدﺗﻪ‪.‬‬
‫‪-٢‬ادراج داﻟﺔ اﻟﺠﻤﻊ ‪.Add‬‬

‫‪!Error‬‬
‫اﺳﺤﺐ رﻣﺰ اﻟﺪاﻟﺔ اﻟﻰ اﻟﻤﻜﺎن اﻟﺬى ﺗﺮﻳﺪﻩ ﺛﻢ اﺿﻐﻂ ﺑﺎﻟﺰر اﻻﻳﺴﺮ ﻟﻠﻤﺎوس ﻟﻮﺿﻌﻪ ﻓﻰ اﻟﻤﻜﺎن اﻟﺬى‬
‫ﺣﺪدﺗﻪ‪.‬‬

‫‪ -٣‬ادارج اﻟﺜﺎﺑﺘﻴﻦ ‪. Numeric Constants‬‬

‫اﺳﺤﺐ ‪ Numeric Constant‬اﻟﻰ اﻟﻤﻜﺎن اﻟﺬى ﺗﺮﻳﺪﻩ ﺛﻢ اﺿﻐﻂ ﺑﺎﻟﺰر اﻻﻳﺴﺮ ﻟﻠﻤﺎوس ﻟﻮﺿﻌﻪ‬
‫ﻓﻰ اﻟﻤﻜﺎن اﻟﺬى ﺣﺪدﺗﻪ‪.‬‬
‫ﻳﻈﻬﺮ ‪ Numeric Constant‬وداﺧﻠﻪ رﻗﻢ ‪ ٠‬ﻣﻈﻠﻞ ‪.‬اى اﻧﻪ ﻳﻤﻜﻨﻚ آﺘﺎﺑﺔ اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺗﺮﻳﺪهﺎ‬
‫ﻣﺒﺎﺷﺮة‪.‬‬

‫اآﺘﺐ ﻗﻴﻤﺔ ‪ Numeric Constant‬وهﻰ )‪.(١٫٨‬‬


‫اﻟﻤﻮﺟﻮد ﻓﻰ ‪ ToolBar‬او اﺿﻐﻂ اى ﻣﻜﺎن اﺧﺮ ﺧﺎرج اﻟﺜﺎﺑﺖ‬ ‫اﺿﻐﻂ ‪Enter Button‬‬
‫او اﺿﻐﻂ ‪.Enter‬‬
‫ادرج اﻟﺜﺎﺑﺖ اﻟﺜﺎﻧﻰ اﻟﺬى ﻗﻴﻤﺘﻪ ‪ ٣٢٫٠‬آﻤﺎ ﺳﺒﻖ‪.‬ﺗﺄآﺪ ﻣﻦ آﺘﺎﺑﺔ اﻟﻌﻼﻣﺔ اﻟﻌﺸﺮﻳﺔ واﻟﺼﻔﺮ اﻟﺬى ﻋﻠﻰ‬
‫ﻳﻤﻴﻨﻬﺎ ﺣﺘﻰ ﻳﻜﻮن ﻟﻪ ‪.DBL Data Type‬‬

‫‪-٤‬اﻟﺮﺑﻂ او اﻟﺘﻮﺻﻴﻞ‬

‫‪.‬‬ ‫اﻻن وﺑﻌﺪ ادراج اﻟﺪوال واﻟﺜﻮاﺑﺖ ﻧﻘﻮم ﺑﺎﻟﺮﺑﻂ ﺑﻴﻨﻬﻢ ﺑﺄﺳﺘﺨﺪام اداة اﻟﺮﺑﻂ‬

‫ﺗﻠﻘﺎﺋﻴﺎ ﻋﻨﺪ وﺿﻌﻬﺎ ﻋﻠﻰ اﻟﻤﺪاﺧﻞ او اﻟﻤﺨﺎرج ) ‪ ( Terminal‬او ﻣﻤﻜﻦ‬ ‫ﺗﻈﻬﺮ اداة اﻟﺮﺑﻂ‬
‫ان ﺗﺨﺘﺎرهﺎ ﻣﻦ ‪.Palette Tools‬‬
‫ﻳﺘﺤﺮك ﻣﻌﻚ اﻟﺨﻂ‪.‬‬ ‫ﻻﺣﻆ ﺑﻌﺪ رﺑﻂ اﻟﺨﻂ ﺑـ ‪ Control Terminal‬ﻋﻨﺪﻣﺎ ﺗﺤﺮك اداة اﻟﺮﺑﻂ‬
‫ﻧﻜﻤﻞ ﺑﺎﻗﻰ اﻟﻮﺻﻼت آﻤﺎ ﺑﺎﻟﺸﻜﻞ‬

‫ﻓﻰ اﻟﻨﻬﺎﻳﺔ ﻳﺼﺒﺢ ‪ The Block Diagram‬ﺑﻬﺬا اﻟﺸﻜﻞ‬


‫اﻻن اﻧﺘﻬﻴﻨﺎ ﻣﻦ ﺗﺼﻤﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫ﻻﺣﻆ‬

‫‪ -١‬اﻧﻪ ﻻ ﻳﻮﺟﺪ ﺧﻂ ﻣﻨﻘﻂ‬

‫ﻣﻤﺎ‬ ‫اﺛﻨﺎء آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ و اﻻن اﺻﺒﺤﺖ هﻜﺬا‬ ‫‪ -٢‬ان اﻳﻘﻮﻧﺔ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ آﺎﻧﺖ هﻜﺬا‬
‫ﻳﻌﻨﻰ اﻧﻪ ﻻ ﻳﻮﺟﺪ ﺧﻄﺄ ﻓﻰ اﻟﻮﺻﻼت وان اﻟﺒﺮﻧﺎﻣﺞ ﻳﻤﻜﻦ ان ﻳﻨﻔﺬ‪.‬‬

‫‪-٤‬ﺗﺨﺰﻳﻦ اﻟﺒﺮﻧﺎﻣﺞ ‪:‬‬


‫ﻳﻤﻜﻨﻚ ﺗﺨﺰﻳﻦ اﻟﺒﺮﻧﺎﻣﺞ آﻬﻴﺌﺔ ﻣﻠﻒ ﻣﺴﺘﻘﻞ ﺑﺎﻻﻣﺘﺪاد ‪ vi‬او آﺠﺰء ﻣﻦ ﻣﻜﺘﺒﺔ ﺗﺤﺘﻮى ﻋﺪدة ﺑﺮاﻣﺞ‬
‫وﺗﻜﻮن ﺑﺄﻣﺘﺪاد ‪.llb‬‬

‫‪ -١‬ﺗﺨﺰﻳﻦ اﻟﻤﻠﻒ ﻓﻰ ﻣﻠﻒ ﻣﺴﺘﻘﻞ‪:‬‬

‫اﺧﺘﺮ ‪Save << File‬‬


‫ﺣﺪد ﻣﻜﺎن اﻟﺘﺨﺰﻳﻦ و اﺳﻢ اﻟﻤﻠﻒ‪.‬‬
‫‪ -٢‬ﺗﺨﺰﻳﻦ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻰ ﻣﻜﺘﺒﺔ‬

‫اﺧﺘﺮ ‪ Save<< File‬اذا آﺎن هﺬة اول ﻣﺮة ﺗﺨﺰﻧﻪ‪.‬‬

‫او اﺧﺘﺮ ‪ Save As <<File‬اذا آﻨﺖ ﺧﺰﻧﺘﻪ ﻣﻦ ﻗﺒﻞ وﺗﺮﻳﺪ ان ﺗﺨﺰﻧﺔ ﺑﺎﺳﻢ اﺧﺮ او ﻓﻰ ﻣﻜﺎن‬
‫اﺧﺮ‪.‬‬
‫ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‬

‫ادﺧﻞ ﻗﻴﻢ اﻟﺤﺮارة ﺑﺎﻟﺴﻠﻴﺰﻳﻮس ﻓﻰ ‪ Deg C Control‬ﺑﺎﺳﺘﺨﺪام ‪Operating Tool‬‬


‫اوﺑﺎﻟﻀﻐﻂ ﻣﺮﺗﻴﻦ ﺑﺎﻟﺰر اﻻﻳﺴﺮ ﻟﻠﻤﺎوس داﺧﻞ ‪ Control‬وآﺘﺎﺑﺔ اﻟﻘﻴﻤﺔ اﻟﺠﺪﻳﺪ‪.‬‬

‫ﻓﻰ ‪ Tool bar‬ﻟﺘﻈﻬﺮ ﻗﻴﻤﺔ درﺟﺔ اﻟﺤﺮارة‬ ‫ﺛﻢ ﻗﻢ ﺑﺘﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﺳﺘﺨﺪام اﻳﻘﻮﻧﺔ اﻟﺘﻨﻔﻴﺬ‬
‫ﺑﺎﻟﻔﻬﺮﻧﻬﻴﺖ ﻓﻰ ‪.Deg F Indicator‬‬

‫ﻟﺘﺼﺒﺢ هﻜﺬا‬ ‫ﻳﻤﻜﻨﻚ ان ﺗﺴﺘﺨﺪم اﻟﺘﻨﻔﻴﺬ اﻟﻤﺴﺘﻤﺮ ﻻﻋﺎدة ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺗﻠﻘﺎﺋﻴﺎ ﺑﺎﻟﻀﻐﻂ اﻻﻳﻘﻮﻧﺔ‬
‫‪.‬‬

‫‪.‬‬ ‫ﻻﻳﻘﺎف اﻟﺘﻨﻔﻴﺬ اﻟﻤﺴﺘﻤﺮ ﻧﻀﻐﻂ اﻳﻘﻮﻧﺔ اﻳﻘﺎف اﻟﺘﻨﻔﻴﺬ‬


‫اﻟﻰ اﻟﻘﺎء ان ﺷﺎء اﷲ ﻓﻰ ﺗﻜﻤﻠﺔ اﻟﺪرس اﻟﺜﺎﻧﻰ و اﻟﺪرس اﻟﺜﺎﻟﺚ‬
‫واﷲ اﻟﻤﻮﻓﻖ‬
‫اﻟﺪرس اﻟﺜﺎﻟﺚ‬
‫ﺗﺤﺮﻳﺮ واﺧﺘﺒﺎر ‪VI‬‬
‫اﻟﻔﻬﺮس‬

‫هﺪف اﻟﺪرس ‪iii .......................................................................................................‬‬


‫ﺗﺤﺮﻳﺮ ‪1 ............................................................................................................ VI‬‬
‫اﺿﺎﻓﺔ وﺣﺪات )‪ (Objects‬ﺟﺪﻳﺪة‪1......................................................................... :‬‬
‫اﺧﺘﻴﺎر اﻟﻮﺣﺪات )‪1............................................................................... : (Objects‬‬
‫ﺗﺤﺮﻳﻚ اﻟﻮﺣﺪات ‪2................................................................................................ :‬‬
‫ﺣﺬف اﻟﻮﺣﺪات ‪3..................................................................................................:‬‬
‫اﺿﺎﻓﺔ ﻋﻨﻮان )‪4..................................................................................... : (Label‬‬
‫ﻋﻨﺎوﻳﻦ ﺧﺎﺻﺔ ﺑﺎﻟﻮﺣﺪات )‪4..................................................... . (Owned Labels‬‬
‫ﻋﻨﺎوﻳﻦ ﺣﺮة )‪4........................................................................ : (Free Labels‬‬
‫اﺧﺘﻴﺎر وﺣﺬف اﻟﺮواﺑﻂ )‪5.......................................................................... : (Wires‬‬
‫اﻟﺮواﺑﻂ اﻟﻤﻘﻄﻮﻋﺔ )‪7.................................................................. : (Broken wires‬‬
‫ﺗﻐﻴﻴﺮ ﺧﺼﺎﺋﺺ اﻟﺨﻂ ‪8.......................................................................................... :‬‬
‫ﻣﺤﺎزاة اﻟﻮﺣﺪات )‪9.................................................................... : (Align Objects‬‬
‫ﺿﺒﻂ اﻟﻤﺴﺎﻓﺎت ﺑﻴﻦ اﻟﻮﺣﺪات ‪10.............................................................................. :‬‬
‫ﻧﺴﺦ اﻟﻮﺣﺪات ﺑﻴﻦ ‪ VIs‬وﻣﻦ ﺗﻄﺒﻴﻘﺎت اﺧﺮى ‪10......................................................... :‬‬
‫ﺗﻐﻴﻴﺮ اﻟﻠﻮن ‪10................................................................................................... :‬‬
‫ﺗﻤﺮﻳﻦ ﻋﻤﻠﻰ ﻋﻠﻰ ﺗﺤﺮﻳﺮ ‪11.............................................................................. :VI‬‬
‫اﻟﺘﻌﺮف ﻋﻠﻰ ‪12........................................................................... LabVIEW Help‬‬
‫اوﻻ‪ -‬ﻧﺎﻓﺬة ‪12............................................................................. : Context Help‬‬
‫ﺛﺎﻧﻴﺎ‪17............................................................................... : LabVIEW Help -‬‬
‫ﺛﺎﻟﺜﺎ‪18......................................................................... : NI Example Finder -‬‬
‫اﺻﻼح اﻻﺧﻄﺎء ﻓﻰ ‪21.......................................................................................... VI‬‬
‫‪ -1‬ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﺳﺘﺨﺪام ‪23............................................ . Highlight Execution‬‬
‫‪-2‬اﻟﺘﻨﻔﻴﺬ ﺑﻨﻈﺎم اﻟﺨﻄﻮة )‪23....................................................... :(Single-Stepping‬‬

‫‪i‬‬
25........................................................................................ . Probe ‫اﺳﺘﺨﺪام‬-3
26................................................................................... :Generic Probe-1
27................................................................. :Probe ‫ ﻓﻰ‬Indicator ‫اﺳﺘﺨﺪام‬-2
29............................................................................... : Supplied Probes-3
31.................................................................................. :Custom Probe -4
33............................................................ :(‫)ﻧﻘﺎط اﻟﺘﻮﻗﻒ‬Breakpoints ‫ اﺳﺘﺨﺪام‬-4

ii
‫هﺪف اﻟﺪرس‬

‫• اﻟﺘﻌﺮف ﻋﻠﻰ ﺟﻤﻴﻊ اﻟﻌﻤﻠﻴﺎت اﻟﺨﺎﺻﺔ ﺑﺘﺤﺮﻳﺮ ‪. VI‬‬


‫• اﻟﺘﻌﺮف ﻋﻠﻰ اﺳﺘﺨﺪام اﻧﻮاع ‪ Help‬اﻟﻤﻮﺟﻮد ﻣﻊ ﻧﺴﺨﺔ ‪.LabVIEW‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ﻃﺮق ﺗﺘﺒﻊ اﻻﺧﻄﺎء ﻻﺻﻠﺤﻬﺎ ﻟﻠﻮﺻﻮل اﻟﻰ ‪ VI‬ﻗﺎﺑﻠﺔ ﻟﻠﺘﻨﻔﻴﺬ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ اﻟﻄﺮق اﻟﻤﺨﺘﻠﻔﺔ ﻻﺧﺘﺒﺎر ﺗﻨﻔﻴﺬ ‪. VI‬‬

‫‪iii‬‬
‫ﺗﺤﺮﻳﺮ ‪VI‬‬

‫اﺿﺎﻓﺔ وﺣﺪات )‪ (Objects‬ﺟﺪﻳﺪة‪:‬‬


‫ﻋﻠﻤﻨﺎ ﻣﻦ اﻟﺪروس اﻟﺴﺎﺑﻘﺔ اﻧﻨﺎ ﻧﺴﺘﺨﺪم ﻟﻮﺣﺔ اﻟﻮﺣﺪات )‪ (Controls Palette‬ﻻﺿﺎﻓﺔ ‪ Controls‬او‬
‫‪ Indicators‬ﻓﻰ ‪.Front Panel‬‬
‫اﻳﻀﺎ ﻳﻤﻜﻦ اﺿﺎﻓﺔ ‪ Controls‬او ‪ Indicators‬او ﺛﻮاﺑﺖ )‪ (Constants‬ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ‬
‫ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Node Terminal‬ﻓﻰ ‪ Block Diagram‬واﺧﺘﻴﺎر ‪Create‬‬

‫اﺧﺘﻴﺎر اﻟﻮﺣﺪات )‪: (Objects‬‬

‫‪ Positioning‬ﻻﺧﺘﻴﺎر وﺗﺤﺮﻳﻚ اﻟﻮﺣﺪات ﻓﻰ ‪ Front Panel‬او ‪Block‬‬ ‫ﺗﺴﺘﺨﺪم اﻻداة‬


‫‪. Diagram‬‬

‫‪1‬‬
‫ﻋﻠﻰ اﻟﻮﺣﺪات اﻟﻤﺮاد‬ ‫وﻻﺧﺘﻴﺎر اآﺜﺮ ﻣﻦ وﺣﺪة ﻧﻀﻐﻂ اﻟﻤﻔﺘﺎح ‪ Shift‬ﻣﻊ اﻟﻀﻐﻂ ﺑﺎﻻداة‬
‫اﺧﺘﻴﺎرهﺎ‪.‬‬

‫ﻋﻠﻰ اى ﻣﻜﺎن وﺳﺤﺐ ااﻟﻤﺆﺷﺮ ﻣﻊ اﺳﺘﻤﺮار اﻟﻀﻐﻂ ﻟﻨﺨﺘﺎر ﺟﻤﻴﻊ‬ ‫وﻳﻤﻜﻦ اﻳﻀﺎ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻻداة‬
‫اﻟﻮﺣﺪات اﻟﺘﻰ ﻧﺮﻳﺪهﺎ‬

‫ﺗﺤﺮﻳﻚ اﻟﻮﺣﺪات ‪:‬‬

‫ﻻﺧﺘﻴﺎر وﺗﺤﺮﻳﻚ اﻟﻮﺣﺪات ‪.‬‬ ‫ﺗﺴﺘﺨﺪم اﻻداة‬

‫‪2‬‬
‫ﻓﺒﻌﺪ اﺧﺘﻴﺎر اﻟﻮﺣﺪة ﻳﻤﻜﻨﻚ ان ﺗﻘﻮم ﺑﺴﺤﺒﻬﺎ اﻟﻰ اى ﻣﻜﺎن او ان ﺗﺴﺘﺨﺪم اﻻﺳﻬﻢ ﻓﻰ ﺗﺤﺮﻳﻚ اﻟﻮﺣﺪات‬
‫اﻟﻤﺨﺘﺎرة‪.‬‬
‫وﻳﻤﻜﻦ ﻋﻨﺪ اﺳﺘﺨﺪام اﻟﺴﻬﻢ ﻓﻰ اﻟﺘﺤﺮﻳﻚ ان ﺗﻀﻐﻂ اﻟﻤﻔﺘﺎح ‪ Shift‬ﻣﻊ اﻟﺴﻬﻢ ﻟﺘﺴﺮﻳﻊ ﻋﻤﻠﻴﺔ اﻟﺘﺤﺮﻳﻚ‪.‬‬

‫ﺣﺬف اﻟﻮﺣﺪات ‪:‬‬

‫ﺛﻢ ﺿﻐﻂ اﻟﻤﻔﺘﺎح ‪ Delete‬او اﺧﺘﻴﺎر ‪Edit>>Clear‬‬ ‫ﻳﺘﻢ ﺣﺬف اﻟﻮﺣﺪات ﺑﺎﺧﺘﻴﺎرهﺎ اوﻻ ﺑﺎﻻداة‬
‫اﻟﻐﺎء اﻟﺨﻄﻮات )‪: (Undo/Redo‬‬
‫ﻟﻮ ﻗﻤﺖ ﺑﻌﻤﻞ ﺑﻌﺾ اﻟﺨﻄﻮات وﺗﺮﻳﺪ اﻟﻐﺎﺋﻬﺎ اﺳﺘﺨﺪم ‪ Undo‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪ Edit‬وﻻﻋﺎدة ﺗﻠﻚ‬
‫اﻟﺨﻄﻮات ﺑﻌﺪ اﻟﻐﺎﺋﻬﺎ اﺧﺘﺮ ‪ Redo‬ﻣﻦ ﻧﻔﺲ اﻟﻘﺎﺋﻤﺔ‪.‬‬
‫ﻧﺴﺦ اﻟﻮﺣﺪات‪:‬‬
‫اذا اردت ان ﺗﺤﺼﻞ ﻋﻠﻰ اآﺜﺮ ﻣﻦ ﻧﺴﺨﺔ ﻣﻦ اى وﺣﺪة‪.‬‬

‫ﺛﻢ اﺧﺘﺮ ‪ Edit>>Copy‬ﺛﻢ اﺧﺘﺮ ‪.Edit>>Past‬‬ ‫اﺧﺘﺮ اﻟﻮﺣﺪة ﺑﺎﻻداة‬

‫ﺛﻢ ﻗﻢ ﺑﺎﻟﻀﻐﻂ اﻟﻤﻔﺘﺎح ‪ Ctrl‬ﺛﻢ اﺳﺤﺐ اﻟﻮﺣﺪة ﻻى ﻣﻜﺎن اﺧﺮ ﻣﻊ‬ ‫او اﺧﺘﺮ اﻟﻮﺣﺪة ﺑﺎﻻداة‬
‫اﺳﺘﻤﺮار ﺿﻐﻂ اﻟﻤﻔﺘﺎح‬

‫‪.‬‬

‫‪3‬‬
‫اﺿﺎﻓﺔ ﻋﻨﻮان )‪: (Label‬‬
‫ﻳﺴﺘﺨﺪم اﻟﻌﻨﻮان ﻟﺘﻌﺮﻳﻒ اﻟﻮﺣﺪات ‪.‬‬

‫وﻳﻮﺟﺪ ﻧﻮﻋﺎن ﻣﻦ اﻟﻌﻨﺎوﻳﻦ )‪ (Labels‬وهﻤﺎ‬


‫‪ -‬ﻋﻨﺎوﻳﻦ ﺧﺎﺻﺔ ﺑﺎﻟﻮﺣﺪات )‪. (Owned Labels‬‬
‫ﻓﻠﻜﻞ وﺣﺪة ﻳﻮﺟﺪ ﻟﻬﺎ ﻋﻨﻮان ‪.‬هﺬا اﻟﻌﻨﻮان ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ ﻣﻜﺎﻧﻪ ﻣﻨﻔﺮدا وﻟﻜﻦ اذا ﻗﻤﺖ ﺑﺘﺤﺮﻳﻚ‬
‫اﻟﻮﺣﺪة ﺳﻮف ﻳﺘﺤﺮك ﻣﻌﻬﺎ اﻟﻌﻨﻮان اﻟﺨﺎص ﺑﻬﺎ‪.‬‬
‫وﻳﻤﻜﻦ اﻇﻬﺎر او اﺧﻔﺎء اﻟﻌﻨﻮان اﻟﺨﺎص ﺑﺎﻟﻮﺣﺪة‬

‫‪ -‬ﻋﻨﺎوﻳﻦ ﺣﺮة )‪: (Free Labels‬‬


‫وهﻰ ﻟﻴﺴﺖ ﻣﺮﺗﺒﻄﺔ ﺑﺄى وﺣﺪة وﻳﻤﻜﻦ اﺿﺎﻓﺘﻬﺎ او ﺗﺤﺮﻳﻜﻬﺎ او ﺣﺬﻓﻬﺎ دون اى ارﺗﺒﺎط ﺑﺄى‬
‫ﺷﻰء اﺧﺮ‪.‬‬
‫وهﻰ ﺗﺴﺘﺨﺪم ﻟﻠﻜﺘﺎﺑﺔ ﻓﻰ اى ﻣﻜﺎن ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ ﺳﻮاء ﻓﻰ ‪ Front Panel‬او ‪Block‬‬
‫‪.Diagram‬‬
‫‪ Labeling‬ﻋﻠﻰ اى ﻣﻜﺎن ﻓﺎرغ ﺛﻢ اآﺘﺐ ﻣﺎ ﺗﺮﻳﺪﻩ‬ ‫وﻻﻧﺸﺎء ﻋﻨﻮان ﺣﺮ اﺿﻐﻂ ﺑﺎﻻداة‬
‫اﻟﻤﻮﺟﻮدة ﻓﻰ ‪ Toolbar‬او اﺿﻐﻂ‬ ‫ﺛﻢ اﺿﻐﻂ ﻋﻠﻰ اى ﻣﻜﺎن اﺧﺮ او اﺿﻐﻂ ﻋﻠﻰ‬
‫اﻟﻤﻔﺘﺎح ‪. Enter‬‬

‫‪4‬‬
‫اﺧﺘﻴﺎر وﺣﺬف اﻟﺮواﺑﻂ )‪: (Wires‬‬
‫ﻳﺴﻤﻰ اى ﺟﺰء اﻓﻘﻰ او رأﺳﻰ ﻓﻰ اﻟﺮاﺑﻂ ﺑﺎﺳﻢ ‪. Wire Segment‬‬

‫وﻧﻘﻄﺔ اﻟﺘﻘﺎء اﺛﻨﻴﻦ ‪ Wire Segment‬ﺗﺴﻤﻰ ‪. Bend‬‬

‫ﻟﻜﻦ اذا آﺎت ﻧﻘﻄﺔ اﻻﻟﺘﻘﺎء ﺑﻴﻦ ﺛﻼﺛﺔ ‪ Wire Segment‬او اآﺜﺮ ﺗﺴﻤﻰ ‪. Junction‬‬

‫ﻳﻌﺮف ‪ Wire Branch‬ﻋﻠﻰ اﻧﻪ آﻞ ‪ Wire Segment‬اﻟﺘﻰ ﺗﺼﻞ ‪ Junction‬اﻟﻰ ‪Junction‬‬


‫او ‪ Junction‬اﻟﻰ ‪ Terminal‬او ‪ Terminal‬اﻟﻰ ‪ Terminal‬ﺑﺪون وﺟﻮد اى ‪Junction‬‬
‫ﺑﻴﻨﻬﻤﺎ‪.‬‬

‫‪5‬‬
‫‪.‬‬ ‫وﻻﺧﺘﻴﺎر ‪ Wire Segment‬ﻧﻀﻐﻂ ﻋﻠﻰ اﻟﺮاﺑﻂ ﺿﻐﻄﺔ واﺣﺪة ﺑﺎﺳﺘﺨﺪام اﻻداة‬

‫وﺑﺎﻟﻀﻐﻂ ﻣﺮﺗﻴﻦ ﻧﺨﺘﺎر ‪Branch‬‬

‫وﺑﺎﻟﻀﻐﻂ ﺛﻼث ﻣﺮات ﻣﺘﺘﺎﻟﻴﺔ ﻧﺨﺘﺎر اﻟﺮاﺑﻂ آﻠﻪ‬

‫‪6‬‬
‫ﺑﻌﺪ اﺧﺘﻴﺎر اى ﺟﺰء ﻳﻤﻜﻦ ﺣﺬﻓﻪ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻣﻔﺘﺎح ‪.Delete‬‬

‫اﻟﺮواﺑﻂ اﻟﻤﻘﻄﻮﻋﺔ )‪: (Broken wires‬‬


‫وهﻰ ﺗﻈﻬﺮ ﻓﻰ ﺻﻮرة ﺧﻂ ﻣﺘﻘﻄﻊ وهﻰ ﺗﻌﻨﻰ ان هﻨﺎك ﺧﻄﺄ ﻓﻰ اﻟﺘﻮﺻﻴﻞ ‪.‬هﺬا اﻟﺨﻄﺄ ﻳﻤﻜﻦ ان ﻳﺤﺪث‬
‫ﻻﺳﺒﺎب ﻋﺪﻳﺪة ﻣﻨﻬﺎ ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل ان ﺗﺼﻞ وﺣﺪﺗﻴﻦ ﻏﻴﺮ ﻣﺘﺠﺎﻧﺴﺘﻴﻦ ﻓﻰ ﻧﻮع اﻟﺒﻴﺎﻧﺎت ) ‪Data‬‬
‫‪. (Type‬‬

‫ﻋﻠﻰ اﻟﺨﻄﺄ ﻳﻈﻬﺮ ﻣﺮﺑﻊ ﻳﻮﺿﺢ ﺳﺒﺐ اﻟﺨﻄﺄ‬ ‫ﺑﺘﺤﺮﻳﻚ اﻻداة‬

‫ﻳﻤﻜﻦ ﺣﺬف اﻟﺮاوﺑﻂ اﻟﻤﻘﻄﻮﻋﺔ ﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﻌﺎدﻳﺔ ﺑﺎﺧﺘﻴﺎر اﻟﺮاﺑﻂ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻪ ﺛﻼث ﺿﻐﻄﺎت ﻣﺘﺘﺎﻟﻴﺔ‬
‫ﺛﻢ ﺿﻐﻂ اﻟﻤﻔﺘﺎح ‪. Delete‬‬
‫او ﺿﻐﻂ ‪ Remove Edit Wires‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪ Edit‬او ﺑﺎﻟﻀﻐﻂ ‪ Ctrl+B‬ﻟﺤﺬف ﺟﻤﻴﻊ اﻟﺮواﺑﻂ‬
‫اﻟﻤﻘﻄﻮﻋﺔ‪.‬‬

‫ﺗﺤﺬﻳﺮ ‪ :‬ﻳﺠﺐ ﺗﻮﺧﻰ اﻟﺤﺬر ﻋﻨﺪ ﺣﺬف ﺟﻤﻴﻊ اﻟﺮواﺑﻂ اﻟﻤﻘﻄﻮﻋﺔ وذﻟﻚ ﻻن ﻓﻰ ﺑﻌﺾ اﻻﺣﻴﺎن ﺗﻈﻬﺮ‬
‫ﺑﻌﺾ اﻟﺮواﺑﻂ ﻣﻘﻄﻮﻋﺔ ﻻﻧﻚ ﻟﻢ ﺗﻜﻤﻞ ﺑﻌﺪ ﺗﻮﺻﻴﻞ ﺑﺎﻗﻰ اﻟﺮواﺑﻂ‪.‬‬

‫‪7‬‬
‫ﺗﻐﻴﻴﺮ ﺧﺼﺎﺋﺺ اﻟﺨﻂ ‪:‬‬
‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ ‪ Font‬و ‪ Style‬و ﺣﺠﻢ اﻟﺨﻂ ﻷى ﻧﺺ ﺑﺎﺧﺘﻴﺎر اﻟﻨﺺ اﻟﺬى ﻧﺮﻳﺪ ﺗﻌﺪﻳﻞ ﺧﺼﺎﺋﺺ‬
‫اﻟﺨﻂ ﻟﻪ و ﺗﻐﻴﻴﺮ اﻟﺨﺼﺎﺋﺺ ﻣﻦ اﻟﻘﺎﺋﻤﺔ اﻟﻤﻨﺴﺪﻟﺔ ‪.Text Setting‬‬

‫ﺑﻌﺾ ‪ Controls‬او ‪ Indicators‬ﻟﻬﺎ اآﺜﺮ ﻣﻦ ﻧﺺ‪.‬‬


‫ﻣﺜﻞ ‪ Graph‬ﻟﻪ ﻋﻨﻮان و ‪ display indicator‬و ‪ X-Axis‬و ‪.Y-Axis‬‬
‫واﺧﺘﻴﺎر اﻟﺘﻌﺪﻳﻞ ﻣﻦ‬ ‫ﻳﻤﻜﻦ ﺗﻌﺪﻳﻞ ﺧﺼﺎﺋﺺ اﻟﺨﻂ ﻟﻜﻞ ﻧﺺ ﻣﻨﻔﺮدا ﺑﺘﻈﻠﻴﻞ اﻟﻨﺺ ﺑﻮاﺳﻄﺔ اﻻداة‬
‫اﻟﻘﺎﺋﻤﺔ ‪.Text Setting‬‬

‫‪8‬‬
‫ﻣﺤﺎزاة اﻟﻮﺣﺪات )‪: (Align Objects‬‬
‫اذا اردت ﻣﺤﺎزاة ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻮﺣﺪات ﻗﻢ ﺑﺎﺧﺘﻴﺎرهﺎ اوﻻ ﺛﻢ اﺧﺘﺮ ﻧﻮع اﻟﻤﺤﺎزاة ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪Align‬‬
‫‪.Objects‬‬

‫‪9‬‬
‫ﺿﺒﻂ اﻟﻤﺴﺎﻓﺎت ﺑﻴﻦ اﻟﻮﺣﺪات ‪:‬‬
‫اﺧﺘﺮ اﻟﻮﺣﺪات اﻟﺘﻰ ﺗﺮﻳﺪ ﺿﺒﻂ اﻟﻤﺴﺎﻓﺎت ﺑﻴﻨﻬﺎ ﺛﻢ اﺧﺘﺮ آﻴﻔﻴﺔ ﺿﺒﻂ اﻟﻤﺴﺎﻓﺎت ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪Distribute‬‬
‫‪Objects‬‬

‫ﻧﺴﺦ اﻟﻮﺣﺪات ﺑﻴﻦ ‪ VIs‬وﻣﻦ ﺗﻄﺒﻴﻘﺎت اﺧﺮى ‪:‬‬


‫ﻳﻤﻜﻦ ﻧﺴﺦ وﺣﺪات ﻣﻦ ‪ VI‬اﻟﻰ اﺧﺮى ﺑﺎﺳﺘﺨﺪام ‪ Edit>>Copy‬ﺛﻢ ‪ .Edit>>Past‬آﻤﺎ ﻳﻤﻜﻦ ﻧﺴﺦ‬
‫ﺻﻮر او ﻧﺼﻮص ﻣﻦ ﺗﻄﺒﻴﻘﺎت اﺧﺮى اﻟﻰ ‪ Front Panel‬او ‪.Block Diagram‬‬

‫ﺗﻐﻴﻴﺮ اﻟﻠﻮن ‪:‬‬


‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ اﻟﻠﻮن ﻟﻜﺜﻴﺮ ﻣﻦ اﻟﻮﺣﺪات وﻟﻜﻦ ﻟﻴﺲ آﻠﻬﻢ ‪ .‬ﻓﻤﺜﻼ ﻻ ﺗﺴﺘﻄﻴﻊ ﺗﻐﻴﻴﺮ ﻟﻮن ‪ Terminals‬ﻓﻰ‬
‫‪ Block Diagram‬ﻻﻧﻬﺎ داﻟﺔ ﻋﻠﻰ ‪.Data Type‬‬

‫ﺛﻢ اﺿﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ اﻟﻮﺣﺪة اﻟﺘﻰ ﺗﺮﻳﺪ ﺗﻐﻴﻴﺮ ﻟﻮﻧﻬﺎ‬ ‫وﻟﺘﻐﻴﻴﺮ اﻟﻠﻮن اﺧﺘﺮ اﻻداة ‪Coloring‬‬
‫ﺛﻢ اﺧﺘﺮ اﻟﻮن اﻟﺬى ﺗﺮﻳﺪﻩ‪.‬‬

‫‪10‬‬
‫ﻟﺠﻌﻞ اﻟﻮﺣﺪات ﺷﻔﺎﻓﺔ اﺧﺘﺮ ‪ T‬ﻣﻦ ﻟﻮﺣﺔ اﻻﻟﻮان )اﻟﻤﻮﺟﻮد داﺧﻞ اﻟﺪاﺋﺮاﻟﺼﻔﺮاء ﻓﻰ اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ(‬

‫ﺗﻤﺮﻳﻦ ﻋﻤﻠﻰ ﻋﻠﻰ ﺗﺤﺮﻳﺮ ‪:VI‬‬


‫ﺷﺎهﺪ اﻟﻌﺮض ‪ Editing Exercise‬اﻟﻤﻮﺟﻮد ﻣﻊ اﻟﺪرس ﻋﻠﻰ هﻴﺌﺔ ﺻﻔﺤﺔ اﻧﺘﺮﻧﺖ ﺛﻢ ﻗﻢ ﺑﺘﻨﻔﻴﺬﻩ ﻋﻤﻠﻴﺎ‬

‫‪11‬‬
‫اﻟﺘﻌﺮف ﻋﻠﻰ ‪LabVIEW Help‬‬

‫ﻧﻈﺮ ﻻهﻤﻴﺔ اﺳﺘﺨﺪام ‪ LabVIEW Help‬ﻓﻰ اﻧﺸﺎء واﺧﺘﺒﺎر ‪VI‬واﻟﺘﻌﺮف ﻋﻠﻰ اﻻﺧﻄﺎء اﻟﻤﻮﺟﻮدة‬
‫ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ‪.‬ﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ اﺳﺘﺨﺪام ‪ LabVIEW Help‬ﻗﺒﻞ اﻟﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ اﺧﺘﺒﺎر‬
‫‪.VI‬‬

‫اوﻻ ‪ -‬ﻧﺎﻓﺬة ‪: Context Help‬‬


‫ﺗﻈﻬﺮ هﺬة اﻟﻨﺎﻓﺬة اﻟﻤﻌﻠﻮﻣﺎت اﻻﺳﺎﺳﻴﺔ ﻋﻦ اﻟﻮﺣﺪات )‪ (Objects‬اﻟﻤﻮﺟﻮدة ﻓﻰ ‪ Front Panel‬او‬
‫‪.Block Diagram‬‬
‫ﻓﺒﺘﺤﺮﻳﻚ اﻟﻤﺆﺷﺮ ﻋﻠﻰ اى وﺣﺪة ﺗﻈﻬﺮ اﻟﻤﻌﻠﻮﻣﺎت اﻻﺳﺎﺳﻴﺔ ﻋﻦ هﺬة اﻟﻮﺣﺪة ﻓﻰ ﻧﺎﻓﺬة ‪Context‬‬
‫‪.Help‬‬

‫ﻻﻇﻬﺎر هﺬة اﻟﻨﺎﻓﺬة او اﺧﻔﺎﺋﻬﺎ ﻧﺨﺘﺎر‬


‫‪Help>>Show Context Help‬‬
‫)‪ (Show Context Help‬اﻟﻤﻮﺟﻮد ﻓﻰ ‪. Toolbar‬‬ ‫او ﻧﻀﻐﻂ ‪ Ctrl+H‬او ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ‬

‫‪12‬‬
‫ﻋﻨﺪ ﺗﺤﺮﻳﻚ اﻟﻤﺆﺷﺮ ﻋﻠﻰ اى وﺣﺪة ﻣﻮﺟﻮدة ﻓﻰ ‪ Front Panel‬او ‪SubVi ) Block Diagram‬‬
‫او ‪ Function‬او‪ Constant‬او ‪ Control‬او ‪ ( Indicator‬ﺗﻈﻬﺮ هﺬة اﻟﻮﺣﺪة ﻓﻰ ‪Context‬‬
‫‪ Help‬ﻋﻠﻰ ﺷﻜﻞ اﻳﻘﻮﻧﺔ )‪ (icon‬ﻣﻮﺿﺢ ﺑﻬﺎ ‪ Terminals‬وﻋﻨﺎوﻳﻨﻬﺎ‪.‬‬

‫وﺗﻮﺟﺪ ﺛﻼث اﻧﻮاع ﻣﻦ ‪:Terminals‬‬


‫‪: Required Terminals -1‬‬
‫ﻳﺠﺐ ان ﺗﻘﻮم ﺑﺎﻟﺘﻮﺻﻴﻞ اﻟﻴﻬﺎ واذ ﻟﻢ ﺗﻘﻢ ﺑﺎﻟﺘﻮﺻﻴﻞ اﻟﻴﻬﺎ ﻟﻦ ﻳﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ ﻗﺎﺑﻞ ﻟﻠﺘﻨﻔﻴﺬ وﺳﻴﻈﻬﺮ‬
‫‪.‬‬ ‫ﻣﻔﺘﺎح ‪ Run‬ﺑﻬﺬا اﻟﺸﻜﻞ‬
‫ﺗﻈﻬﺮ ﻋﻨﺎوﻳﻦ هﺬة ‪ Terminals‬ﻓﻰ ﻧﺎﻓﺬة ‪ Context Help‬ﺑﺎﻟﺨﻂ اﻟﻐﻠﻴﻆ )‪.(Bold‬‬

‫‪13‬‬
‫‪: Recommended Terminals -2‬‬
‫ﻳﻔﻀﻞ ان ﺗﻘﻮم ﺑﺎﻟﺘﻮﺻﻴﻞ اﻟﻴﻬﺎ) ﻳﻌﻨﻰ اﻧﻚ اذا ﻟﻢ ﺗﻘﻢ ﺑﺎﻟﺘﻮﺻﻴﻞ اﻟﻴﻬﺎ ﺳﺘﺄﺧﺬ هﺬة ‪Terminals‬‬
‫اﻟﻘﻴﻢ اﻻﻓﺘﺮاﺿﻴﺔ ‪ ( Default‬و ﺗﻈﻬﺮ ﻋﻨﺎوﻳﻦ هﺬة ‪ Terminals‬ﺑﺎﻟﺨﻂ اﻟﻌﺎدى )‪. (Plain text‬‬
‫وﻳﻤﻜﻦ ﺗﻨﻔﻴﺬ ‪ VI‬ﺑﺪون ﺗﻮﺻﻴﻞ هﺬة ‪ Terminals‬ﻓﻬﻰ ﺳﺘﺄﺧﺬ اﻟﻘﻴﻢ اﻻﻓﺘﺮﺿﻴﺔ‪.‬‬

‫‪14‬‬
‫‪: Optional Terminals -3‬‬
‫اﺧﺘﻴﺎرﻳﺔ اﻟﺘﻮﺻﻴﻞ ‪ .‬ﺗﻈﻬﺮ ﻋﻨﺎوﻳﻦ هﺬة ‪ Terminals‬ﺑﺎﻟﺨﻂ اﻟﺒﺎهﺖ‪.‬‬

‫ﻳﻮﺟﺪ ﺛﻼث ﻣﻔﺎﺗﻴﺢ ﻓﻰ ﻧﺎﻓﺬة ‪: Context Help‬‬


‫‪: Hide Optional Terminals and Full Path‬‬ ‫‪-1‬‬
‫ﻳﻘﻮم هﺬا اﻟﻤﻔﺘﺎح ﺑﺎﺧﻔﺎء او اﻇﻬﺎر ‪ Terminals‬اﻻﺧﺘﻴﺎرﻳﺔ آﻤﺎ ﻳﻘﻮم ﺑﻌﺮض ﻣﺴﺎر اﻟﻤﻠﻒ اﻟﺬى‬
‫ﺗﺨﺰن ﻓﻴﻪ اﻟﺪاﻟﺔ او ‪ SubVI‬آﺎﻣﻼ او اﻇﻬﺎر اﺳﻢ اﻟﺪاﻟﺔ ﻓﻘﻂ‪.‬‬

‫‪15‬‬
‫‪:Lock Context Help‬‬ ‫‪-2‬‬
‫هﺬا اﻟﻤﻔﺘﺎح ﻳﻘﻮم ﺑﺘﺜﺒﻴﺖ ﻣﺤﺘﻮﻳﺎت اﻟﻨﺎﻓﺬة ‪ Context Help‬ﻓﻔﻰ هﺬة اﻟﺤﺎﻟﺔ ﻋﻨﺪﻣﺎ ﻧﺸﻴﺮ ﺑﺎﻟﻤﺆﺷﺮ‬
‫ﻋﻠﻰ وﺣﺪات اﺧﺮى ﻻ ﺗﺘﻐﻴﺮ ﻣﺤﺘﻮﻳﺎت اﻟﻨﺎﻓﺬة‪.‬‬

‫‪: Detailed help‬‬ ‫‪-3‬‬


‫ﻟﻮ ان هﻨﺎك ﻣﻌﻠﻮﻣﺎت اآﺜﺮ ﻓﻰ ‪ LabVIEW Help‬ﻟﻠﻮﺣﺪة اﻟﻤﻌﺮوﺿﺔ ﻓﻰ ﻧﺎﻓﺬة ‪Context‬‬
‫او ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ آﻠﻤﺔ‬ ‫‪ Help‬ﻳﻤﻜﻦ ﻋﺮض هﺬة اﻟﻤﻌﻠﻮﻣﺎت ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ هﺬا اﻟﻤﻔﺘﺎح‬
‫‪ Detailed Help‬ﻓﻰ اﺳﻔﻞ اﻟﻨﺎﻓﺬة‪.‬‬

‫‪16‬‬
‫ﺛﺎﻧﻴﺎ ‪: LabVIEW Help -‬‬
‫ﻳﻮﺟﺪ ﻣﻊ ‪ LabVIEW‬ﻣﻠﻔﺎت ‪ Help‬آﺎﻣﻠﺔ ﻋﻦ اى ﺷﻰء ﺗﺮﻳﺪﻩ ﻟﻠﺒﺮﻣﺠﺔ ﺑﻮاﺳﻄﺔ ‪.LaBVIEW‬‬
‫وﻟﻘﺪ رأﻳﻨﺎ اﻧﻨﺎ ﻳﻤﻜﻦ ﻓﺘﺢ ‪ LabVIEW‬ﻣﻦ ﺧﻼل ﻧﺎﻓﺬة ‪.Context Help‬‬
‫آﻤﺎ ﻳﻤﻜﻦ ﻓﺘﺢ ‪ LabVIEW Help‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ‬
‫‪Help >>Search the LabVIEW Help‬‬

‫واﻳﻀﺎ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اى وﺣﺪة واﺧﺘﻴﺎر ‪Help‬‬

‫ﻣﺜﺎل ﻋﻠﻰ ‪Help‬‬

‫‪17‬‬
‫ﺛﺎﻟﺜﺎ ‪: NI Example Finder -‬‬
‫ﻳﻮﺟﺪ ﻣﻊ ﻧﺴﺨﺔ ‪ LabVIEW‬آﺜﻴﺮ ﻣﻦ اﻻﻣﺜﻠﺔ اﻟﺘﻰ ﻳﻤﻜﻦ ان ﺗﻘﻮم ﺑﺎﻟﺘﻌﺪﻳﻞ ﻓﻴﻬﺎ ﻟﺘﻨﺎﺳﺐ اﻟﺘﻄﺒﻴﻖ اﻟﺬى‬
‫ﺗﺮﻳﺪﻩ وﻳﻜﻦ ﻧﺴﺦ ﺑﻌﺾ اﻻﺟﺰاء ﻣﻨﻬﺎ ﻻﺳﺘﺨﺪاﻣﻬﺎ ﻓﻰ ﺗﻄﺒﻴﻘﻚ آﻤﺎ اﻧﻬﺎ ﺗﻔﻴﺪ ﻓﻰ ﻓﻬﻢ آﺜﻴﺮ ﻣﻦ‬
‫اﻟﻤﻮﺿﻮﻋﺎت ﻓﻰ ﺑﺮﻣﺠﺔ ‪.LabVIEW‬‬
‫وﻳﺴﺘﺨﺪم ‪ NI Example Finder‬ﻓﻰ اﻟﺒﺤﺚ واﻟﺤﺼﻮل ﻋﻠﻰ اﻟﻤﺜﺎل اﻟﺬى ﺗﺮﻳﺪﻩ ﺳﻮاء آﺎن ﻣﻮﺟﻮدا‬
‫ﻣﻊ ﻧﺴﺨﺔ ‪ LabVIEW‬او ﻋﻠﻰ ﻣﻮﻗﻊ ﺷﺮآﺔ ‪.NI‬‬
‫وﻳﺘﻢ اﺳﺘﺪﻋﺎء ‪ NI Example Finder‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ Find Examples‬ﻓﻰ اﻟﺸﺎﺷﺔ اﻻﻓﺘﺘﺎﺣﻴﺔ ﻟـ‬
‫‪.(Getting Started) LabVIEW‬‬

‫‪18‬‬
‫او ﺑﺎﺧﺘﻴﺎر‬
‫‪Help>>Find Example‬‬

‫و ‪ NI Example Finder‬ﺳﻬﻞ اﻻﺳﺘﺨﺪام ﻓﺒﻌﺪ ﺗﺤﺪﻳﺪ اﻟﻤﺜﺎل اﻟﺬى ﺗﺮﻳﺪﻩ ﺗﻘﻮم ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻪ‬
‫ﺑﺎﻟﻤﺎوس ﺿﻐﻄﺘﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ ﻟﻴﻘﻮم ‪ LabVIEW‬ﺑﺘﺤﻤﻴﻞ اﻟﻤﺜﺎل‪.‬‬

‫‪19‬‬
20
‫اﺻﻼح اﻻﺧﻄﺎء ﻓﻰ ‪VI‬‬
‫وهﺬا ﻳﻌﻨﻰ ان‬ ‫ﻋﻨﺪﻣﺎ ﻳﻮﺟﺪ ﺧﻄﺄ ﻣﺎ ﻓﻰ رﺑﻂ اﻟﻮﺣﺪات ﻓﻰ ‪ VI‬ﻳﻈﻬﺮ ﻣﻔﺘﺎح اﻟﺘﻨﻔﻴﺬ ﺑﻬﺬة اﻟﺼﻮرة‬
‫‪ VI‬ﺗﺤﺘﻮى ﻋﻠﻰ اﺧﻄﺎء و ﻏﻴﺮ ﻗﺎﺑﻠﻪ ﻟﻠﺘﻨﻔﻴﺬ‪.‬‬
‫ﻟﺘﻨﻔﻴﺬ ‪ VI‬ﻳﺠﺐ اﺻﻼح اﻻﺧﻄﺎء اوﻻ وﻟﻤﻌﺮﻓﺔ اﻻﺧﻄﺎء واﺳﺘﻜﺸﺎف اﺳﺒﺎﺑﻬﺎ ﻧﻀﻐﻂ اﻟﻤﻔﺘﺎح‬
‫او ﻧﺨﺘﺎر‬
‫‪View>>Error List‬‬

‫وذﻟﻚ ﻟﻌﺮض ﻧﺎﻓﺬة ﺑﻬﺎ ﻗﺎﺋﻤﺔ ﺑﺎﻻﺧﻄﺎء )‪(Error list‬‬

‫‪21‬‬
‫وﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻣﻔﺘﺎح ‪ Help‬ﻓﻰ اﻟﻘﺎﺋﻤﺔ اﻟﺴﺎﺑﻘﺔ ﻧﻌﺮض اﻟﻤﻮﺿﻮع اﻟﻤﻮﺟﻮد ﻓﻰ ‪LabVIEW‬‬
‫‪ Help‬واﻟﺬى ﻳﺸﺮح اﻟﺨﻄﺄ ﺑﺎﻟﺘﻔﺼﻴﻞ وﻃﺮﻳﻘﺔ اﺻﻼﺣﺔ ﺧﻄﻮة ﺑﺨﻄﻮة‪.‬‬
‫وﻣﻦ اآﺜﺮ اﻻﺧﻄﺎء ﺷﻴﻮﻋﺎ هﻰ اﻟﺮﺑﻂ ﺑﻴﻦ وﺣﺪﺗﻴﻦ ﻣﺨﺘﻠﻔﺘﻴﻦ ﻓﻰ ‪Data Type‬‬

‫وﻳﺠﺐ ان ﻳﺘﻢ اﺻﻼح ﺟﻤﻴﻊ اﻻﺧﻄﺎء واﻟﺘﺄآﺪ ﻣﻦ ﺟﻤﻴﻊ اﻟﺮوﺑﻂ )‪ (Wires‬ﺣﺘﻰ ﻳﺼﺒﺢ ﻣﻔﺘﺎح اﻟﺘﻨﻔﻴﺬ‬
‫اى ان ‪ VI‬ﻗﺎﺑﻠﺔ ﻟﻠﺘﻨﻔﻴﺬ‪.‬‬ ‫ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫‪22‬‬
‫اﺧﺘﺒﺎر ‪VI‬‬

‫اذا ﺗﻢ اﺻﻼح ﺟﻤﻴﻊ اﻻﺧﻄﺎء واﺻﺒﺤﺖ ‪ VI‬ﻗﺎﺑﻠﺔ اﻟﺘﻨﻔﻴﺬ وﻟﻜﻦ ﻟﻢ ﺗﻨﻔﺬ ‪VI‬ﺑﺎﻟﺼﻮرة اﻟﻤﺘﻮﻗﻌﺔ او اﻧﻬﺎ‬
‫ﺗﻌﻄﻰ ﺧﻄﺄ ﻓﻰ اﻟﻨﺘﺎﺋﺞ ﻓﻼﺑﺪ ﻣﻦ اﺧﺘﺒﺎر ﺗﻨﻔﻴﺬ ‪ .VI‬و ‪ LabVIEW‬ﻳﺘﻴﺢ ﻟﻨﺎ ﻋﺪة ادوات ﻟﺘﺘﺒﻊ ﺗﻨﻔﻴﺬ‬
‫اﻟﺒﺮﻧﺎﻣﺞ و اﺧﺘﺒﺎرﻩ ﻣﻨﻬﺎ‪:‬‬
‫‪ -1‬ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﺳﺘﺨﺪام ‪. Highlight Execution‬‬

‫( ﺛﻢ‬ ‫اﻟﻤﻮﺟﻮد ﻓﻰ ‪ Toolbar‬ﻓﻰ ‪) Block Diagram‬ﻳﺘﺤﻮل اﻟﻰ‬ ‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻣﻔﺘﺎح‬


‫ﻳﺘﻢ ﻋﺮض ﺣﺮآﺔ ﺗﻨﻔﻴﺬة اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﺒﻄﻰء ﻣﻊ ﻋﺮض ﺣﺮآﺔ ﺗﺪﻓﻖ‬ ‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻣﻔﺘﺎح اﻟﺘﻨﻔﻴﺬ‬
‫اﻟﺒﻴﺎﻧﺎت اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪-2‬اﻟﺘﻨﻔﻴﺬ ﺑﻨﻈﺎم اﻟﺨﻄﻮة )‪:(Single-Stepping‬‬


‫ﻓﻰ ﺑﻌﺾ اﻻﺣﻴﺎن ﺗﺤﺘﺎج ﻟﺘﻨﻔﻴﺬ ‪ Block Diagram‬ﻋﻠﻰ هﻴﺌﺔ ﺧﻄﻮات ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﻓﻰ آﻞ ﺧﻄﻮة‬
‫‪ Node‬واﺣﺪة وهﺬا ﻣﺎ ﻳﻌﺮف ﺑـ ‪ Single-Steping‬او اﻟﺘﻨﻔﻴﺬ ﺑﻨﻈﺎم اﻟﺨﻄﻮة ﺑﺨﻄﻮة‪.‬‬
‫اﻟﻤﻮﺟﻮدﻳﻦ ﻓﻰ ‪Toolbar‬‬ ‫و ‪Step Out‬‬ ‫و ‪Step Over‬‬ ‫ﺗﺴﺘﺨﺪم اﻟﻤﻔﺎﺗﻴﺢ ‪Step Into‬‬
‫ﻓﻰ ‪ Block Diagram‬ﻓﻰ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺧﻄﻮة ﺑﺨﻄﻮة‪.‬‬

‫‪23‬‬
‫وﻟﺒﺪاﻳﺔ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻨﻈﺎم اﻟﺨﻄﻮة ﻧﻀﻐﻂ اﺣﺪ اﻟﻤﻔﺎﺗﻴﺢ اﻟﺴﺎﺑﻘﺔ‪.‬‬
‫ﻳﺘﻢ ﺗﻨﻔﻴﺬ ‪ Node‬اﻟﺤﺎﻟﻴﺔ وﺗﻜﻮن‬ ‫و ‪Step Over‬‬ ‫وﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﻤﻔﺘﺎﺣﻴﻦ ‪Step Into‬‬
‫‪Node‬اﻟﺘﺎﻟﻴﺔ ﺟﺎهﺰة اﻟﺘﻨﻔﻴﺬ ﻓﻰ اﻟﺨﻄﻮة اﻟﺘﺎﻟﻴﺔ‪.‬‬
‫ﻳﺘﻢ ﺗﻨﻔﻴﺬ ‪ Node‬ﻓﻰ ﺧﻄﻮة واﺣﺪة وﻻ ﻳﺘﻢ اﻟﺪﺧﻮل ﻓﻴﻬﺎ‬ ‫ﻋﻨﺪ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﻤﻔﺘﺎح ‪Step Over‬‬
‫ﻓﻤﺜﻼ ﻟﻮ ان ‪ Node‬ﻋﺒﺎرة ﻋﻦ ‪ SubVI‬ﻓﺴﻮف ﻳﺘﻢ ﺗﻨﻔﻴﺬهﺎ آﺎﻣﻠﺔ ﻓﻰ ﺧﻄﻮة واﺣﺪة و ﻳﺘﻢ اﻻﻧﺘﻘﺎل اﻟﻰ‬
‫‪ Node‬اﻟﺘﺎﻟﻴﺔ ﻓﻰ اﻟﺨﻄﻮة اﻟﺘﺎﻟﻴﺔ دون اﻟﺪﺧﻮل ﻓﻰ اﻟﺘﻔﺎﺻﻴﻞ اﻟﺪاﺧﻠﻴﺔ ﻓﻰ ﺗﻨﻔﻴﺬ ﺗﻠﻚ ‪.SubVI‬‬
‫ﻳﺘﻢ اﻟﺪﺧﻮل ﻓﻰ ‪ SubVI‬ﺧﻄﻮة ﻟﺘﻨﻔﺬ ‪ SubVI‬ﺧﻄﻮة‬ ‫اﻣﺎ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﻤﻔﺘﺎح ‪Step Into‬‬
‫ﺑﺨﻄﻮة اﻳﻀﺎ‪.‬‬
‫ﻻﻧﻬﺎء ‪ Block Diagram‬او‪ Structure‬او ‪ VI‬اﻟﺬى ﻳﻨﻔﺬ ﺣﺎﻟﻴﺎ وﻗﺖ‬ ‫ﻳﺴﺘﺨﺪم ‪Step Out‬‬
‫اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﻤﻔﺘﺎح ﻟﻴﺘﻮف اﻟﺘﻨﻔﻴﺬ ﻋﻨﺪ اﻟﺨﻄﻮة ﻟﺘﺎﻟﻴﺔ او اﻧﺘﻬﺎء اﻟﺘﻨﻔﻴﺬ ﺗﻤﺎﻣﺎ‪.‬‬
‫ﺑﺘﺤﺮﻳﻚ ﻣﺆﺷﺮ اﻟﻤﺎوس ﻋﻠﻰ ﺗﻠﻚ اﻟﻤﻔﺎﺗﻴﺢ ﻓﻰ اى ﻣﺮﺣﻠﺔ ﺳﻮف ﻳﻈﻬﺮ ﻟﻨﺎ ﻧﺺ ﻳﻮﺿﺢ ﻣﺎ اﻟﺬى ﺳﻴﺤﺪث‬
‫ﻟﻮ ﺿﻐﻄﻨﺎ هﺬة اﻟﻤﻔﺎﺗﻴﺢ‪.‬‬

‫ﻟﺘﻜﻤﻠﺔ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﻄﺮﻳﻘﺔ‬ ‫ﻳﻤﻜﻦ اﺛﻨﺎء اﻟﺘﻨﻔﻴﺬ ﺑﻨﻈﺎم اﻟﺨﻄﻮة اﻟﻀﻐﻂ ﻋﻠﻰ ااﻟﻤﻔﺘﺎح ‪Pause‬‬
‫اﻟﻌﺎدﻳﺔ‬

‫‪24‬‬
‫ﻋﻨﺪ اﻟﺘﻨﻔﻴﺬ ﺑﺎﻟﺨﻄﻮة و ﺗﻔﻌﻴﻞ اﻟﻤﻔﺘﺎح ‪ Highlight‬ﻳﻈﻬﺮ ﺳﻬﻢ ﻋﻠﻰ اﻳﻘﻮﻧﺔ ‪ SubVI‬ﻋﻨﺪﻣﺎ ﻓﻰ ﺗﻜﻮن‬
‫ﻓﻰ ﺣﺎﻟﺔ ﺗﻨﻔﻴﺬ‪.‬‬

‫‪-3‬اﺳﺘﺨﺪام ‪. Probe‬‬
‫ﻳﺴﺘﺨﺪم ‪ Probe‬ﻟﻤﻌﺮﻓﺔ اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ اﻟﻤﺴﺎرات وﻗﺖ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪.‬‬ ‫وﻳﻤﻜﻦ وﺿﻊ ‪ Probe‬ﺑﺄﺳﺘﺨﺪام اﻻداة‬

‫• وﻳﺴﺘﺨﺪم ‪ Probe‬ﻓﻰ ﺣﺎﻟﺔ اذا آﺎن اﻟﺒﺮﻧﺎﻣﺠﻚ ﻣﻌﻘﺪا وﻳﻌﻄﻰ ﻧﺘﺎﺋﺞ ﻏﻴﺮ ﺻﺤﻴﺤﺔ ﻓﻬﻰ ﺗﺘﻴﺢ‬
‫ﻣﻌﺮﻓﺔ اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ اى ﻣﺴﺎر ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫‪25‬‬
‫• وﻳﻤﻜﻦ وﺿﻊ اآﺜﺮ ﻣﻦ ‪ Probe‬ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ‪ .‬وداﺋﻤﺎ ﻣﺎ ﻳﻜﻮن ‪ Probe‬ﻇﺎهﺮا ﻓﻰ اﻟﻤﻘﺪﻣﺔ‬
‫ﺳﻮاء آﻨﺖ ﺗﺴﺘﺨﺪم ‪ Front Panel‬او ‪.Block Diagram‬‬
‫• ﻳﻤﻜﻦ اﺳﺘﺨﺪام ‪ Probe‬ﻣﻊ اﻟﺘﻨﻔﻴﺬ ﺑﻮاﺳﻄﺔ ‪ Highlight‬او اﻟﺘﻨﻔﻴﺬ ﺧﻄﻮة ﺑﺨﻄﻮة او ﻣﻊ‬
‫‪) Breakpoints‬ﺳﻨﺸﺮﺣﻬﺎ ﻓﻰ اﻟﻔﻘﺮة اﻟﻘﺎدﻣﺔ( ﻟﻤﻌﺮﻓﺔ ﻣﻜﺎن اﻟﺨﻄﺄ ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬
‫• ﻻ ﻳﻤﻜﻦ ﺗﻌﺪﻳﻞ اﻟﻘﻴﻢ اﻟﺘﻰ ﺗﻈﻬﺮ ﻓﻰ ﻧﺎﻓﺬة ‪. Probe‬‬
‫• ﻻﻳﺘﺄﺛﺮ ﺗﻨﻔﻴﺬ ‪ VI‬ﺑـ ‪ Probes‬اﻟﻤﻮﺟﻮدة ﻋﻠﻰ ﻣﺴﺎراﺗﻬﺎ‪.‬‬

‫وﻳﻮﺟﺪ اآﺜﺮ ﻣﻦ ﻧﻮع ﻟﻠـ ‪:Probe‬‬


‫‪:Generic Probe-1‬‬
‫ﻳﺴﺘﺨﺪم ﻟﻌﺮض اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺗﺘﺪﻓﻖ ﺧﻼل اﺣﺪ اﻟﻤﺴﺎرات‪.‬‬

‫وﻳﻤﻜﻦ اﻟﺤﺼﻮل ﻋﻠﻰ ‪ Generic Probe‬ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻤﺴﺎر واﺧﺘﻴﺎر‬
‫‪ .Probe‬وهﺬا اذا ﻟﻢ ﻳﻜﻦ ﻣﺤﺪدا ﻣﻦ ﻗﺒﻞ ﻣﻦ ﺧﻼل ‪) Custom Probe‬ﺳﻴﺄﺗﻰ ﺷﺮﺣﻬﺎ ﻓﻰ هﺬا‬
‫اﻟﺪرس( ﻟﻨﻮع اﻟﺒﻴﺎﻧﺎت )‪ (Data Type‬اﻟﻤﻮﺟﻮد ﻋﻠﻰ هﺬا اﻟﻤﺴﺎر‪.‬‬

‫‪26‬‬
‫‪-2‬اﺳﺘﺨﺪام ‪ Indicator‬ﻓﻰ ‪:Probe‬‬
‫ﻳﻤﻜﻦ اﺳﺘﺨﺪام ‪ Indicator‬ﻓﻰ ‪ Probe‬ﻟﻌﺮض اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ اﻟﻤﺴﺎرات اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﻧﺴﺘﺨﺪم ‪ Indicator‬اﻟﻤﻨﺎﺳﺐ ﻟﻠﺒﻴﺎﻧﺎت‪.‬‬
‫ﻓﻤﺜﻼ ﻳﻤﻜﻦ اﺳﺘﺨﺪام ‪ Chart‬ﻓﻰ ‪ Probe‬ﻟﻤﻌﺮﻓﺔ اﻟﺒﻴﺎﻧﺎت اﻟﺪاﻟﺔ ﻋﻠﻰ اﺷﺎرة ﻋﻠﻰ اﺣﺪ اﻟﻤﺴﺎرات ‪.‬‬
‫وﻟﻮﺿﻊ ‪ Indicator‬ﻓﻰ ‪ Probe‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻤﺴﺎر وﻧﺨﺘﺎر‬
‫‪Custom Probe>>Controls‬‬
‫ﺛﻢ ﻧﺨﺘﺎر ‪ Control‬اﻟﺬى ﻧﺮﻳﺪﻩ‬

‫‪27‬‬
‫هﺬا هﻮ ‪ Probe‬اﻟﺬى ﺗﻢ ﻋﻤﻠﻪ‬

‫‪28‬‬
‫‪: Supplied Probes-3‬‬
‫وهﻰ ﻋﺒﺎرة ﻋﻦ ‪ VI‬ﺗﻌﻄﻰ ﻣﻌﻠﻮﻣﺎت اآﺜﺮ ﺷﻤﻮﻟﻴﺔ ﻋﻦ اﻟﺒﻴﺎﻧﺎت اﻟﻤﻮﺟﻮدة ﻋﻠﻰ اﻟﻤﺴﺎر‪.‬‬
‫وﻓﻤﺜﻼ ‪) VI Refnum Probe‬ﺳﻴﺘﻢ ﺷﺮح ‪ Refnum‬ﻓﻰ اﻟﺪروس اﻟﻘﺎدﻣﻪ ان ﺷﺎء اﷲ(ﻳﻌﻄﻰ‬
‫ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﺳﻢ ‪ VI‬و ﻣﺴﺎر ﺗﺨﺰﻳﻨﻪ و ﻗﻴﻤﻪ ‪ Hex‬اﻟﺨﺎﺻﺔ ﺑﺎﻟـ ‪.Ref‬‬
‫وﻳﻤﻜﻦ ان ﺗﺘﻔﺎﻋﻞ هﺬة ‪ Probe‬ﻣﻊ اﻟﺒﺮﻧﺎﻣﺞ ‪ .‬ﻓﻤﺜﻼ ﻳﻤﻜﻦ وﺿﻊ ﺷﺮط ﻋﻨﺪﻣﺎ ﻳﺘﺤﻘﻖ ﻋﻠﻰ اﻟﺒﻴﺎﻧﺎت‬
‫اﻟﻤﻮﺟﻮدة ﻋﻠﻰ اﻟﻤﺴﺎر ﻳﺘﻢ اﻳﻘﺎف ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‬

‫ﺗﻈﻬﺮ ‪ Supplied Probe‬ﻓﻰ اﻋﻠﻰ ﻗﺎﺋﻤﺔ ‪ .Custom Probe‬وهﻰ ﺗﺨﺘﻠﻒ ﺣﺴﺐ ﻧﻮع اﻟﺒﻴﺎﻧﺎت‬
‫اﻟﻤﻮﺟﻮدة ﻋﻠﻰ اﻟﻤﺴﺎر ‪.‬‬

‫‪29‬‬
30
‫‪:Custom Probe -4‬‬
‫ﻳﻤﻜﻦ ﻋﻤﻞ ‪ Custom Probe‬ﺧﺎص ﺑﻚ وذﻟﻚ ﺑﺎﻟﺘﻌﺪﻳﻞ ﻓﻰ ‪ Probe‬ﻣﻮﺟﻮد ﻓﻌﻼ او اﻧﺸﺎء ‪Probe‬‬
‫ﺟﺪﻳﺪ‪.‬وﻻﻧﺸﺎء ‪ Probe‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻤﺴﺎر ﺛﻢ ﻧﺨﺘﺎر‬
‫‪Custom Probe>>New‬‬
‫ﻓﺘﻈﻬﺮ ﻟﻨﺎ ﻣﺠﻤﻮع ﻧﻮاﻓﺬ ﺗﺤﺪد ﻣﻮاﺻﻔﺎت ‪ Probe‬اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫‪31‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﻋﻤﻞ ‪ Probe‬ﺧﺎص ﻟﻨﻮع ﻣﻌﻴﻦ ﻣﻦ اﻟﺒﻴﺎﻧﺎت )‪(Data Type‬ﻳﺼﺒﺢ هﺬا‬
‫‪ Probe‬هﻮ ‪ Probe‬اﻻﻓﺘﺮاﺿﻰ ﻟﻬﺬ اﻟﻨﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت اﻟﺬى ﻳﻈﻬﺮ ﻋﻨﺪﻣﺎ ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ‬
‫اﻟﻤﺴﺎر وﻧﺨﺘﺎر ‪.Probe‬‬

‫‪32‬‬
‫‪)Breakpoints-4‬ﻧﻘﺎط اﻟﺘﻮﻗﻒ(‪:‬‬

‫‪ Breakpoint‬ﻓﻰ ‪ Block Diagram‬ﻻﻳﻘﺎف ﺗﻨﻔﻴﺬ ‪VI‬‬ ‫ﺗﻮﺿﻊ ﻧﻘﺎط اﻟﺘﻮﻗﻒ ﺑﻮاﺳﻄﺔ اﻻداة‬
‫ﻋﻨﺪ وﺻﻮل اﻟﺘﻨﻔﻴﺬ اﻟﻰ هﺬة اﻟﻨﻘﺎط‪.‬‬

‫‪33‬‬
‫وﻳﻤﻜﻦ ان ﺗﻮﺿﻊ ‪ Break Point‬ﻋﻠﻰ ‪ VI‬او ‪ Node‬او ﻣﺴﺎر )‪ (Wire‬ﻓﻰ ‪Block diagram‬‬

‫ﻋﻨﺪﻣﺎ ﺗﺘﻮﻗﻒ ‪ VI‬ﻋﻨﺪ ﻧﻘﻄﺔ ﺗﻮﻗﻒ )‪ ( Breakpoint‬ﺗﻈﻬﺮ ﻧﺎﻓﺬة ‪ Block Diagram‬ﻓﻰ اﻟﻤﻘﺪﻣﺔ‬
‫وﻳﺤﺪث وﻣﻴﺾ ﻟﻠﻤﺴﺎر او ‪Node‬اﻟﺬى ﻳﺤﺘﻮى ﻧﻘﻄﺔ اﻟﺘﻮﻗﻒ‪.‬‬

‫‪34‬‬
‫ﻣﻤﺎ‬ ‫ﻋﻨﺪ ﺗﺤﺮﻳﻚ اداة ‪ Breakpoint‬ﻋﻠﻰ ﻧﻘﻄﺔ ﺗﻮﻗﻒ ﻣﻮﺟﻮدة ﻓﻌﻼ ﺗﻈﻬﺮ هﺬة اﻻداة ﺑﻬﺬا اﻟﺸﻜﻞ‬
‫ﻳﻌﻨﻰ ان هﻨﺎك ﻧﻘﻄﺔ ﺗﻮﻗﻒ ‪ Breakpoint‬ﺑﺎﻟﻀﻐﻂ ﺑﻬﺬة اﻻداة ﻋﻠﻰ ﻧﻘﻄﺔ اﻟﺘﻮﻗﻒ‪Breakpoint‬‬
‫ﺗﺰال ﺗﻠﻚ اﻟﻨﻘﻄﺔ‪.‬‬

‫‪ Pause‬اﻟﻤﻮﺟﻮد ﻓﻰ‬ ‫ﻋﻨﺪ ﺗﻮﻗﻒ ‪ VI‬ﻋﻨﺪ ﻧﻘﻄﺔ ﺗﻮﻗﻒ ‪ Breakpoint‬ﻳﻈﻬﺮ اﻟﻤﻔﺘﺎح‬

‫‪.‬‬ ‫‪Toolbar‬ﺑﻬﺬا اﻟﺸﻜﻞ‬


‫وﻓﻰ ﺗﻠﻚ اﻟﺤﺎﻟﺔ ﻳﻤﻜﻦ ﻋﻤﻞ اﺣﺪى ﺗﻠﻚ اﻟﺨﻄﻮات ‪:‬‬

‫اﻟﻤﻮﺟﻮدة ﻓﻰ ‪. Toolbar‬‬ ‫‪-1‬ﺗﻜﻤﻠﺔ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻨﻈﺎم اﻟﺨﻄﻮة ﺑﺨﻄﻮة ﺑﻮاﺳﻄﺔ اﻟﻤﻔﺎﺗﻴﺢ‬
‫‪ -2‬اﺳﺘﺨﺪام ‪ Probe‬ﻟﻠﺘﺄآﺪ ﻣﻦ اﻟﻘﻴﻢ ﻋﻠﻰ اﻟﻤﺴﺎرت‪.‬‬
‫‪-3‬ﺗﻐﻴﻴﺮ ﻗﻴﻢ اﻟـ ‪ Controls‬اﻟﻤﻮﺟﻮدة ﻓﻰ ‪.Front Panel‬‬

‫‪ Pause‬ﻟﺘﻜﻤﻠﺔ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺣﺘﻰ ﻳﺼﻞ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻰ ﻧﻘﻄﺔ ﺗﻮﻗﻒ اﺧﺮى او‬ ‫‪-4‬ﺿﻐﻂ اﻟﻤﻔﺘﺎح‬
‫ﺣﺘﻰ اﻧﺘﻬﺎ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺗﻤﺮﻳﻦ ﻋﻤﻠﻰ‪:‬‬
‫ﺷﺎهﺪ اﻟﻌﺮض ‪ Debug Exercise‬اﻟﻤﻮﺟﻮد ﻣﻊ اﻟﺪرس ﻋﻠﻰ هﻴﺌﺔ ﺻﻔﺤﺔ اﻧﺘﺮﻧﺖ ﺛﻢ ﻗﻢ ﺑﺘﻨﻔﻴﺬﻩ ﻋﻤﻠﻴﺎ‪.‬‬

‫‪35‬‬
‫اﻧﺘﻬﻰ اﻟﺪرس اﻟﺜﺎﻟﺚ ﺑﻔﻀﻞ اﷲ‬
‫واﻟﻰ اﻟﺪرس اﻟﺮاﺑﻊ ﺑﺎذن اﷲ ﺗﻌﺎﻟﻰ‬
‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫اﻟﺪرس اﻟﺮاﺑﻊ‬
‫اﻧﺸﺎء ‪SubVI‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


SubVI ‫اﻧﺸﺎء‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫اﻟﻔﻬﺮس‬

ii .................................................................................................... ‫هﺪف اﻟﺪرس‬


1 ................................................................................................ SubVI ‫ﻣﺎ هﻰ‬
1 ................................................................ The Icon and Connector Pane
2 ........................................................................................... The Icon-1
3 .......................................................................................... Icon Editor
5 ............................................................................... Connector Pane -2
6 ............................................ (Terminals Patterns) Terminals ‫ﺗﻐﻴﻴﺮ ﺷﻜﻞ‬
7 ............................................... Indicators ‫ و‬Controls ‫ ﺑـ‬Terminals ‫رﺑﻂ‬
11 ....................................................................................The Help Window
11 ........................................................................... Terminal ‫ ﺗﺤﺪﻳﺪ ﻧﻮع‬-1
12 ..................................................... VI ‫( ﻟﻠـ‬Documentation)‫ آﺘﺎﺑﺔ وﺻﻒ‬-2
13 ...................................................... Indicator ‫ و‬Control ‫آﺘﺎﺑﺔ وﺻﻒ ﻟﻠـ‬-3
15 ......................................................................................... SubVI ‫آﻴﻔﻴﺔ ﻋﻤﻞ‬
15 .................................................................. SubVI ‫ آﺎ‬VI ‫آﻴﻔﻴﺔ اﺳﺘﺨﺪام‬:‫اوﻻ‬
16 ......................................................................... ‫ ﺑﺎﻻﺧﺘﻴﺎر‬SubVI ‫ ﻋﻤﻞ‬:‫ﺛﺎﻧﻴﺎ‬
20 ................................................................................ Relink to SubVI
22 ...................................................................... The VI Hierarchy Window

LabVIEW ‫دروس ﺗﻌﻠﻴﻢ‬ i ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫هﺪف اﻟﺪرس‬

‫‪ -1‬اﻟﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ اﻧﺸﺎء و اﺳﺘﺨﺪام ‪.SubVI‬‬


‫‪ -2‬اﻟﺘﻌﺮف ﻋﻠﻰ اﻟﻬﻴﻜﻞ اﻟﺒﻨﺎﺋﻰ ﻟﻠـ ‪. VI‬‬
‫‪ -3‬اﻟﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ اﺳﺘﺨﺪام ﻣﺤﺮر اﻻﻳﻘﻮﻧﺎت ‪. Icon Editor‬‬
‫‪ -4‬اﻟﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ اﻋﺪد ‪. Connector Pane‬‬
‫‪ -5‬اﻟﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ ﻋﻤﻞ )وﺻﻒ( ‪ Documentation‬ﻟﻠـ ‪.VI‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪ii‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫ﻣﺎ هﻰ ‪SubVI‬‬
‫هﻰ ‪ VI‬آﺎﻣﻠﺔ ﺗﺴﺘﺨﺪم ﻓﻰ ‪ Block Diagram‬اﻟﺨﺎص ﺑـ ‪ VI‬اﺧﺮى‪.‬‬
‫وهﻰ ﺗﻤﺎﺛﻞ ‪ Sub Routine‬ﻓﻰ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻻﺧﺮى ﻣﺜﻞ ‪.C‬‬

‫وهﺬة اﺣﺪى ﻣﻤﻴﺰات ‪ LabVIEW‬ﻓﺎن اى ‪ VI‬ﻗﻤﺖ ﺑﺎﻧﺸﺎﺋﻬﺎ ﻳﻤﻜﻦ ان ﺗﻌﻴﺪ اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻰ ‪ VI‬اﺧﺮى ﻟﺘﻜﻮﻳﻦ‬
‫وﻇﻴﻔﺔ اآﺒﺮ‪.‬‬
‫وﻳﻤﻜﻦ ان ﺗﺤﺘﻮى ‪ VI‬ﻋﻠﻰ ﻋﺪد ﻏﻴﺮ ﻣﺤﺪود ﻣﻦ ‪. SubVIs‬‬
‫وهﺬة ‪ SubVI‬اﻳﻀﺎ ﻳﻤﻜﻦ ان ﺗﺤﺘﻮى ﻋﻠﻰ اﻟﻌﺪﻳﺪ ﻣﻦ ‪.SubVIs‬‬
‫وهﺬا ﻣﺎ ﻳﺴﻤﻰ ﺑﻄﺒﻴﻌﺔ اﻟﺒﻨﺎء اﻟﻬﻴﻜﻠﻰ )‪ (Hierarchical Nature‬ﻓﻰ ‪ . LabVIEW‬ﻓﻜﻞ ‪ SubVI‬ﻳﻤﻜﻦ ان‬
‫ﺗﺤﺘﻮى هﻰ اﻻﺧﺮى ﻋﻠﻰ ‪.SubVIs‬‬

‫‪The Icon and Connector Pane‬‬


‫ﺑﻌﺪ ﺑﻨﺎء ‪ Front Panel‬و ‪ Block Diagram‬اﻟﺨﺎﺻﺔ ﺑـ ‪ VI‬ﻳﺠﺐ ان ﺗﺒﻨﻰ‬
‫‪ The Icon and Connector Pane‬اﻟﺨﺎﺻﺔ ﺑﻬﺎ ﻟﻜﻰ ﺗﺴﺘﻄﻴﻊ اﺳﺘﺨﺪاﻣﻬﺎ آﺎ ‪.SubVI‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪1‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫‪The Icon-1‬‬
‫ﻋﻠﻤﻨﺎ ﻣﻦ اﻟﺪرس اﻻول ان ﻟﻜﻞ ‪ VI‬ﻳﻮﺟﺪ ‪. Icon‬هﺬة اﻻﻳﻘﻮﻧﻪ ﻣﻮﺟﻮدة ﻓﻰ اﻟﺮآﻦ اﻟﻌﻠﻮى اﻻﻳﻤﻦ ﻣﻦ ﻧﺎﻓﺬة‬
‫‪ Front panel‬او ‪.Block diagram‬‬

‫وهﺬة اﻻﻳﻘﻮﻧﺔ هﻰ ﺗﻤﺜﻞ ‪ VI‬وهﺬة اﻻﻳﻘﻮﻧﺔ ﻳﻤﻜﻦ ان ﺗﺤﺘﻮى ﻋﻠﻰ رﺳﻢ او آﺘﺎﺑﺔ او آﻼهﻤﺎ‪.‬‬

‫واﻟﺮﻗﻢ اﻟﻤﻮﺟﻮد ﻋﻠﻰ اﻻﻳﻘﻮﻧﻪ هﻮ ﻳﺪل ﻋﻠﻰ ﻋﺪد ‪ VI‬اﻟﺠﺪﻳﺪة اﻟﺘﻰ ﺗﻢ ﻓﺘﺤﻬﺎ‬ ‫و اﻟﺸﻜﻞ اﻟﻤﺒﺪﺋﻰ ﻟﻼﻳﻘﻮﻧﺔ هﻮ‬
‫ﻣﻨﺬ ﺗﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺞ ‪ . LabVIEW‬ﺑﻤﻌﻨﻰ اﻧﻚ اذا ﻗﻤﺖ ﺑﻌﻤﻞ ‪ VI‬ﺟﺪﻳﺪة اﺧﺮى ﺳﺘﻜﻮن اﻳﻘﻮﻧﺘﻬﺎ ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫ﻻﺣﻆ ان اﻟﺮﻗﻢ ازداد واﺣﺪ‪.‬‬


‫وﻳﻤﻜﻦ ﺗﻌﺪﻳﻞ هﺬة اﻻﻳﻘﻮن اﻟﻰ اﻟﺸﻜﻞ اﻟﺬى ﺗﺮﻳﺪﻩ وذﻟﻚ‬
‫• ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻻﻳﻘﻮﻧﺔ واﺧﺘﻴﺎر ‪. Edit Icon‬‬
‫• او ﺑﺎﻟﻀﻐﻂ ﺿﻐﻄﺘﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ ﻋﻠﻰ اﻻﻳﻘﻮﻧﺔ ‪.‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪2‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫• او ﺑﺎﺧﺘﻴﺎر‬
‫‪File >>VI Properties‬‬
‫ﺛﻢ اﺧﺘﻴﺎر ‪ General‬ﺛﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ‪Edit Icon‬‬

‫آﻞ اﻟﺨﻴﺎرات اﻟﺴﺎﺑﻘﺔ ﺗﺆدى اﻟﻰ ﻓﺘﺢ ‪.Icon Editor‬هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻳﺘﻴﺢ ﺗﻌﺪﻳﻞ ﺷﻜﻞ اﻻﻳﻘﻮﻧﺎت‪.‬‬
‫‪Icon Editor‬‬
‫ﺑﻬﺬا اﻟﺒﺮﻧﺎﻣﺞ ﺗﺴﺘﻄﻴﻊ ﺗﺼﻤﻴﻢ ‪ Icon‬اﻟﺘﻰ ﺗﺮﻳﺪهﺎ ‪.‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪3‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫وﻳﻮﺟﺪ ﻓﻰ ﺑﺮﻧﺎﻣﺞ ‪ Icon Editor‬ﻋﺪة اداوت وهﻰ آﺎﻟﺘﺎﻟﻰ‪:‬‬


‫اﻻداة ‪ Pencil‬ﻟﻠﺮﺳﻢ او اﻟﻤﺴﺢ ﻧﻘﻄﺔ ﺑﻨﻘﻄﺔ‪.‬‬
‫اﻻداة ‪ Line‬ﻟﺮﺳﻢ اﻟﺨﻄﻮط‪ .‬و اذا اردت ان ﻳﻜﻮن اﻟﺨﻂ اﻓﻘﻴﺎ او راﺳﻴﺎ اﺿﻐﻂ اﻟﻤﻔﺘﺎح ‪ Shift‬اﺛﻨﺎء‬
‫رﺳﻢ اﻟﺨﻂ‪.‬‬
‫اﻻداة ‪ Color Copy‬ﻟﻨﺴﺦ ﻟﻮن ﻣﻮﺟﻮد ﻓﻰ ‪ Icon‬ﻟﻴﻜﻮن ﻟﻮن اﻟﻜﺘﺎﺑﺔ‪.‬‬
‫اﻻداة ‪ Fill‬ﻟﻤﻠﻰء ﻣﺴﺎﺣﺔ ﻣﺤﺪدة ﺑﻠﻮن اﻟﻜﺘﺎﺑﺔ ‪.‬‬
‫اﻻداة ‪ Rectangle‬ﻟﺮﺳﻢ ﻣﺴﺘﻄﻴﻞ ﻓﺎرغ ﺑﻠﻮن اﻟﻜﺘﺎﺑﺔ‪.‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ هﺬة اﻻداة ﺿﻐﺘﺘﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ ﻳﺘﻢ‬
‫رﺳﻢ اﻃﺎر ﺧﺎرﺟﻰ ﻟﻼﻳﻘﻮﻧﺔ آﻠﻬﺎ ﺑﻠﻮن اﻟﻜﺘﺎﺑﺔ‪.‬‬
‫اﻻداة ‪ Filled Rectangle‬ﻟﺮﺳﻢ ﻣﺴﺘﻄﻴﻞ اﻃﺎرﻩ ﺑﻠﻮن اﻟﻜﺘﺎﺑﺔ و ﻣﻈﻠﻞ ﺑﻠﻮن اﻟﺨﻠﻔﻴﺔ‪.‬‬
‫ﺑﺎﻟﻀﻐﻂ ﺿﻐﺘﺘﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ ﻋﻠﻰ هﺬة اﻻداة ﻳﺘﻢ رﺳﻢ ﻣﺴﺘﻄﻴﻞ ﻋﻠﻰ اﻻﻳﻘﻮﻧﻪ آﻠﻬﺎ اﻃﺎرﻩ ﺑﻠﻮن اﻟﻜﺘﺎﺑﺔ‬
‫وﻣﻈﻠﻞ ﺑﻠﻮن اﻟﺨﻠﻔﻴﺔ‪.‬‬
‫اﻻداة ‪ Select‬ﻻﺧﺘﻴﺎر ﻣﺴﺎﺣﺔ ﻣﻌﻴﻨﺔ ﻟﻤﺴﺤﻬﺎ او ﻧﺴﺨﻬﺎ او ﻧﻘﻠﻬﺎ اﻟﻰ ﻣﻜﺎن اﺧﺮ‪.‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ هﺬة اﻻداة ﺿﻐﻄﺘﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ ﺛﻢ اﻟﻀﻐﻂ ﻋﻠﻰ ﻣﻔﺘﺎح ‪ Delete‬ﻳﺘﻢ ﻣﺴﺢ ﻣﺤﺘﻮى اﻻﻳﻘﻮﻧﻪ‬
‫آﻠﻬﺎ‪.‬‬
‫اﻻداة ‪ Text‬ﻟﻠﻜﺘﺎﺑﺔ ﻋﻠﻰ اﻻﻳﻘﻮﻧﺔ‪.‬ﺑﺎﻟﻀﻐﻂ ﺿﻐﻄﺘﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ ﻳﺘﻢ ﻓﺘﺢ ﻧﺎﻓﺬة ﺑﻬﺎ ﺧﺼﺎﺋﺺ اﻟﺨﻂ وﻳﻤﻜﻦ‬
‫ﺗﻌﺪﻳﻞ ﺗﻠﻚ اﻟﺨﺼﺎﺋﺺ ‪.‬‬
‫ﻻﻇﻬﺎر و اﺧﺘﻴﺎر ﻟﻮن اﻟﻜﺘﺎﺑﺔ وﻟﻮن اﻟﺨﻠﻔﻴﺔ )ﻟﻮن اﻟﻜﺘﺎﺑﺔ هﻮ اﻟﻤﺴﺘﻄﻴﻞ اﻻﻣﺎﻣﻰ وﻟﻮن اﻟﺨﻠﻔﻴﺔ اﻟﻤﺴﺘﻄﻴﻞ‬
‫اﻟﺨﻠﻔﻰ( وﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اى اﻟﻤﺴﺘﻄﻴﻠﻴﻦ ﻳﺘﻢ اﺧﺘﻴﺎر اﻟﻠﻮن ‪.‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪4‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫‪Connector Pane -2‬‬


‫ﻟﻜﻰ ﺗﺴﺘﺨﺪم ‪ VI‬آﺎ ‪ SubVI‬ﻻﺑﺪ ﻣﻦ اﻋﺪاد ‪ Connector Pane‬ﻟﻬﺎ‬
‫و‪ Connector Pane‬ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ‪.Terminals‬‬
‫هﺬة ‪ Terminals‬ﺗﻤﺜﻞ ‪ Controls‬و ‪ Indicators‬ﻣﻮﺟﻮدة ﻓﻰ ‪.VI‬‬
‫و ‪ Connector Pane‬هﻰ ﺗﺤﺪد اﻟﻤﺪاﺧﻞ واﻟﻤﺨﺎرج ﻟﻠـ ‪ VI‬ﻟﻜﻰ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ آﺎ ‪. SubVI‬‬
‫وﻻﻇﻬﺎر ‪ Connector Pane‬ﻟﻠـ ‪ VI‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪Icon‬‬
‫وﻧﺨﺘﺎر ‪.Show Connector‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪5‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫آﻞ ﻣﺴﺘﻄﻴﻞ ﻓﻰ ‪ Connector Pane‬ﻳﻌﺒﺮ ﻋﻦ ‪ Terminal‬هﺬا ‪ Terminal‬ﻳﻤﻜﻦ ان ﻳﻤﺜﻞ ﻣﺪﺧﻞ او ﻣﺨﺮج‬


‫ﺣﺴﺐ هﻞ هﻮ ﻣﺮﺑﻮط ﺑـ‪ Control‬او ‪ Indicator‬آﻤﺎ ﺳﻨﺮى‪.‬‬
‫ﻳﻤﻜﻦ ان ﻳﺴﺎﻋﺪ هﺬا اﻟﺸﻜﻞ اﻟﺘﺨﻴﻠﻰ ﻋﻠﻰ ﺗﻘﺮﻳﺐ اﻟﺼﻮرة‬

‫ﻻﺣﻆ ﻣﻦ اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ اﻧﻪ ﻳﻤﻜﻦ ان ﻳﻮﺟﺪ ‪ Terminals‬ﻟﻴﺴﺖ ﻣﺮﺑﻮﻃﺔ ﺑﺎى ‪Control‬او ‪.Indicator‬‬
‫واﻳﻀﺎ ﻳﻤﻜﻦ ان ﻳﻜﻮن هﻨﺎك ‪ Control‬او ‪ Indicatror‬ﻟﻴﺲ ﻟﻪ ‪ Terminal‬ﻣﻘﺎﺑﻞ ﻓﻰ ‪.Connector Pane‬‬

‫ﺗﻐﻴﻴﺮ ﺷﻜﻞ ‪(Terminals Patterns) Terminals‬‬


‫ﻳﻤﻜﻦ ﺗﻐﻴﺮ اﻟﺸﻜﻞ اﻟﺘﻨﻈﻴﻤﻰ ﻟﻠـ ‪ Terminals‬او ﻋﺪد ‪ Terminals‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ‬
‫‪ Connector pane‬ﺛﻢ اﺧﺘﺮ ‪ Patterns‬ﺛﻢ اﺧﺘﺮ ‪ Pattern‬اﻟﺬى ﺗﺮﻳﺪﻩ‪.‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪6‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫وﻳﻔﻀﻞ ان ﺗﺨﺘﺎر ‪ Pattern‬ﺑﺤﻴﺚ ﻳﻜﻮن هﻨﺎك ‪ Terminals‬زاﺋﺪة اى ﻟﻦ ﺗﺮﺗﺒﻂ ﺑﺎى ‪ Control‬او ‪Indicator‬‬
‫ﻓﻰ اﻟﻮﻗﺖ اﻟﺤﺎﻟﻰ ﺣﺘﻰ ﻳﺴﻬﻞ اﻟﺘﻌﺪﻳﻞ اذا اﺣﺘﺠﺖ ان ﺗﻀﻴﻒ اى ‪ Control‬او ‪ Indicator‬ﻓﻰ اﻟﻤﺴﺘﻘﺒﻞ‪.‬‬
‫اﻗﺼﻰ ﻋﺪد ﻟﻠـ ‪ Terminals‬هﻮ ‪ 28‬ﻟﻜﻦ ﻳﻔﻀﻞ اﻻ ﺗﺴﺘﺨﺪم اآﺜﺮﻣﻦ ‪.16‬‬
‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ ﺗﺮﺗﻴﺐ ‪ Terminals‬ﻓﻰ ‪ Connector Pane‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس واﺧﺘﻴﺎر ‪Flip‬‬
‫‪) Horizontal‬دوران ﻋﻠﻰ اﻟﻤﺤﻮر اﻻﻓﻘﻰ( او ‪ ) Flip Vertical‬اﻟﺪوران ﻋﻠﻰ اﻟﻤﺤﻮر اﻟﺮأﺳﻰ( او ‪Rotate‬‬
‫‪ ) 90 Degree‬او اﻟﺪوران ‪ 90‬درﺟﺔ(‬
‫آﻤﺎ ﻳﻤﻜﻦ اﺿﺎﻓﺔ ‪ Terminal‬او ﺣﺬف ‪.Terminal‬‬

‫رﺑﻂ ‪ Terminals‬ﺑـ ‪ Controls‬و ‪: Indicators‬‬


‫ﺑﻌﺪ ﺗﺤﺪﻳﺪ ‪ Connector Pane‬ﻟﻠـ ‪ VI‬ﻳﺠﺐ رﺑﻂ ‪ Terminals‬اﻟﻤﻮﺟﻮدة ﻓﻰ ‪ Connector Pane‬ﺑـ‬
‫‪ Controls‬و ‪ Indicators‬اﻟﻤﻮﺟﻮدة ﻓﻰ ‪.Front Panel‬‬
‫وﻗﺒﻞ ﺗﻮﺿﻴﺢ آﻴﻔﻴﺔ ﻋﻤﻞ اﻟﺮﺑﻂ ﻧﺆآﺪ اﻧﻪ ﻳﻔﻀﻞ ﻋﻠﻰ ان ﻳﻜﻮن ‪ Inputs‬ﻋﻠﻰ اﻟﻴﺴﺎر ﻓﻰ ‪Connector pane‬‬
‫وﺗﻜﻮن ‪ Output‬ﻋﻠﻰ اﻟﻴﻤﻴﻦ وذﻟﻚ ﻟﺴﻬﻮﻟﺔ اﻻﺳﺘﺨﺪام وﺗﺠﻨﺐ اﻟﺘﻌﻘﻴﺪ‪.‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪7‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫آﻴﻔﻴﺔ اﻟﺮﺑﻂ ‪:‬‬


‫اﻇﻬﺮ ﻧﺎﻓﺬة ‪ Front Panel‬ﺛﻢ‬
‫‪ -1‬ﺑﺎﺳﺘﺨﺪام اﻻداة ‪ Wiring‬اﺿﻌﻂ ﻋﻠﻰ اﺣﺪ ‪ Terminal‬ﺳﺘﻼﺣﻆ ﺑﻌﺪ اﻟﻀﻐﻂ اﻧﻪ اﺻﺒﺢ ﻣﻈﻠﻞ‪.‬‬
‫‪-2‬اﺿﻐﻂ ﺑﻨﻔﺲ اﻻداة ﻋﻠﻰ ‪ Control‬او ‪ Indicator‬اﻟﺬى ﺗﺮﻳﺪ اﻟﺮﺑﻂ ﻣﻌﻪ ﺳﺘﻼﺣﻆ ان ‪ Control‬او‬
‫‪ Indicator‬ﻗﺪ اﺣﺎﻃﻪ ﺧﻂ ﻣﻨﻘﻂ ﻓﻬﻜﺬا ﺗﻢ رﺑﻂ ‪.Terminal‬‬
‫‪ -3‬اﻋﺪ ﻧﻔﺲ اﻟﺨﻄﻮات ﻣﻊ ﺑﺎﻗﻰ ‪.Terminals‬‬
‫‪-4‬وﻻﻧﻬﺎء ﻋﻤﻠﻴﺔ اﻟﺮﺑﻂ اﺿﻐﻂ ﻓﻰ اى ﻣﻜﺎن ﻓﺎرغ‪.‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪8‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫ﻣﻠﺤﻮﻇﺎت‪:‬‬
‫• ﻋﻠﻰ اﻟﺮﻏﻢ ﻣﻦ اﺳﺘﺨﺪام اﻻداة ‪ Wiring‬ﻓﻰ اﻟﺮﺑﻂ اﻻ اﻧﻪ ﻻﻳﻮﺟﺪ ﺧﻂ ﻳﺮﺑﻂ ﺑﻴﻦ ‪ Terminals‬و‬
‫‪ Controls‬او ‪.Indicators‬‬
‫• ﻓﻰ ﻋﻤﻠﻴﺔ اﻟﺮﺑﻂ ﻳﻤﻜﻦ ان ﺗﺨﺘﺎر ‪ Control‬او ‪ Indicator‬اوﻻ ﺛﻢ ‪.Terminal‬‬
‫• أذا ﺣﺪث ﺧﻄﺄ ﻓﻰ ﻋﻤﻠﻴﺔ اﻟﺮﺑﻂ ﻳﻤﻜﻦ ان ﺗﺰﻳﻞ آﻞ اﻟﺮواﺑﻂ ﺑﻴﻦ ‪ Terminals‬و ‪ Controls‬او‬
‫‪ Indicator‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ واﺧﺘﻴﺎر ‪.Disconnect all Terminals‬‬
‫• او ﻳﻤﻜﻦ ازاﻟﺔ اﻟﺮاﺑﻂ اﻟﺨﺎص ﻟـ ‪ Terminal‬واﺣﺪ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﺔ ﺑﺎﻟﺰر اﻻﻳﻤﻦ وأﺧﺘﻴﺎر‬
‫‪.Disconnect This Terminal‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪9‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫ﻟﻠﺮﺟﻮع ﻣﻦ ‪ Connector Pane‬اﻟﻰ ﺷﻜﻞ اﻻﻳﻘﻮﻧﺔ ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس واﺧﺘﻴﺎر ‪.Show Icon‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪10‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫‪The Help Window‬‬


‫ﻋﻨﺪ اﻇﻬﺎر ﻧﺎﻓﺬة ‪ Context Help‬وﺗﺤﺮﻳﻚ اﻟﻤﺆﺷﺮ ﻋﻠﻰ ‪ SubVI‬ﺗﻈﻬﺮ اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﺘﺎﺣﺔ ﻋﻦ هﺬة ‪.SubVI‬‬
‫هﺬة اﻟﻌﻠﻮﻣﺎت ﻣﺜﻞ ﺗﻌﺮﻳﻒ ‪ SubVI‬و ‪ Terminals‬اﻟﻤﻮﺟﻮدة وهﻞ هﺬة ‪ Required Terminals‬او‬
‫‪ Recommended‬او ‪ . Optional‬وﺗﻈﻬﺮ اﻟﻨﺎﻓﺬة اﻳﻀﺎ ﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ هﺬة ‪ .Terminal‬وهﺬا آﻠﻪ ﻗﺪ‬
‫رأﻳﻨﺎﻩ ﻓﻰ اﻟﺪرس اﻟﺴﺎﺑﻖ‪.‬‬
‫وﻟﻜﻦ ﻣﺎ ﻳﻬﻤﻨﺎ اﻻن آﻴﻔﻴﺔ اﻋﺪاد ﺗﻠﻚ اﻟﻤﻌﻠﻮﻣﺎت ﻟـ ‪ VI‬ﺟﺪﻳﺪة اﻟﺘﻰ ﺳﻮف ﻧﺴﺘﺨﺪﻣﻬﺎ ﻓﻴﻤﺎ ﺑﻌﺪ آﺎ ‪.SubVI‬‬

‫‪ -1‬ﺗﺤﺪﻳﺪ ﻧﻮع ‪. Terminal‬‬


‫ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻧﻮع ‪ Terminal‬ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Terminal‬اﻟﻤﻮﺟﻮد ﻓﻰ ‪Connector‬‬
‫‪ Pane‬واﺧﺘﻴﺎر ‪ This connection is‬ﺛﻢ ﻧﺨﺘﺎر ﻧﻮع ‪.Terminal‬‬
‫ﻻﺣﻆ ‪:‬‬
‫ان اﻻﺧﺘﻴﺎر اﻟﻤﺒﺪﺋﻰ ﻟﻨﻮع ‪ Terminal‬هﻮ ‪.Recommended‬‬
‫ﻟﻜﻰ ﺗﺠﻌﻞ ﺗﻮﺻﻴﻞ هﺬا ‪ Terminal‬ﺿﺮورى ﻟﻜﻰ ﺗﻜﻮن ‪ VI‬ﻗﺎﺑﻠﺔ ﻟﻠﺘﻨﻔﻴﺬ اﺟﻌﻞ ﻧﻮﻋﻪ ‪.Required‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪11‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫‪ -2‬آﺘﺎﺑﺔ وﺻﻒ)‪ (Documentation‬ﻟﻠـ ‪VI‬‬


‫وﻟﻜﺘﺎﺑﺔ وﺻﻒ ﻟﻠـ ‪ VI‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻻﻳﻘﻮﻧﻪ ﺛﻢ ﻧﺨﺘﺎر ‪VI Properties‬‬

‫ﻟﺘﻈﻬﺮ ﻟﻨﺎ هﺬة اﻟﻨﺎﻓﺬة‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪12‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫‪-3‬آﺘﺎﺑﺔ وﺻﻒ ﻟﻠـ ‪ Control‬و ‪. Indicator‬‬


‫ﻳﻔﻀﻞ ﻋﻨﺪ ﺗﺼﻤﻴﻢ ‪ VI‬ﺟﺪﻳﺪة ان ﺗﻘﻮم ﺑﻌﻤﻞ وﺻﻒ ﻟﻜﻞ ‪ Control‬او ‪ Indicator‬ﻓﻴﻬﺎ ‪.‬‬
‫وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Control‬او ‪ Indicator‬واﺧﺘﻴﺎر ‪Description and Tip‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪13‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪14‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫آﻴﻔﻴﺔ ﻋﻤﻞ ‪SubVI‬‬


‫ﻳﻮﺟﺪ ﻃﺮﻳﻘﺘﻴﻦ ﻟﻌﻤﻞ ‪: SubVI‬‬
‫اﻻوﻟﻰ ‪ :‬اﺳﺘﺨﺪام ‪ VI‬ﺗﻢ آﺘﺎﺑﺘﻬﺎ ﻣﻦ ﻗﺒﻞ آﺎ ‪. SubVI‬‬
‫اﻟﺜﺎﻧﻴﺔ ‪ :‬اﺧﺘﻴﺎر ﺟﺰء ﻣﻦ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓﻰ ‪ Block Diagram‬وﺗﺤﻮﻳﻠﻪ اﻟﻰ ‪.SubVI‬‬

‫اوﻻ‪:‬آﻴﻔﻴﺔ اﺳﺘﺨﺪام ‪ VI‬آﺎ ‪. SubVI‬‬


‫ﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻣﻦ آﺘﺎﺑﺔ ‪ VI‬وﺗﺠﻬﻴﺰ ‪ Connector Pane‬اﻟﺨﺎص ﺑﻬﺎ وﺗﺨﺰﻳﻨﻬﺎ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻰ ‪ VI‬اﺧﺮى آﺎ‬
‫‪.SubVI‬‬
‫وذﻟﻚ ﻳﺘﻢ ﺑﺎﺧﺘﻴﺎر ‪ Function Palette>> Select a VI‬ﻓﻰ ‪.Block Diagram‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪15‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫ﺛﺎﻧﻴﺎ‪ :‬ﻋﻤﻞ ‪ SubVI‬ﺑﺎﻻﺧﺘﻴﺎر ‪.‬‬


‫ﻳﻤﻜﻦ ان ﺗﺨﺘﺎر ﺑﺎﻻداة ‪ Positioning‬ﺟﺰء ﻣﻦ ‪ Block Diagram‬ﻳﻘﻮم ﺑﻮﻇﻴﻔﺔ ﻣﻌﻴﻨﺔ ﺛﻢ ﺗﺤﻮﻟﻪ اﻟﻰ ‪SubVI‬‬
‫وذﻟﻚ ﺑﺎﺧﺘﻴﺎر‬
‫‪Edit>>Create SubVI‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪16‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪17‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫وﻳﻤﻜﻦ ﻓﺘﺢ هﺬة ‪ SubVI‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻻﻳﻘﻮﻧﺔ ﺿﻐﺘﺘﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ ﺛﻢ ﺑﻌﺪ ذﻟﻚ ﻧﻘﻮم ﺑﺘﻌﺪﻳﻞ ﺷﻜﻞ اﻻﻳﻘﻮﻧﺔ و ﺗﺨﺰﻳﻦ‬
‫‪ VI‬آﻤﺎ ﺳﺒﻖ‪.‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪18‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫وﻳﻤﻜﻦ ان ﺗﻈﻬﺮ ‪ SubVI‬ﺑﺸﻜﻞ اﺧﺮ وهﻮ ‪ Expandable Icon‬وﻳﻈﻬﺮ هﺬا اﻟﺸﻜﻞ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ‬
‫ﻟﻠﻤﺎوس ﻋﻠﻰ اﻳﻘﻮﻧﺔ ‪ SubVI‬و اﺧﺘﻴﺎر ‪. View as Icon‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪19‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫‪Relink to SubVI‬‬
‫ﻋﻨﺪ ﺗﻌﺪﻳﻞ ‪ Conector Pane‬ﻟـ ‪) SubVI‬ﺑﺰﻳﺎدة ﻋﺪد ‪ Terminals‬ﻣﺜﻼ ( وآﺎﻧﺖ هﺬة ‪ SubVI‬ﻣﺴﺘﺨﺪﻣﺔ ﻗﺒﻞ‬
‫اﻟﺘﻌﺪﻳﻞ ﻓﻰ ‪ VI‬ﻓﺴﻮف ﺗﺤﺘﺎج ﻟﻌﻤﻞ اﻋﺎدة رﺑﻂ هﺬة ‪ SubVI‬ﻟﻜﻰ ﺗﺴﻄﻴﻊ ﺗﻨﻔﻴﺬ ‪.VI‬‬
‫واﻋﺎدة اﻟﺮﺑﻂ ﻳﺘﻢ آﺎﻟﺘﺎﻟﻰ‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪20‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪21‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫‪The VI Hierarchy Window‬‬


‫ﻋﻨﺪ ﺑﺪاﻳﺔ ﻋﻤﻞ ﻣﺸﺮوع ﻳﺘﻢ ﺗﻘﺴﻴﻢ اﻟﻤﺸﺮوع اﻟﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻤﻬﺎم وﺗﻘﺴﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻰ اﻟﻌﺪﻳﺪ ﻣﻦ‬
‫‪ .SubVIs‬وآﻠﻤﺎ ﺗﻌﻘﺪ اﻟﻤﺸﺮوع دﻋﺖ اﻟﺤﺎﺟﺔ ﻟﻮﺳﻴﻠﺔ ﻟﻤﺸﺎهﺪة آﻴﻔﻴﺔ اﻋﺘﻤﺎد هﺬة ‪ SubVIs‬ﻋﻠﻰ ﺑﻌﻀﻬﺎ وهﺬا‬
‫ﻣﺎ ﻳﺴﻤﻰ اﻟﻬﻴﻜﻞ اﻟﺒﻨﺎﺋﻰ ﻟﻠﻤﺸﺮوع‪.‬‬
‫وﻳﺘﻴﺢ ‪ LabIVEW‬هﺬة اﻟﻮﺳﻴﻠﺔ ﻣﻦ ﺧﻼل ‪ VI Hierarchy Window‬ﻓﻬﻰ ﺗﻈﻬﺮ ﺟﻤﻴﻊ ‪SubVI‬‬
‫اﻟﻤﻮﺟﻮدة ﺑﺎﻟﺬاآﺮة وﻳﺘﻜﻮن ﻣﻨﻬﺎ اﻟﻤﺸﺮوع ﻓﻰ هﻴﺌﺔ ﺷﺠﺮة ﺗﺴﻤﻰ ‪. VI Hierarchy‬‬

‫وﺗﺴﺘﺨﺪم ﻓﻰ هﺬا اﻟﻬﻴﻜﻞ اﺳﻬﻢ ﺻﻐﻴﺮة هﺬة اﻻﺳﻬﻢ ﺗﺪل ﻋﻠﻰ‬


‫• ﺳﻬﻢ اﺳﻮد ‪ :‬ﻳﺪل ان ﺟﻤﻴﻊ ‪ SubVIs‬ﻟﻞ ‪ VI‬اﻟﻤﻮﺟﻮد ﻋﻠﻴﻬﺎ اﻟﺴﻬﻢ ﻇﺎهﺮة ﻓﻰ اﻟﺸﻜﻞ‪.‬‬
‫• ﺳﻬﻢ اﺣﻤﺮ‪ :‬ﻳﺪل ان هﻨﺎك ‪ SubVIs‬ﻟﻞ ‪ VI‬اﻟﻤﻮﺟﻮد ﻋﻠﻴﻬﺎ اﻟﺴﻬﻢ ﻟﻴﺴﺖ ﻇﺎهﺮة ﻓﻰ اﻟﺸﻜﻞ‪.‬‬
‫• ﺳﻬﻢ ازرق ‪ :‬ﻳﻌﻨﻰ ان هﻨﺎك ‪ VI‬ﺗﻨﺎدى ﻋﻠﻰ ‪ SubVI‬اﻟﻤﻮﺟﻮد ﻋﻠﻴﻬﺎ اﻟﺴﻬﻢ وﻟﻜﻦ هﺬة ‪ VI‬ﻟﻴﺲ‬
‫ﻇﺎهﺮة ﻓﻰ اﻟﺸﻜﻞ‪.‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪22‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪23‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫ﻳﻤﻜﻦ اﻟﺒﺤﺚ ﻋﻦ ‪ SubVI‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﺣﺮوﻓﻬﺎ اﻻوﻟﻰ ﻣﺒﺎﺷﺮة اﺛﻨﺎء ﻣﺸﺎهﺪة ﻧﺎﻓﺬة ‪. VI Hierarchy‬‬

‫اﻟﺘﺪرﻳﺐ اﻟﻌﻤﻠﻰ ‪:‬‬


‫ﺷﺎهﺪ اﻟﻌﺮﺿﻴﻦ اﻟﻤﺮﻓﻘﻴﻦ ﻟﻠﺪرس ‪ Edit Icon‬و ‪ Thermometer‬وﻗﻢ ﺑﺎﻟﺘﺪرﻳﺐ ﻋﻠﻴﻬﻢ ﻋﻤﻠﻴﺎ‪.‬‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪24‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫اﻧﺸﺎء ‪SubVI‬‬ ‫اﻟﺪرس اﻟﺮاﺑﻊ‬

‫ﺗﻢ ﺑﺤﻤﺪ اﷲ اﻻﻧﺘﻬﺎء ﻣﻦ اﻟﺪرس اﻟﺮاﺑﻊ‬


‫اﻟﻰ اﻟﻠﻘﺎء ﺑﺎذن اﷲ ﺗﻌﺎﻟﻰ ﻣﻊ اﻟﺪرس اﻟﺨﺎﻣﺲ‬

‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬ ‫‪25‬‬ ‫ﻣﻨﺘﺪى ﻣﺮآﺰ اﻟﺮواد ﻟﻠﺘﻘﻨﻴﺔ‬


‫دروس ﺗﻌﻠﻴﻢ ‪LabVIEW‬‬

‫اﻟﺪرس اﻟﺨﺎﻣﺲ‬
‫‪Structures‬‬
‫اﻟﻔﻬﺮس‬

‫هﺪف اﻟﺪرس ‪iii ...................................................................................................‬‬


‫ﻣﻘﺪﻣﺔ ‪iv ...........................................................................................................‬‬
‫‪) Loops‬دوال اﻟﺘﻜﺮار( ‪1 .....................................................................................‬‬
‫‪2 ................................................................................................ For Loop‬‬
‫آﻴﻔﻴﺔ ادراج ‪3 ............................................................................. For Loop‬‬
‫ﺧﺎﺻﻴﺔ ‪5 ................................................................................Auto Grow‬‬
‫ﺣﺬف ‪6 ..................................................................................... For Loop‬‬
‫‪7 ........................................................................ Numeric Conversion‬‬
‫‪10 .......................................................................................... While Loop‬‬
‫آﻴﻔﻴﺔ ادراج ‪12 ....................................................................... While Loop‬‬
‫ﻣﻠﺤﻮﻇﺎت ﺣﻮل اﺳﺘﺨﺪام ‪ Terminals‬ﻣﻊ ‪14 ........................................ Loops‬‬
‫‪ Shift Registers‬و‪17 .......................................................... Fedback Node‬‬
‫‪18 ...................................................................................... Shift Register‬‬
‫آﻴﻔﻴﺔ اﺿﺎﻓﺔ ‪18 .................................................................. Shift Register‬‬
‫ﻣﺜﺎل ﻋﻠﻰ ‪20 ..................................................................... Shift Register‬‬
‫ﻣﺜﺎل ﺛﺎﻧﻰ ﻋﻠﻰ ‪22 .............................................................. Shift Register‬‬
‫اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪24 ............................................................. Shift Register‬‬
‫آﻴﻔﻴﺔ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪24 .............................................. Shift Register‬‬
‫ﻣﺎذا ﻳﺤﺪث اذا ﻟﻢ ﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪Shift Register‬؟ ‪24 .........................‬‬
‫‪27 ................................................................................... Feedback Nodes‬‬
‫ادراج ‪28 ...................................................................... Feedback Node‬‬
‫ﻣﺎذا ﻳﺤﺪث اذا ﻟﻢ ﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪Feedback Node‬؟ ‪29 .....................‬‬
‫‪30 ....................................................................................... Case Structure‬‬
‫آﻴﻔﻴﺔ ﺗﺤﺪﻳﺪ اﻟﺤﺎﻻت ﻣﻊ اﻻﻧﻮاع اﻟﻤﺨﺘﻠﻔﺔ ﻟﻠﻘﻴﻢ اﻟﻤﻮﺻﻠﺔ ﻟﻠـ ‪33 ......Selector Terminal‬‬
‫‪ Default Case‬او اﻟﺤﺎﻟﺔ اﻻﻓﺘﺮاﺿﻴﺔ ‪34 ............................................................‬‬
‫اﺿﺎﻓﺔ وﺣﺬف ﺣﺎﻻت‪38 ....................................................................................‬‬

‫‪i‬‬
39 ..............................................Case Structure ‫اﻻدﺧﺎل و اﻻﺧﺮاج ﻣﻦ و اﻟﻰ‬
41 .................................................................................................... Dialogs
41 ............................................................................Standard Dialogs-1
42 .......................................................................... One Button Dialog
43 .......................................................................... Two Button Dialog
44 .......................................................................... Two Button Dialog
44 ............................................................................. Express Dialogs-2
44 ....................................................... Display Message Express VI
46 ............................................................... Prompt User Express VI
49 ...................................................................... The Sequence Structure
49 ................................................................... Flat Sequence Structure
49 ........................................................... Stacked Sequence Structure
50 .................................................................. Sequence Structure ‫ادراج‬
51 ............................................................................... Sequence Local
52 ........................................................................ Sequence Local ‫اﺿﺎﻓﺔ‬
55 ......................................................................................... Timing ‫اﻟﻤﺆﻗﺘﺎت‬
55 ......................................................................................... ‫اﻟﺪوا ل اﻻﺳﺎﺳﻴﺔ‬
55 ................................................................................ Wait (ms) ‫ داﻟﺔ‬.1
56 ....................................................................... Wait Until Next ‫ داﻟﺔ‬.2
57 ..................................................................... Tick Count (ms) ‫ داﻟﺔ‬.3
58 ................................................................ Express Timing Functions
58 .............................................................. Time Delay Express VI .1
58 .......................................................... Elapsed Time Express VI .2
60 ........................................................................................ Formula Node
60 ..................................................................... Formula Node ‫آﻴﻔﻴﺔ ادراج‬
61 ........................................................... ‫اﺿﺎﻓﺔ ﻣﺘﻐﻴﺮات داﺧﻠﺔ وﻣﺘﻐﻴﺮات ﺧﺎرﺟﺔ‬
62 ......................................................... Forumla Node ‫آﺘﺎﺑﺔ اﻟﻤﻌﺎدﻻت داﺧﻞ‬
65 ................................................................................... Expression Node

ii
‫هﺪف اﻟﺪرس‬

‫• اﻟﺘﻌﺮف ﻋﻠﻰ دوال اﻟﺘﻜﺮار ‪ While Loop‬و‪.For Loop‬‬


‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Shift Registers‬و ‪.Feedback node‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪.Case Structure‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Dialogs‬واﻟﻄﺮق اﻟﻤﺨﺘﻠﻔﺔ ﻻﺧﺮاج رﺳﺎﺋﻞ ﻟﻠﻤﺴﺘﺨﺪم اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪.Flat and Stacked Sequence Structure‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ﻃﺮق ﻋﻤﻞ اﻟﺘﺎﺧﻴﺮات اﻟﺰﻣﻨﻴﺔ وﺣﺴﺎب اﻟﻮﻗﺖ ﻓﻰ اﻟﺒﺮاﻣﺞ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Formula Node‬و ‪ Expression Node‬ﻟﻜﺘﺎﺑﺔ وﺣﺴﺎب اﻟﻤﻌﺎدﻻت‬
‫اﻟﺮﻳﺎﺿﻴﺔ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪iii‬‬
‫ﻣﻘﺪﻣﺔ‬

.Block Diagram ‫ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ‬Nodes ‫ هﻰ اﺣﺪ اهﻢ اﻧﻮاع‬Structures


: LabVIEW ‫ اﻻﺳﺎﺳﻴﺔ ﻓﻰ‬Structures ‫وﺳﻮف ﻧﺘﻌﺮف ﻓﻰ هﺬا اﻟﺪرس ﻋﻠﻰ‬
For Loop •
While loop •
Case Structure •
Sequences Structure •
Formula Node •

iv
‫‪) Loops‬دوال اﻟﺘﻜﺮار(‬

‫ﺗﺴﺘﺨﺪم ‪ Loops‬ﻟﺘﻜﺮار ﺗﻨﻔﻴﺬ ﺟﺰء ﻣﻦ اﻟﻜﻮد‪.‬وﻳﻮﺟﺪ ﻓﻰ ‪ LabVIEW‬ﻧﻮﻋﺎن اﺳﺎﺳﻴﺎن ﻣﻦ‬


‫‪ Loops‬هﻤﺎ ‪ For Loop‬و ‪.While Loop‬‬
‫‪ For Loop‬وهﻰ ﻟﺘﻜﺮار ﺗﻨﻔﻴﺬ ﺟﺰء ﻣﻌﻴﻦ ﻣﻦ اﻟﻜﻮد ﻋﺪد ﻣﺤﺪد ﻣﻦ اﻟﻤﺮات ‪.‬‬
‫ﻣﺜﺎل ‪ :‬ﺗﻜﺮار ﺟﻤﻊ رﻗﻤﻴﻦ ﺧﻤﺲ ﻣﺮات‬
‫‪ While Loop‬وهﻰ ﻟﺘﻜﺮار ﺟﺰء ﻣﻌﻴﻦ ﻣﻦ اﻟﻜﻮد ﺣﺘﻰ ﻳﺘﺤﻘﻖ ﺷﺮط ﻣﻌﻴﻦ اى ﺣﺘﻰ ﻳﻜﻮن هﺬا‬
‫اﻟﺸﺮط ‪ True‬او ‪ False‬ﺣﺴﺐ ﻧﻮع اﻟﺸﺮط اﻟﻤﺴﺘﺨﺪم آﻤﺎ ﺳﻨﺮى‪.‬‬
‫وﻳﺘﻢ ادراج ‪ While Loop‬و ‪ For Loop‬ﻣﻦ‬
‫‪Function Palette>>Programming>>Structures‬‬

‫‪1‬‬
‫‪For Loop‬‬
‫ﺗﺴﺘﺨﺪم ‪ For Loop‬ﻟﺘﻜﺮار ﺗﻨﻔﻴﺬ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﺑﺪاﺧﻠﻬﺎ ﻋﺪد ﻣﺤﺪد ﻣﻦ اﻟﻤﺮات‪.‬‬
‫وﻳﺴﻤﻰ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﺑﺪاﺧﻞ ‪ For Loop‬ﺑﺎﺳﻢ ‪.SubDiagram‬‬

‫وﻳﻮﺟﺪ ﻣﻊ ‪:Terminals 2 For loop‬‬


‫‪ Count Terminal‬وهﻮ ﻳﺤﺪد ﻋﺪد ﻣﺮات ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪ For loop‬وﻳﺘﻢ ﺗﻮﺻﻴﻞ اﻟﻌﺪد‬
‫ﻟﻪ ﻣﻦ اﻟﺨﺎرج واذا ﺗﻢ ﺗﻮﺻﻴﻞ ﻟﻪ اﻟﻌﺪد ﺻﻔﺮ ﻓﻠﻦ ﻳﻨﻔﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪.For Loop‬‬

‫‪ Iteration Terminal‬وهﻮ ﻳﺤﺘﻮى ﻋﻠﻰ ﻋﺪد اﻟﻤﺮات اﻟﺘﻰ ﺗﻢ ﺗﻨﻔﻴﺬهﺎ ‪.‬ﻓﻔﻰ اول ﻣﺮة ﻳﻨﻔﺬ‬
‫ﻓﻴﻬﺎ اﻟﻜﻮد ﻳﻜﻮن ﺑﺎﻟﻘﻴﻤﺔ ﺻﻔﺮ و ﻓﻰ اﻟﻤﺮة اﻟﺜﺎﻧﻴﺔ ﻳﻜﻮن ﺑﺎﻟﻘﻴﻤﺔ واﺣﺪ وهﻜﺬا ﺣﺘﻰ ﻳﺼﻞ اﻟﻰ اﻟﻌﺪد‬
‫‪.N-1‬‬
‫ﻓﻬﺬا ‪ Terminal‬ﻳﺄﺧﺬ اﻟﻘﻴﻢ ﻣﻦ ﺻﻔﺮ اﻟﻰ ‪ . N-1‬ﺣﻴﺚ ‪ N‬ﻳﺴﺎوى اﻟﻌﺪد اﻟﻤﻮﺻﻞ اﻟﻰ‬
‫‪) Count Termianl‬ﻋﺪد اﻟﻤﺮات اﻟﺘﻰ ﺳﻴﻨﻔﺬ ﻓﻴﻬﺎ اﻟﻜﻮد( ‪.‬‬

‫‪2‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬
‫هﻮ ‪ Long Integer‬ﻓﻬﻤﺎ ﻳﺄﺧﺬان ﻗﻴﻢ ﺻﺤﻴﺤﺔ ﻣﺎ ﺑﻴﻦ‬ ‫و‬ ‫اﻟـ ‪ Data Type‬ﻟﻜﻞ ﻣﻦ‬
‫ﺻﻔﺮ اﻟﻰ ‪.232-1‬ﻻﺣﻆ ان ﻟﻮﻧﻬﻤﺎ ازرق‪.‬‬
‫آﻴﻔﻴﺔ ادراج ‪For Loop‬‬
‫آﻤﺎ ذآﺮﻧﺎ ﺗﻮﺟﺪ ‪ For Loop‬ﻓﻰ‬
‫‪Function Palettes>>Programming>>Structures‬‬
‫‪.‬ﺛﻢ اﺑﺪأ ﻓﻰ رﺳﻢ ‪ For Loop‬ﻓﻰ اﻟﻤﻜﺎن‬ ‫اﺧﺘﺮ ‪ For Loop‬ﻟﻴﻈﻬﺮ اﻟﻤﺆﺷﺮ ﺑﻬﺬا اﻟﺸﻜﻞ‬
‫اﻟﺬى ﺗﺮﻳﺪﻩ‪.‬‬

‫‪3‬‬
‫ﻻﺣﻆ اﻧﻪ ‪:‬‬
‫• ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ اﺑﻌﺎد ‪ For Loop‬ﺑﺎﺳﺘﺨﺪام اﻻداة ‪ Positioning‬وذاﻟﻚ ﺑﺘﺤﺮﻳﻜﻬﺎ ﻋﻠﻰ‬
‫اﻃﺎر ‪ Loop‬ﻟﻴﺼﺒﺢ اﻟﻤﺆﺷﺮ ﻋﻠﻰ ﺷﻜﻞ ﺳﻬﻢ ﻓﻨﻀﻐﻂ ﺑﺎﻟﻤﺆﺷﺮ وﻧﺴﺤﺐ اﻻﻃﺎر ﻓﻰ‬
‫اﻻﺗﺠﺎة اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫• ﻳﻤﻜﻦ ادراج اى داﻟﺔ او ‪ SubVI‬او اى ‪ Structure‬داﺧﻞ ‪For Loop‬‬

‫‪4‬‬
‫• اﻳﻀﺎ ﻳﻤﻜﻦ ﺗﺤﺮﻳﻚ ‪ For Loop‬و ﻧﻘﻠﻬﺎ ﺑﻮاﺳﻄﺔ ‪.Positioning Tool‬‬
‫• ﻋﻨﺪ ﻧﻘﻞ ‪ For Loop‬ﻳﻨﺘﻘﻞ ﻣﻌﺎ ﻣﺎ ﺑﺪاﺧﻠﻬﺎ‪.‬‬
‫• ﻻﺣﻆ اﻧﻪ اذا ﻗﻤﺖ ﺑﺘﺤﺮﻳﻚ ‪ For Loop‬ﻟﺘﻐﻄﻰ ﻋﻠﻰ ‪ SubVI‬او داﻟﺔ ﺳﻴﻈﻬﺮ ﻇﻞ‬
‫ﻟﻬﺬة اﻟﺪاﻟﺔ ﻟﻴﺤﺬرك اﻧﻬﺎ ﻟﻴﺴﺖ داﺧﻞ ‪.For Loop‬‬

‫ﺧﺎﺻﻴﺔ ‪: Auto Grow‬‬


‫آﻞ ‪ Structure‬ﺑﻤﺎ ﻓﻴﻬﺎ ‪ For Loop‬ﻟﻬﺎ ﺧﺎﺻﻴﺔ ‪ Auto Grow‬وهﻰ ان ‪ For Loop‬ﺗﺘﺴﻊ‬
‫ﺗﻠﻘﺎﺋﻴﺎ ﻟﺘﺴﻊ آﻞ ﻣﺎ ﺑﺪاﺧﻠﻬﺎ وﻳﻜﻮن آﻠﻪ ﻇﺎهﺮا‪.‬‬
‫وﻳﻤﻜﻦ ﺗﻔﻌﻴﻞ هﺬا اﻟﺨﺎﺻﻴﺔ او اﻟﻐﺎﺋﻬﺎ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻃﺎر ‪Loop‬‬
‫واﺧﺘﻴﺎر او اﻟﻐﺎء اﺧﺘﻴﺎر ‪.Auto Grow‬‬

‫‪5‬‬
‫ﺣﺬف ‪: For Loop‬‬
‫• اذا اردت ﺣﺬف ‪ For Loop‬ﺑﻤﺎ ﻓﻰ داﺧﻠﻬﺎ اﺧﺘﺮ ‪ For Loop‬واﺿﻐﻂ ‪.Delete‬‬
‫• ﻟﺤﺬف ‪ For Loop‬ﻓﻘﻂ واﻻﺑﻘﺎء ﻋﻠﻰ ﻣﺎ ﺑﺪاﺧﻠﻬﺎ ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ‬
‫اﻃﺎر ‪ For Loop‬وﻧﺨﺘﺎر ‪Remove For Loop‬‬

‫‪6‬‬
‫‪: Numeric Conversion‬‬
‫هﻮ ‪ Long Integer‬اى رﻗﻢ‬ ‫ذآﺮﻧﺎ ﻣﻦ ﻗﺒﻞ ان ‪ Data Type‬ﻟﻠـ ‪Count Terminal‬‬
‫ﺻﺤﻴﺢ ﻣﺎ ﺑﻴﻦ اﻟﺼﻔﺮ و ‪.232-1‬‬
‫وﻳﻮﺟﺪ اﻧﻮاع اﺧﺮى ﻣﻦ ‪ Data Type‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠـ ‪ Control‬او ‪ Indicator‬اﻟﺮﻗﻤﻴﺔ ﻣﺜﻞ‬
‫‪Double-Precision‬و ‪. Single-Precision‬‬
‫ﻓﺎذا ﻗﻤﺖ ﺑﺘﻮﺻﻴﻞ ﺑﻴﻦ ‪ Terminals 2‬ﻣﺨﺘﻠﻔﻴﻴﻦ ﻓﻰ ﻧﻮع ‪ Data Type‬ﻓﺴﻮف ﻳﻘﻮم‬
‫‪ LabVIEW‬ﺑﺘﺤﻮﻳﻞ اﻟﻘﻴﻢ اﻟﺮﻗﻤﻴﺔ ﺑﻴﻦ اﻟﻨﻮﻋﻴﻦ اﻟﻤﺨﺘﻠﻴﻔﻴﻦ ‪.‬وﻋﻨﺪﺋﺬ ﻳﻀﻊ ‪ LabIVEW‬ﻧﻘﻄﺔ‬
‫ﻋﻠﻰ ‪ Terminal‬اﻟﻤﺤﻮل اﻟﻴﻪ وهﺬة اﻟﻨﻘﻄﺔ ﺗﺴﻤﻰ ‪.Coercion dot‬‬

‫آﺬﻟﻚ اذا ﻗﻤﺖ ﺑﺘﻮﺻﻴﻞ ‪ Terminal‬ﻟﻪ ‪ Data type‬ﻣﺨﺘﻠﻒ اﻟﻰ ‪Count Terminal‬‬
‫ﻓﺴﻮف ﻳﻘﻮم ‪ LabVIEW‬ﺑﻌﻤﻠﻴﺔ اﻟﺘﺤﻮﻳﻞ‪.‬‬

‫‪7‬‬
‫وﻟﺘﺠﻨﺐ ذﻟﻚ‬
‫‪ -1‬ﻧﻐﻴﺮ ‪ Data Type‬اﻟﺨﺎص ﺑﺎل ‪ Terminal‬اﻟﻤﻮﺻﻮل ﺑـ ‪Count Terminal‬‬
‫وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ واﺧﺘﻴﺎر ‪ Representation‬وﻧﺨﺘﺎر ‪.I32‬‬

‫وﻟﻪ‬ ‫‪-2‬ﻳﻤﻜﻦ اﻧﺸﺎء ‪ Constant‬او ‪ Control‬ﻳﺘﻢ ﺗﻮﺻﻴﻠﻪ ﺗﻠﻘﺎﺋﻴﺎ ﺑـ ‪Count Terminal‬‬


‫ﻧﻔﺲ ‪ . Data type‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪Count Terminal‬‬
‫واﺧﺘﻴﺎر ‪ Create>>Constant‬او ‪.Create>>Control‬‬

‫‪8‬‬
9
While Loop

.‫ ﺗﻌﻴﺪ ﺗﻜﺮار ﺗﻨﻔﻴﺬ اﻟﻜﻮد اﻟﺬى ﺑﺪاﺧﻠﻬﺎ ﺣﺘﻰ ﻳﺘﺤﻘﻖ ﺷﺮط ﻣﻌﻴﻦ‬Structure ‫هﻰ ﻋﺒﺎرة ﻋﻦ‬

Iteration Terminal ‫ وهﻤﺎ‬Terminals 2 ‫ ﻋﺪد‬While Loop ‫ﻳﻮﺟﺪ ﻟﻠـ‬


Conditional Terminal‫و‬

: Iteration Terminal-1
For Loop ‫ اﻟﻤﻮﺟﻮد ﻓﻰ‬Iteration Terminal ‫وهﻮ ﻣﺜﻞ‬

10
‫وهﻮ ﻳﺤﺘﻮى ﻋﻠﻰ ﻋﺪد اﻟﻤﺮات اﻟﺘﻰ ﺗﻢ ﺗﻨﻔﻴﺬ ﻓﻴﻬﺎ اﻟﻜﻮد داﺧﻞ ‪.While Loop‬ﻓﻔﻰ اول ﻣﺮة ﻳﻨﻔﺬ‬
‫ﻓﻴﻬﺎ اﻟﻜﻮد ﻳﻜﻮن ﺑﺎﻟﻘﻴﻤﺔ ﺻﻔﺮ وﻓﻰ آﻞ ﻣﺮة ﻳﻌﺎد ﻓﻴﻬﺎ ﺗﻨﻔﻴﺬ اﻟﻜﻮد ﻳﺰداد واﺣﺪ‪.‬‬

‫‪:Conditional Terminal-2‬‬
‫وهﺬا ‪ Terminal‬ﻳﺄﺧﺬ ﻗﻴﻢ ‪ True ) Boolean‬او ‪. ( False‬وﻳﺘﻢ اﻋﺎدة ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻞ‬
‫‪ While Loop‬ﺣﺘﻰ ﻳﻜﻮن اﻟﺪاﺧﻞ اﻟﻰ هﺬا ‪ Terminal‬اﻣﺎ اﻟﻘﻴﻤﺔ ‪ True‬او ‪ False‬وذﻟﻚ‬
‫ﻳﺘﻮﻗﻒ ﻋﻠﻰ ﻧﻮع ‪.Conditional Terminal‬‬
‫وﻳﻮﺟﺪ ﻧﻮﻋﺎن ﻟﻬﺬا ‪:Terminal‬‬

‫‪:‬‬ ‫أ‪Stop If True-‬‬


‫ﻳﺘﻮﻗﻒ ﺗﻜﺮار ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪ While Loop‬اذا آﺎﻧﺖ اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ﻟﻬﺬا ‪ Terminal‬هﻰ‬
‫‪.True‬‬
‫ﻓﻔﻰ آﻞ ﻣﺮة ﻳﻨﻔﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪ While Loop‬ﺛﻢ ﻳﺘﻢ ﻓﺤﺺ اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ﻟﻬﺬا ‪ Terminal‬ﻓﺎذا‬
‫آﺎﻧﺖ ‪ True‬ﻳﺘﻢ اﻟﺨﺮوج ﻣﻦ ‪ While Loop‬واذا آﺎﻧﺖ ‪ False‬ﻳﻌﺎد ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪While‬‬
‫‪.Loop‬‬

‫‪:‬‬ ‫‪Continue if True-2‬‬


‫ﻳﻌﺎد ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪ While Loop‬اذا آﺎﻧﺖ اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ﻟﻬﺬا ‪ Terminal‬هﻰ ‪.True‬‬

‫‪11‬‬
‫ﻓﻔﻰ آﻞ ﻣﺮة ﻳﻨﻔﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪ While Loop‬ﺛﻢ ﻳﺘﻢ ﻓﺤﺺ اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ﻟﻬﺬا ‪ Terminal‬ﻓﺎذا‬
‫آﺎﻧﺖ ‪ True‬ﻳﻌﺎد ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪ While Loop‬واذا آﺎﻧﺖ اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ‪ False‬ﻳﺘﻢ‬
‫اﻟﺨﺮوج ﻣﻦ ‪.While Loop‬‬

‫ﻻﺣﻆ اﻧﻪ‪:‬‬
‫• ﻓﻰ اى ﺣﺎﻟﺔ ﻳﻨﻔﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪ While Loop‬ﻣﺮة واﺣﺪة ﻋﻠﻰ اﻻﻗﻞ‪.‬‬
‫• ﻳﻤﻜﻦ اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ ‪ Terminals 2‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ ‪Terminal‬‬
‫واﺧﺘﻴﺎر اﻟﻨﻮع اﻻﺧﺮ‪.‬‬

‫آﻴﻔﻴﺔ ادراج ‪: While Loop‬‬


‫ﻳﻤﻜﻦ ادراج ‪ While Loop‬ﻣﻦ‬
‫‪Function Palettes>>Programming>>Structures‬‬

‫‪12‬‬
‫او ﻣﻦ‬
Function Palettes>>Express>>Execution Control

‫ ﻟﻴﻈﻬﺮ‬Function Palette ‫ ﻧﺨﺘﺎرهﺎ ﻣﻦ‬While Loop ‫ ﻻدراج‬For Loop ‫وﻣﺜﻞ‬


.While Loop ‫ﺛﻢ ﻧﻘﻮم ﺑﺮﺳﻢ‬ ‫اﻟﻤﺆﺷﺮ ﺑﻬﺬ اﻟﺸﻜﻞ‬

13
‫ﺗﺘﻔﻖ ‪ While Loop‬ﻣﻊ ‪ For Loop‬ﻓﻰ ‪:‬‬
‫‪-1‬آﻴﻔﻴﺔ ﺗﺤﺮﻳﻚ ‪ Loop‬وﻧﻘﻠﻬﺎ وﺗﻐﻴﻴﺮ اﺑﻌﺎدهﺎ‬
‫‪ -2‬ﻃﺮﻳﻘﺔ ﺣﺬف ‪Loop‬‬
‫‪ -3‬ﺧﺎﺻﻴﺔ ‪Auto Grow‬‬

‫ﻣﻠﺤﻮﻇﺎت ﺣﻮل اﺳﺘﺨﺪام ‪ Terminals‬ﻣﻊ ‪: Loops‬‬


‫ﺗﺪﺧﻞ اﻟﺒﻴﺎﻧﺎت و ﺗﺨﺮج ﻣﻦ واﻟﻰ ‪ Loops‬ﻣﻦ ﺧﻼل ﻣﺮﺑﻊ ﺻﻐﻴﺮ ﻳﺴﻤﻰ ‪Tunnel‬‬

‫‪14‬‬
‫وﻃﺒﻘﺎ ﻟﻤﻔﻬﻮم ‪ Dataflow‬ﻓﺈن اﻟﺒﻴﺎﻧﺎت اﻟﺪاﺧﻠﺔ ﻟﻠـ ‪ Loop‬ﺗﺪﺧﻞ اﻟﻰ ‪ Loop‬ﻗﺒﻞ ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻞ‬
‫‪ Loop‬اول ﻣﺮة‪.‬وﺗﺨﺮج اﻟﺒﻴﺎﻧﺎت ﻣﻦ ‪ Loop‬ﺑﻌﺪ ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪ Loop‬اﺧﺮ ﻣﺮة اى ﺑﻌﺪ‬
‫اﻧﺘﻬﺎء ﺗﻜﺮار ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻞ ‪.Loop‬‬

‫ﺑﻌﺾ اﻻﻣﺜﻠﺔ ‪:‬‬


‫• ‪Terminal‬داﺧﻞ ‪ Loop‬وﻣﻮﺻﻞ ﺑـ ‪Conditional Terminal‬‬

‫• ‪Terminal‬ﺧﺎرج ‪ Loop‬وﻣﻮﺻﻞ ﺑـ ‪Conditional Terminal‬‬

‫• ‪ Indicator Terminal‬داﺧﻞ ‪Loop‬‬

‫‪15‬‬
Loop ‫ وﻣﻮﺻﻞ ﺑـ‬Loop ‫ ﺧﺎرج‬Indicator Terminal •

:‫اﻣﺜﻠﺔ اﺧﺮى‬
Conditional Terminal:Stop If True ‫ اﻟﻰ‬False ‫• ﺗﻮﺻﻴﻞ ﺛﺎﺑﺖ ﻗﻴﻤﺘﻪ‬

Conditional Terminal:Stop If True ‫ اﻟﻰ‬True ‫• ﺗﻮﺻﻴﻞ ﺛﺎﺑﺖ ﻗﻴﻤﺘﻪ‬

16
‫‪ Shift Registers‬و‪Fedback Node‬‬

‫ﻋﻨﺪﻣﺎ ﺗﺘﻌﺎﻣﻞ ‪ Loops‬ﺳﻮاء ‪ For Loop‬او ‪ While Loop‬ﺳﺘﺠﺪ اﻧﻚ ﻓﻰ ﺣﺎﺟﺔ ﻟﻨﻘﻞ‬
‫اﻟﺒﻴﺎﻧﺎت ﻣﻦ اﻟﻤﺮات اﻟﺴﺎﺑﻘﺔ اﻟﺘﻰ ﺗﻢ ﺗﻨﻔﻴﺬ ﻓﻴﻬﺎ ﻣﺎ ﺑﺪاﺧﻞ ‪ Loop‬اﻟﻰ اﻟﻤﺮة اﻟﺘﻰ ﻳﻨﻔﺬ ﻓﻴﻬﺎ ﻣﺎ‬
‫ﺑﺪاﺧﻞ ‪ Loop‬اﻻن‪.‬‬
‫وﻟﻠﺘﻮﺿﻴﺢ ﺳﻮف ﻧﺴﻤﻰ ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺎﺧﻞ ‪ Loop‬ﺑﺎﺳﻢ ﺗﻨﻔﻴﺬة وﺳﻮف ﻧﻌﻄﻴﻬﺎ رﻗﻢ ﻳﺪل ﻋﻠﻰ‬
‫ﺗﺮﺗﺒﻴﻬﺎ ﻓﻰ اﻟﺘﻨﻔﻴﺬ ﻓﻤﺜﻼ اول ﻣﺮة ﻳﻨﻔﺬ ﻓﻴﻬﺎ ﻣﺎ ﺑﺪاﺧﻞ ‪ Loop‬ﻧﻄﻠﻖ ﻋﻠﻴﻬﺎ ﺗﻨﻔﻴﺬة‪ 1‬وﺛﺎﻧﻰ ﻣﺮة‬
‫ﻧﻄﻠﻖ ﻋﻠﻴﻬﺎ ﺗﻨﻔﻴﺬة‪ 2‬وهﻜﺬا ﺗﻨﻔﻴﺬ‪ 3‬وﺗﻨﻔﻴﺬة‪ ... 4‬اﻟﺦ‪.‬‬
‫ﻓﻔﻰ آﺜﻴﺮ ﻣﻦ اﻻﺣﻴﺎن ﻧﺤﺘﺎج اﻟﻰ ﻧﻘﻞ اﻟﺒﻴﺎﻧﺎت ﻣﻦ ﺗﻨﻔﻴﺬة اﻟﻰ اﻟﺘﻨﻔﻴﺬة اﻟﺘﻰ ﺗﻠﻴﻬﺎ ﻣﺜﻞ ﻧﻘﻞ ﺑﻴﺎﻧﺎت‬
‫ﻣﻦ ﺗﻨﻔﻴﺬة‪ 1‬اﻟﻰ ﺗﻨﻔﻴﺬة‪ 2‬وهﻜﺬا‪.‬‬
‫وهﻨﺎك ﻃﺮﻳﻘﺘﻴﻦ ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﺑﻴﺎﻧﺎت ﻣﻦ اﻟﺘﻨﻔﻴﺬات اﻟﺴﺎﺑﻘﺔ هﻤﺎ ‪ Shift Register‬و‬
‫‪.Feedback Node‬‬

‫‪17‬‬
‫‪Shift Register‬‬

‫ﺗﻨﻘﻞ ‪ Shift Register‬اﻟﺒﻴﺎﻧﺎت ﻣﻦ ﺗﻨﻔﻴﺬة ﻟﻠـ ‪ For loop‬او ‪ While Loop‬اﻟﻰ اﻟﺘﻨﻔﻴﺬة اﻟﺘﻰ‬
‫ﺗﻠﻴﻬﺎ‪.‬‬
‫‪.‬‬ ‫و‬ ‫وﻳﺘﻜﻮن ‪ Shift Register‬ﻣﻦ هﺬﻳﻦ اﻟﺸﻜﻠﻴﻦ‬

‫اﻟﺒﻴﺎﻧﺎت ﻣﻦ اﻟﺘﻨﻔﻴﺬة اﻟﺴﺎﺑﻘﺔ اﻟﻰ اﻟﺘﻨﻔﻴﺬة اﻟﺤﺎﻟﻴﺔ‪.‬او ﺗﻨﻘﻞ ﺑﻴﺎﻧﺎت ﻣﻦ ﺧﺎرج ‪ Loop‬اﻟﻰ‬ ‫ﺗﻨﻘﻞ‬
‫اﻟﺘﻨﻔﻴﺬة اﻻوﻟﻰ‪.‬‬
‫اﻟﺒﻴﺎﻧﺎت ﻣﻦ اﻟﺘﻨﻔﻴﺬة اﻟﺤﺎﻟﻴﺔ اﻟﻰ اﻟﺘﻨﻔﻴﺬة اﻟﺘﺎﻟﻴﺔ‪.‬او ﺗﻨﻘﻞ اﻟﺒﻴﺎﻧﺎت ﻣﻦ اﺧﺮ ﺗﻨﻔﻴﺬة اﻟﻰ‬ ‫وﺗﻨﻘﻞ‬
‫ﺧﺎرج ‪.Loop‬‬

‫آﻴﻔﻴﺔ اﺿﺎﻓﺔ ‪: Shift Register‬‬


‫ﺗﻀﺎف ‪ Shift Register‬ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻃﺎر ‪ Loop‬واﺧﺘﻴﺎر ‪Add‬‬
‫‪.Shift Register‬‬

‫‪18‬‬
‫ﻳﻤﻜﻦ اﺿﺎﻓﺔ اآﺜﺮ ﻣﻦ ‪ Shift Register‬ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ‪.‬‬

‫ﻳﻤﻜﻦ ان ﻳﻨﻘﻞ ‪ Shift Register‬اى ﻧﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت )اى ‪ ( Data type‬رﻗﻢ او‬
‫و‬ ‫‪ Boolean‬او ﻧﺺ او ﻣﺼﻔﻮﻓﺔ وﻟﻜﻦ ﻳﺠﺐ ان ﺗﻜﻮن ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﻤﻮﺻﻠﻪ ﻟﻠـ‬
‫واﺣﺪة‪.‬‬

‫‪19‬‬
‫ﻣﺜﺎل ﻋﻠﻰ ‪: Shift Register‬‬
‫ﻧﻔﺬ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻰ ﺑﺎﺳﺘﺨﺪام ‪Execution Highlighting‬‬

‫ﺗﻼﺣﻆ ان آﻠﺘﺎ ‪ For Loops‬ﻳﻌﺎد ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻠﻬﺎ ارﺑﻊ ﻣﺮات‪.‬‬


‫وان ﺧﺮج ‪ Indicator1‬ﻓﻰ ‪ For Loop‬اﻻوﻟﻰ هﻮ ‪3‬وذﻟﻚ ﻻﻧﻨﺎ ﻟﻢ ﻧﺴﺘﺨﺪم ‪Shift‬‬
‫‪ Registers‬ﻓﻠﻢ ﺗﻨﺘﻘﻞ اﻟﻨﺘﺎﺋﺞ ﺑﻴﻦ اﻟﺘﻨﻔﻴﺬات اﻻرﺑﻌﺔ وآﺎن ﺗﻨﻔﻴﺬ آﻞ واﺣﺪة ﻣﻨﻬﺎ ﻣﺴﺘﻘﻞ‪.‬‬

‫‪20‬‬
‫اﻣﺎ ﺧﺮج ‪ Inidcator2‬ﻓﻰ ‪ For Loop‬اﻟﺜﺎﻧﻴﺔ هﻮ ‪ 6‬وذﻟﻚ ﻻﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ ‪Shift‬‬
‫‪ Register‬اﻟﺘﻰ ﺗﻨﻘﻞ ﻧﺘﻴﺠﺔ اﻟﺠﻤﻊ ﺑﻴﻦ اﻟﺘﻨﻔﻴﺬة واﻟﺘﻰ ﺗﻠﻴﻬﺎ‪.‬‬

‫‪21‬‬
‫ﻋﻠﻤﻨﺎ ان ‪ Shift Register‬ﺗﺤﺘﻔﻆ ﺑﺎﻟﺒﻴﺎﻧﺎت ﻣﻦ اﻟﺘﻨﻔﻴﺬة اﻟﺴﺎﺑﻘﺔ ‪.‬‬
‫ﻳﻤﻜﻦ اﻳﻀﺎ ان ﺗﺤﺘﻔﻆ ‪ Shift Register‬ﺑﺎﻟﺒﻴﺎﻧﺎت ﻣﻦ ﻋﺪة ﺗﻨﻔﻴﺬات ﺳﺎﺑﻘﺔ ‪.‬‬
‫وذﻟﻚ ﻳﺘﻢ ﺑﺎﺿﺎﻓﺔ ‪ Shift Register Terminals‬ﻋﻠﻰ اﻟﺤﺎﻓﺔ اﻟﻴﺴﺮى ﻟﻠـ ‪Loop‬‬

‫وﻳﺘﻢ اﺿﺎﻓﺔ ‪ Shift Register Terminals‬ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ ‪Shift Register‬‬
‫واﺧﺘﻴﺎر ‪ Add Element‬وﻻﺿﺎﻓﺔ ‪ Terminal‬اﺧﺮ ﻧﻜﺮر هﺬة اﻟﻌﻤﻠﻴﺔ‪.‬‬

‫ﻣﺜﺎل ﺛﺎﻧﻰ ﻋﻠﻰ ‪:Shift Register‬‬


‫آﻮن اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ واﻟﺬى ﻳﺘﻜﻮن ﻣﻦ ‪ While Loop‬ﺑﻬﺎ ‪ Shift Register‬و ﻣﻔﺘﺎح ) ‪Stop‬‬
‫‪ (Control‬وﻋﺪد ارﺑﻌﺔ ‪ Indicator‬وهﻢ )‪ X(i‬و)‪ X(i-1‬و)‪ X(i-2‬و)‪X(i-3‬‬

‫‪22‬‬
‫وﻓﻰ هﺬا اﻟﻤﺜﺎل ﻳﻌﺮض )‪ X(i‬ﻗﻴﻤﺔ ‪ i‬ﻓﻰ اﻟﺘﻨﻔﻴﺬة اﻟﺤﺎﻟﻴﺔ وﺗﻌﺮض )‪ X(i-1‬و)‪ X(i-2‬و)‪X(i-3‬‬
‫ﻗﻴﻢ ‪ i‬ﻣﻦ اﻟﺘﻨﻔﻴﺬات اﻟﺴﺎﺑﻘﺔ‪.‬‬

‫ﺑﺎﺳﺘﺨﺪام ‪ Highlight Execution‬ﻗﻢ ﺑﺘﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‬


‫‪-1‬ﺗﺠﺪ اﻟﻘﻴﻢ اﻟﻤﺒﺪﺋﻴﺔ ﻟـ )‪ X(i‬و)‪ X(i-1‬و)‪ X(i-2‬و)‪ X(i-3‬هﻰ ﺻﻔﺮ‪.‬‬
‫‪-2‬ﻋﻨﺪ اﻧﺘﻬﺎء آﻞ ﺗﻨﻔﻴﺬة وﻗﺒﻞ اﻟﺘﻨﻔﻴﺬة اﻟﺘﺎﻟﻴﺔ ﺗﻨﺘﻘﻞ ﻗﻴﻤﺔ )‪ X(i-2‬اﻟﻰ )‪ X(i-3‬وﺗﻨﺘﻘﻞ ﻗﻴﻤﺔ )‪ X(i-1‬اﻟﻰ‬
‫)‪ X(i-2‬واﻳﻀﺎ ﺗﻨﺘﻘﻞ اﻟﻘﻴﻤﺔ اﻟﺤﺎﻟﻴﺔ )‪ X(i‬اﻟﻰ )‪ X(i-1‬آﻤﺎ ﺑﺎﻟﺸﻜﻞ‪.‬‬

‫وهﺬة هﻰ اﻟﻨﺘﺎﺋﺞ ﻟﻠﺘﻨﻔﻴﺬات اﻟﺴﺘﻪ اﻻوﻟﻰ‬

‫‪23‬‬
‫اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪: Shift Register‬‬
‫هﻰ ﻗﻴﻢ ‪ Shift Register‬ﻗﺒﻞ اﻟﺪﺧﻮل ﻓﻰ ﺗﻨﻔﻴﺬ ‪.Loop‬‬

‫آﻴﻔﻴﺔ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪: (Initialize Shift Register) Shift Register‬‬
‫ﺗﺴﺘﻄﻴﻊ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ‪ Shift Register‬ﺑﺮط ‪ Constant‬او ‪ Control‬ﺑـ‬
‫‪ Terminals‬اﻟﻤﻮﺟﻮد ﻋﻠﻰ اﻟﻄﺮف اﻻﻳﺴﺮ‪.‬‬

‫ﻣﺎذا ﻳﺤﺪث اذا ﻟﻢ ﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪Shift Register‬؟‬
‫ﺳﻮف ﺗﺄﺧﺬ ‪ Shift Register‬اﻟﻘﻴﻢ اﻻﻓﺘﺮاﺿﻴﺔ اﻟﺨﺎﺻﺔ ﺑﻨﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺗﻨﻘﻠﻬﺎ ‪Shift‬‬
‫‪ Register‬اى ﻣﺜﻼ اذا آﺎﻧﺖ ﺗﻠﻚ اﻟﺒﻴﺎﻧﺎت رﻗﻤﻴﺔ)‪ (Numeric‬ﻓﺴﻮف ﺗﻜﻮن اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ هﻰ‬
‫ﺻﻔﺮ واذا آﺎﻧﺖ اﻟﺒﻴﺎﻧﺎت ارﻗﺎم ﺛﻨﺎﺋﻴﺔ )‪ (Boolean‬ﻓﺴﻮف ﺗﻜﻮن اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ هﻰ ‪.False‬‬

‫‪24‬‬
‫و ﻳﺄﺧﺬ ‪ Shift Register‬هﺬة اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ﻗﺒﻞ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻻول ﻣﺮة وﻟﻜﻦ ﺑﻌﺪ اﻧﺘﻬﺎء‬
‫اﻟﺒﺮﻧﺎﻣﺞ ﺗﻤﺎﻣﺎ ﻳﺤﺘﻔﻆ ‪ Shift Register‬ﺑﺎﺧﺮ ﻗﻴﻤﻪ ﻟﻪ ﻟﺘﻜﻮن اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‬
‫ﻟﻠﻤﺮة اﻟﺜﺎﻧﻴﺔ‪.‬‬
‫واﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ ﻳﻮﺿﺢ اﻟﻔﺮق ﺑﻴﻦ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﺔ وﻋﺪم ﺗﺤﺪﻳﺪهﺎ‪.‬‬

‫ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺠﻴﻦ ﻻول ﻣﺮة ﺳﻮف ﺗﻜﻮن اﻟﻘﻴﻢ اﻟﻤﻮﺟﻮدة ﻓﻰ ‪Result1‬و ‪ Result2‬آﺎﻟﺘﺎﻟﻰ‬

‫وﻟﻜﻦ ﻓﻰ اﻋﺎدة ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻧﻼﺣﻆ اﻧﻪ ﻓﻰ اﻟﺤﺎﻟﺔ اﻻوﻟﻰ اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﻴﺔ ﺛﺎﺑﺘﺔ وﻟﻢ ﺗﺘﻐﻴﺮ‬

‫‪25‬‬
‫اﻣﺎ ﻓﻰ اﻟﺤﺎﻟﺔ اﻟﺜﺎﻧﻴﺔ ﻧﺠﺪ ان ‪ Shift Register‬اﺣﺘﻔﻆ ﺑﺎﺧﺮ ﻗﻴﻤﺔ ﻟﻪ ﻣﻦ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻻول‬
‫ﻣﺮة وهﻰ اﻟﻘﻴﻤﺔ ‪ 10‬و اﺧﺬ هﺬة اﻟﻘﻴﻤﺔ آﻘﻴﻤﺔ اﺑﺘﺪاﺋﻴﺔ ﻓﻰ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻟﻠﻤﺮة اﻟﺜﺎﻧﻴﺔ ﻟﺬﻟﻚ اﻟﻨﺎﺗﺞ‬
‫ﺗﻐﻴﺮ ﻣﻦ ‪ 10‬ﻓﻰ اﻟﻤﺮة اﻻوﻟﻰ اﻟﻰ ‪ 20‬ﻓﻰ اﻟﻤﺮة اﻟﺜﺎﻧﻴﺔ‪.‬‬

‫‪26‬‬
‫‪Feedback Nodes‬‬

‫ﺗﺴﺘﺨﺪم ‪ Feedback Node‬ﻓﻰ ‪ While Loop‬او ‪ For Loop‬ﻋﻨﺪﻣﺎ ﻧﺮﻳﺪ رﺑﻂ ﺑﻴﻦ‬
‫ﻣﺨﺮج ‪ SubVI‬او داﻟﺔ او ﻣﺠﻤﻮﻋﺔ ‪ SubVIs‬ودوال اﻟﻰ ﻣﺪﺧﻞ ﻧﻔﺲ اﻟـ ‪ SubVI‬او اﻟﺪاﻟﺔ او‬
‫ﻣﺠﻤﻮﻋﺔ ‪ SubVIs‬واﻟﺪوال‪.‬‬
‫ﻓﻜﻤﺎ ﻧﻌﻠﻢ ﻣﻦ ﻣﻔﻬﻮم ‪ Dataflow‬ﻟﻦ ﻧﺴﺘﻄﻴﻊ وﺻﻞ ﻣﺨﺮج اﻟﻰ ﻣﺪﺧﻞ ﻟﻨﻔﺲ اﻟﺪاﻟﺔ او ‪SubVI‬‬
‫وذﻟﻚ ﻻﻧﻬﺎ ﻟﻦ ﺗﻨﻔﺬ و ﺗﺨﺮج ﺑﻴﺎﻧﺎت ﻋﻠﻰ ﻣﺨﺎرﺟﻬﺎ اﻻ اذا آﺎﻧﺖ اﻟﺒﻴﺎﻧﺎت ﺟﺎهﺰة ﻋﻠﻰ ﻣﺪاﺧﻠﻬﺎ‬
‫وهﻮ ﻟﻦ ﻳﺤﺪث ﻻن اﺣﺪ اﻟﻤﺪﺧﻞ ﻣﻮﺻﻞ ﺑﺎﺣﺪ اﻟﻤﺨﺎرج ﻟﻬﺎ‪.‬‬

‫ﻓﻔﻰ هﺬة اﻟﺤﺎﻟﺔ ﻧﺴﺘﺨﺪم ‪ Feedback Node‬ﻟﻜﻰ ﻧﺠﻌﻞ اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺧﺮﺟﺖ ﻋﻠﻰ اﺣﺪ‬
‫اﻟﻤﺨﺎرج ﻟﺪاﻟﺔ او ‪ SubVI‬هﻰ اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ﻋﻠﻰ اﺣﺪ اﻟﻤﺪاﺧﻞ ﻟﺘﻠﻚ اﻟﺪاﻟﺔ او ‪ SubVI‬ﻓﻰ‬
‫اﻟﻤﺮة اﻟﺘﺎﻟﻴﺔ اﻟﺘﻰ ﺗﻨﻔﺬ ﻓﻴﻬﺎ هﺬة اﻟﺪاﻟﺔ او ‪.SubVI‬‬

‫وهﻰ ﻣﺜﻞ ‪ Shift Register‬ﺗﺤﺘﻔﻆ ﺑﻘﻴﻤﺘﻬﺎ ﺑﻌﺪ اﻧﺘﻬﺎء اﻟﺘﻨﻔﻴﺬة اﻟﺤﺎﻟﻴﺔ ﻟﺘﻨﻘﻠﻬﺎ اﻟﻰ اﻟﺘﻨﻔﻴﺬة اﻟﺘﺎﻟﻴﺔ‪.‬‬

‫‪27‬‬
‫و ﻳﻤﻜﻦ ان ﺗﻨﻘﻞ اى ﻧﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت‪.‬‬
‫ﻣﻊ ‪ Feedback Node‬هﺬا ‪ Terminal‬ﻳﻮﺻﻞ اﻟﻴﻪ اﻟﻘﻴﻤﺔ‬ ‫وﻳﻮﺟﺪ ‪Terminal‬‬
‫اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪.Feedback Node‬‬
‫هﺬة اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﻴﺔ ﺳﺘﻜﻮن هﻰ ﻗﻴﻤﺔ اﻟﻤﺪﺧﻞ اﻟﻤﻮﺻﻞ اﻟﻴﺔ ‪ Feedback Node‬ﻓﻰ اول ﻣﺮة‬
‫ﺗﻨﻔﺬ ﻓﻴﻬﺎ ‪.Loop‬‬
‫وهﺬا ‪ Terminal‬ﻳﻮﺿﻊ ﺗﻠﻘﺎﺋﻴﺎ ﺑﻤﺠﺮد ادارج ‪.Feedback Node‬‬

‫وآﻤﺎ ﺑﺎﻟﺸﻜﻞ ﻳﺤﺪد اﺗﺠﺎﻩ اﻟﺴﻬﻢ اﻟﻤﻮﺟﻮد ﻓﻰ ‪ Feedback Node‬ﻣﺴﺎر ﺗﺪﻓﻖ اﻟﺒﻴﺎﻧﺎت‪.‬‬
‫ادراج ‪: Feedback Node‬‬
‫ﻳﺘﻢ ادراج ‪ Feedback Node‬ﻣﻦ‬
‫‪Function Palette>>Programming>>Structures‬‬

‫‪28‬‬
‫ﻣﺎذا ﻳﺤﺪث اذا ﻟﻢ ﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻢ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪Feedback Node‬؟‬
‫اذا ﻗﻤﺖ ﺑﺘﺤﺪﻳﺪ اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪ Feedback Node‬ﻓﻬﺬة اﻟﻘﻴﻤﺔ ﺳﺘﻜﻮن ﻗﻴﻤﺔ‬
‫‪ Feedback Node‬ﻗﺒﻞ اﻟﺪﺧﻮل ﻓﻰ اﻟﺘﻨﻔﻴﺬة اﻻوﻟﻰ ﻓﻰ ‪ Loop‬وهﺬا ﺳﻮاء آﺎن ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‬
‫ﻻول ﻣﺮة او ﺛﺎﻧﻰ ﻣﺮة او اى ﻣﺮة‪.‬‬
‫اﻧﻤﺎ اذا ﻟﻢ ﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻤﺔ اﻻﻟﺒﺘﺪاﺋﻴﺔ ﻟﻠـ ‪ Feedback Node‬ﺳﻮف ﻳﺄﺧﺬ ‪Feedback‬‬
‫‪ Node‬اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﺔ اﻟﺨﺎﺻﺔ ﺑﻨﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺗﻨﻘﻠﻬﺎ وذﻟﻚ ﻗﺒﻞ اول ﻣﺮة ﺗﻨﻔﺬ ﻓﻴﻬﺎ ‪Loop‬‬
‫وﻟﻜﻦ ﺳﻮف ﻳﺤﺘﻔﻆ ‪ Feedback Node‬ﺑﺎﺧﺮ ﻗﻴﻤﺔ ﻟﻪ ﺑﻌﺪ اﻧﺘﻬﺎء ‪ Loop‬ﻟﺘﻜﻮن ﺗﻠﻚ اﻟﻘﻴﻤﺔ‬
‫هﻰ اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻠـ ‪ Feedback Node‬ﻓﻰ اﻟﻤﺮةاﻟﺘﺎﻟﻴﺔ اﻟﺘﻰ ﺗﻨﻔﺬ ﻓﻴﻬﺎ ‪ Loop‬وهﻜﺬا‪.‬‬
‫وهﺬا ﻣﻤﺎﺛﻞ ﻟﻤﺎ ﻳﺤﺪث ﻓﻰ ‪.Shift Registers‬‬

‫‪29‬‬
Case Structure

‫ ﻓﻰ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ‬If….then…else ‫هﻰ اﺣﺪ اﻟﻄﺮق ﻟﺘﻨﻔﻴﺬ اﻟﺠﻤﻞ اﻟﺸﺮﻃﻴﺔ وهﻰ ﺗﻌﺎدل‬
.‫اﻻﺧﺮى‬
‫ ﻣﻦ‬Case Structure ‫وﻳﺘﻢ ادراج‬
Function Palette>>Programming>>Structures
‫او ﻣﻦ‬
Function Palette>>Express >>Execution Control

30
‫ﻳﺴﻤﻰ ‪. Selector Terminal‬وآﻞ‬ ‫وﺗﺘﻜﻮن ‪ Case Structure‬ﻣﻦ ﻋﺪة ﺣﺎﻻت وﻣﺪﺧﻞ‬
‫ﺣﺎﻟﺔ ﻳﻜﺘﺐ ﻓﻴﻬﺎ آﻮد هﺬا اﻟﻜﻮد ﻳﺴﻤﻰ ‪.Subdiagram‬وﻋﻨﺪ ﺗﻨﻔﻴﺬ ‪ Case Structure‬ﻳﺘﻢ‬
‫ﺗﻨﻔﻴﺬ ﺣﺎﻟﺔ واﺣﺪة وﺗﺤﺪد اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﻳﺄﺧﺬهﺎ اﻟﻤﺪﺧﻞ اﻟﺤﺎﻟﺔ اﻟﺘﻰ ﺳﺘﻨﻔﺬ‪.‬‬

‫وﻟﻜﻞ ﺣﺎﻟﺔ اﺳﻢ وهﻮ اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺳﺘﻨﻔﺬ ﻋﻨﺪهﺎ اﻟﺤﺎﻟﺔ‪.‬‬


‫وﻳﻜﺘﺐ اﺳﻢ اﻟﺤﺎﻟﺔ ﻓﻰ ‪ Selector Label‬وﻳﻤﻜﻦ اﻟﺘﻌﺪﻳﻞ ﻓﻴﻪ ﺑﺎﺳﺘﺨﺪام ‪.Labeling Tool‬‬

‫ﻋﺎدة ﻣﺎ ﺗﺤﺘﻮى ‪Case Structure‬ﻋﻠﻰ ﻋﺪة ﺣﺎﻻت وﻟﻜﻦ ﻳﻌﺮض ﻣﺤﺘﻮى ﺣﺎﻟﺔ واﺣﺪة‬
‫اﻟﺴﻬﻢ اﻻﻳﻤﻦ‬ ‫وﻟﻌﺮض ﻣﺤﺘﻮﻳﺎت اﻟﺤﺎﻟﺔ اﻟﺘﺎﻟﻴﺔ ﻧﺴﺘﺨﺪم‬
‫اﻟﺴﻬﻢ اﻻﻳﺴﺮ‪.‬‬ ‫و ﻟﻌﺮض ﻣﺤﺘﻮﻳﺎت اﻟﺤﺎﻟﺔ اﻟﺴﺎﺑﻘﺔ ﻧﺴﺘﺨﺪم‬
‫و اﺧﺘﻴﺎر اﻟﺤﺎﻟﺔ اﻟﺘﻰ ﻳﺮاد ﻋﺮﺿﻬﺎ‪.‬‬ ‫وﻳﻤﻜﻦ اﻟﺘﻨﻘﻞ اﻟﻰ اى ﺣﺎﻟﺔ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ اﻟﺴﻬﻢ‬
‫اوﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻃﺎر ‪ Case‬واﺧﺘﻴﺎر ‪ Show Case‬واﺧﺘﻴﺎر اﻟﺤﺎﻟﺔ‬
‫اﻟﺘﻰ ﺗﺮﻳﺪهﺎ‬

‫‪31‬‬
32
‫آﻴﻔﻴﺔ ﺗﺤﺪﻳﺪ اﻟﺤﺎﻻت ﻣﻊ اﻻﻧﻮاع اﻟﻤﺨﺘﻠﻔﺔ ﻟﻠﻘﻴﻢ اﻟﻤﻮﺻﻠﺔ ﻟﻠـ ‪:Selector Terminal‬‬
‫• اذا اآﺎن دﺧﻞ اﻟﻤﺪﺧﻞ ﻣﻦ اﻟﻨﻮع ‪ Boolean‬ﻓﺎن هﻨﺎك ﺣﺎﻟﺘﻴﻦ هﻤﺎ ‪ True‬او ‪False‬‬

‫• اذا آﺎن دﺧﻞ اﻟﻤﺪﺧﻞ ﻣﻦ اﻟﻨﻮع ‪) Numeric‬رﻗﻤﻰ( ﻓﻴﻤﻜﻦ ان ﻳﻮﺟﺪ ﻋﺪد ﻧﻬﺎﺋﻰ ﻣﻦ اﻟﻘﻴﻢ‪.‬‬
‫وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﺗﺤﺘﻮى ‪ Case Structure‬ﻋﻠﻰ ﺣﺎﻟﺘﻴﻦ ﻓﻘﻂ وﻳﻤﻜﻦ ان ﺗﻀﻴﻒ اﻟﻴﻬﺎ اﻟﺤﺎﻻت‬
‫اﻟﺘﻰ ﺗﺮﻳﺪهﺎ‪.‬‬

‫ﻳﻤﻜﻦ ان ﺗﻜﻮن ﻟﻠﺤﺎﻟﺔ اآﺜﺮ ﻣﻦ ﻗﻴﻤﺔ وﻟﻌﻤﻞ ذﻟﻚ ﺗﻜﺘﺐ اﻟﻘﻴﻢ ﺑﻴﻨﻬﺎ ﻓﺎﺻﻠﺔ ‪.‬‬

‫‪33‬‬
‫آﻤﺎ ﻳﻤﻜﻦ ان ﺗﻜﻮن اﻟﺤﺎﻟﺔ ﻟﻤﺪى ﻣﻦ اﻟﻘﻴﻢ وﻟﻌﻤﻞ ذﻟﻚ ﻧﺴﺘﺨﺪم اﻟﻨﻘﻄﺘﻴﻦ ‪ ..‬ﻟﻠﺘﻌﺒﻴﺮ ﻋﻦ اﻟﻤﺪى‬
‫ﻓﻤﺜﻼ ‪ 2..20‬ﺗﻌﻨﻰ ان هﺬة اﻟﺤﺎﻟﺔ ﻟﻜﻞ اﻻرﻗﺎم اﻟﺼﺤﻴﺤﺔ ﻣﻦ ‪ 2‬اﻟﻰ ‪.20‬‬
‫و ‪ 3..‬ﺗﻌﻨﻰ ان اﻟﺤﺎﻟﺔ ﻟﻜﻞ اﻻرﻗﺎم اﻟﺼﺤﻴﺤﺔ اﻟﺘﻰ ﺗﺴﺎوى اواآﺒﺮ ﻣﻦ ‪.3‬‬

‫‪ Default Case‬او اﻟﺤﺎﻟﺔ اﻻﻓﺘﺮاﺿﻴﺔ ‪:‬‬


‫هﻰ اﻟﺤﺎﻟﺔ اﻟﺘﻰ ﺳﺘﻨﻔﺬ اذا آﺎﻧﺖ اﻟﻘﻴﻤﺔ اﻟﻤﻮﺻﻠﺔ ﻟﻠﻤﺪﺧﻞ ﻟﻴﺲ ﻣﺨﺼﺺ ﻟﻬﺎ ﺣﺎﻟﺔ ‪.‬‬

‫‪34‬‬
‫ﻣﺜﺎل اذا آﺎﻧﺖ اﻟﺤﺎﻻت اﻟﻤﻮﺟﻮدة هﻰ ﻟﻠﻘﻴﻢ ‪1‬و‪2‬و‪ 3‬ﻓﻘﻂ ﻓﻤﺎ هﻰ اﻟﺤﺎﻟﺔ اﻟﺘﻰ ﺳﺘﻨﻔﺬ اذا آﺎن ﻗﻴﻤﺔ‬
‫اﻟﺪﺧﻞ ‪ 100‬ﻣﺜﻼ‪.‬‬
‫ﺳﺘﻨﻔﺬ اﻟﺤﺎﻟﺔ اﻻﻓﺘﺮاﺿﻴﺔ )‪(Default Case‬‬
‫و اﻟﺤﺎﻟﺔ اﻻﻓﺘﺮاﺿﻴﺔ ﻳﻈﻬﺮ ﺑﺠﻮار اﻟﻘﻴﻤﺔ اﻟﻤﺨﺼﺼﺔ ﻟﻬﺎ آﻠﻤﺔ ‪. Default‬‬

‫وﻳﻤﻜﻦ ﺟﻌﻞ اى ﺣﺎﻟﺔ ﻣﻦ اﻟﺤﺎﻻت هﻰ اﻟﺤﺎﻟﺔ اﻻﻓﺘﺮاﺿﻴﺔ )‪.(Default Case‬‬

‫‪35‬‬
‫• اذا آﺎن دﺧﻞ اﻟﻤﺪﺧﻞ ﻣﻦ اﻟﻨﻮع ‪) String‬ﻧﺺ( ﻓﺘﻜﺘﺐ ﻗﻴﻢ اﻟﺤﺎﻻت ﺑﻴﻦ ﻋﻼﻣﺘﻴﻦ ﺗﻨﺼﻴﺺ واذا‬
‫ﻟﻢ ﺗﻀﻊ اﻟﻌﻼﻣﺘﻴﻦ ﻓﺴﻮف ﻳﻘﻮم ‪ LabVIEW‬ﺑﻮﺿﻌﻬﻢ ﺗﻠﻘﺎﺋﻴﺎ ‪.‬‬

‫ﻻﺣﻆ ان آﻠﻤﺔ ‪ Default‬ﻻ ﺗﻮﺟﺪ ﺑﻴﻦ ﻋﻼﻣﺘﻴﻦ ﺗﻨﺼﻴﺺ‪.‬‬


‫ﻳﻤﻜﻦ ان ﺗﻜﻮن ﻟﻠﺤﺎﻟﺔ اآﺜﺮ ﻣﻦ ﻗﻴﻤﺔ وذﻟﻚ ﺑﻜﺘﺎﺑﺔ اﻟﻘﻴﻢ ﺑﻴﻨﻬﺎ ﻓﺎﺻﻠﺔ‪.‬‬

‫ﻳﻤﻜﻦ ان ﻧﺠﻌﻞ اﻟﺪﺧﻞ ‪ Case Sensitive‬او ‪.Case Insensitive‬‬


‫‪ Case Sensitive o‬ﺗﻌﻨﻰ اﻻﺧﺬ ﻓﻰ اﻻﻋﺘﺒﺎر اﻟﺤﺮوف اﻟﻜﺒﻴﺮة ﻓﺎﻟﺤﺮوف اﻟﺼﻐﻴﺮة‬
‫ﻣﺜﻼ ‪ ALI‬ﻻ ﻳﻄﺎﺑﻖ ‪.ali‬‬
‫‪ Case Insensitive o‬ﺗﻌﻨﻰ اﻧﻪ ﻻﻓﺮق ﺑﻴﻦ اﻟﺤﺮوف اﻟﻜﺒﻴﺮة واﻟﺤﺮوف اﻟﺼﻐﻴﺮة ﻓﻤﺜﻼ‬
‫‪ ALI‬ﺗﻄﺎﺑﻖ ‪ Ali‬ﺗﻄﺎﺑﻖ ‪.ali‬‬

‫‪36‬‬
‫ﻻﺣﻆ اﻧﻪ‪:‬‬
‫¾ اذا ﺗﻢ ﺗﻮﺻﻴﻞ رﻗﻢ ﻣﻦ اﻟﻨﻮع ‪ Floating-Point‬ﻓﺴﻮف ﻳﻘﻮم ‪ LabVEW‬ﺑﺘﺤﻮﻳﻞ‬
‫اﻟﻘﻴﻤﺔ اﻟﻰ رﻗﻢ ﺻﺤﻴﺢ ﻣﻦ اﻟﻨﻮع ‪ I32‬ﺛﻢ ﻳﺨﺘﺎر اﻟﺤﺎﻟﺔ ﻋﻠﻰ اﺳﺎس اﻟﺮﻗﻢ اﻟﻤﺤﻮل‪.‬‬

‫¾ ﻳﻤﻜﻦ ﻧﻘﻞ ﻣﻜﺎن اﻟﻤﺪﺧﻞ )‪ (Case Selector‬اﻟﻰ اى ﻣﻜﺎن ﻋﻠﻰ اﻃﺎر ‪Case‬‬
‫‪.Structure‬‬

‫‪37‬‬
‫اﺿﺎﻓﺔ وﺣﺬف ﺣﺎﻻت ‪:‬‬
‫ﻳﻤﻜﻦ اﺿﺎﻓﺔ ﺣﺎﻟﺔ ﺟﺪﻳﺪة او ﺣﺬف ﺣﺎﻟﺔ او ﻋﻤﻞ ﻧﺴﺨﺔ ﻣﻦ ﺣﺎﻟﺔ ﻣﻮﺟﻮدة و ﺧﻴﺎرات اﺧﺮى وذﻟﻚ‬
‫ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻃﺎر ‪.Case Structure‬‬

‫وﻋﻨﺪ اﺧﺘﻴﺎر اﻋﺎدة ﺗﺮﺗﻴﺐ اﻟﺤﺎﻻت ﺗﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﻧﺤﺪد ﻓﻴﻬﺎ ﺗﺮﺗﻴﺐ اﻟﺤﺎﻻت‬

‫‪38‬‬
‫اﻻدﺧﺎل و اﻻﺧﺮاج ﻣﻦ و اﻟﻰ ‪: Case Structure‬‬
‫ذآﺮﻧﺎ ان هﻨﺎك اﻟﻤﺪﺧﻞ )‪ ( Selector Terminal‬وﻗﻴﻤﺘﻪ هﻰ اﻟﺘﻰ ﺗﺤﺪد اﻟﺤﺎﻟﺔ اﻟﺘﻰ ﺳﺘﻨﻔﺬ‪.‬‬
‫ﻳﻤﻜﻦ اﻳﻀﺎ ان ﻧﺪﺧﻞ اى ﻋﺪد ﻣﻦ اﻟﻤﺪﺧﻼت اﻟﻰ اﻟﺤﺎﻻت او ﻧﺨﺮج اى ﻋﺪد ﻣﻦ اﻟﻤﺨﺮﺟﺎت و‬
‫ذﻟﻚ ﻣﻦ ﺧﻼل ‪. Tunnels‬‬

‫ﻟﻴﺲ ﺷﺮﻃﺎ ان ﻳﻜﻮن ﻟﻠﺤﺎﻻت ﻣﺪﺧﻼت وﻣﺨﺮﺟﺎت‪.‬‬


‫وﻟﻴﺲ ﺷﺮﻃﺎ ان ﺗﺴﺘﺨﺪم اﻟﺤﺎﻟﺔ آﻞ اﻟﻤﺪﺧﻼت ‪.‬‬
‫وﻟﻜﻦ اذا ﺗﻢ ﺗﻮﺻﻴﻞ ﻣﺨﺮج ﻓﻰ اى ﺣﺎﻟﺔ ﻓﻼﺑﺪ ان ﻳﻮﺻﻞ هﺬا اﻟﻤﺨﺮج ﻓﻰ ﺟﻤﻴﻊ اﻟﺤﺎﻻت ‪.‬واﻻ ﻟﻦ‬
‫ﻳﻨﻔﺬ اﻟﺒﺮﻧﺎﻣﺞ وﺳﻮف ﻳﻌﻄﻰ ﻟﻚ رﺳﺎﻟﺔ ﺧﻄﺄ ﺗﻔﻴﺪ ﺑﺎﻧﻪ هﻨﺎك ‪ Tunnel‬ﻟﻤﺨﺮج ﻏﻴﺮ ﻣﻮﺻﻞ‪.‬‬

‫‪39‬‬
‫ﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﻋﻨﺪ ﻣﺤﺎوﻟﻪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺗﻈﻬﺮ ﻟﻨﺎ هﺬة اﻟﺮﺳﺎﻟﺔ‬

‫وﻻﺻﻼح هﺬا اﻟﺨﻄﺄ ﻧﻘﻮم ﺑﺎﻻﺗﻰ‪:‬‬

‫‪40‬‬
‫‪Dialogs‬‬
‫آﻴﻒ ﺗﺠﻌﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻳﺘﻔﺎﻋﻞ ﻣﻊ اﻟﻤﺴﺘﺨﺪم ؟‬
‫ﺳﻮف ﻧﺘﻮﻗﻒ ﻗﻠﻴﻼ ﻟﻠﺘﻌﺮف ﻋﻦ آﻴﻒ اﺧﺮاج رﺳﺎﻟﺔ ﻟﻠﻤﺴﺘﺨﺪم اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬وهﺬة اﻟﺮﺳﺎﺋﻞ‬
‫ﻳﻤﻜﻦ ان ﺗﺤﺘﻮى ﻋﻠﻰ اآﺜﺮ ﻣﻦ زرار ﻣﺜﻞ زرار ‪ Ok‬او ‪.Cancel‬‬
‫وﻳﺤﺘﻮى ‪ LabVIEW‬ﻋﻠﻰ ﺑﻌﺾ اﻻدوات اﻟﺘﻰ ﺗﺘﻴﺢ اﻇﻬﺎر رﺳﺎﺋﻞ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫وﻳﻤﻜﻦ ادراج هﺬة اﻻدوات ﻣﻦ‬
‫‪Function Palette>>Programming>>Dialog & User Interface‬‬

‫وﻳﻮﺟﺪ ﻧﻮﻋﺎن ﻣﻦ اﻻدوات اﻟﺘﻰ ﻳﺘﻴﺤﻬﺎ ‪ LabVIEW‬ﻻﻇﻬﺎر اﻟﺮﺳﺎﺋﻞ ‪:‬‬


‫‪: Standard Dialogs-1‬‬

‫‪41‬‬
‫وهﻰ دوال ﻻﻇﻬﺎر رﺳﺎﺋﻞ ﺑﻬﺎ ﻧﺺ وهﺬة اﻟﺮﺳﺎﺋﻞ ﻗﺪ ﻳﻮﺟﺪ ﺑﻬﺎ زرار او زرارﻳﻦ او ﺛﻼث‬
‫زراﻳﺮ وذﻟﻚ ﺣﺴﺐ اﻟﺪاﻟﺔ اﻟﻤﺴﺘﺨﺪﻣﺔ‪.‬‬
‫وﻣﺪﺧﻼت هﺬة اﻟﺪوال ﺗﻜﻮن ﻋﺒﺎرة ﻋﻦ ‪:‬‬
‫• ﻧﺺ اﻟﺮﺳﺎﻟﺔ اﻟﺘﻰ ﺗﺮﻳﺪ اﻇﻬﺎرهﺎ ﻟﻠﻤﺴﺘﺨﺪم اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬
‫• اﺳﻤﺎء اﻟﺰراﻳﺮ اﻟﺘﻰ ﺳﺘﻮﺟﺪ ﻓﻰ اﻟﺮﺳﺎﻟﺔ ﻣﺜﻞ ‪ Cancel‬او ‪.Ok‬‬
‫اﻣﺎ اﻟﻤﺨﺮﺟﺎت ﻓﺘﺤﺪد اى زرار ﻗﺪ ﺿﻐﻂ ﻋﻠﻴﻪ اﻟﻤﺴﺘﺨﺪم ﺣﺘﻰ ﻳﺘﻢ ﻋﻠﻰ اﺳﺎﺳﻪ ﺗﺤﺪﻳﺪ ﻣﺴﺎر ﺗﻨﻔﻴﺬ‬
‫اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫وﻋﺪد هﺬة اﻟﺪوال ﺛﻼث هﻢ‪:‬‬


‫‪One Button Dialog‬‬
‫وهﻰ ﻻﻇﻬﺎر رﺳﺎﻟﺔ ذات زرار واﺣﺪ‪.‬‬

‫ﻣﺜﺎل‬

‫‪42‬‬
‫‪Two Button Dialog‬‬
‫وهﻰ ﻻﻇﻬﺎر رﺳﺎﻟﺔ ذات زرارﻳﻦ ﻋﺎدة ﻳﻜﻮﻧﺎن زرارى ‪ OK‬و ‪.Cancel‬‬
‫وﻳﻮﺟﺪ ﻟﻬﺬة اﻟﺪاﻟﺔ ﺛﻼث ﻣﺪاﺧﻞ ‪:‬‬
‫• ﻣﺪﺧﻞ ﻟﻨﺺ اﻟﺮﺳﺎﻟﺔ‬
‫• ﻣﺪﺧﻞ ﻻﺳﻢ اﻟﺰرار اﻻول وهﺬا زرار ‪ True‬ﻻن اﻟﺪاﻟﺔ ﺳﺘﺨﺮج اﻟﻘﻴﻤﺔ ‪ True‬اذا‬
‫ﺿﻐﻂ اﻟﻤﺴﺘﺨﺪم هﺬا اﻟﺰرار‪.‬‬
‫واذا ﻟﻢ ﻳﻮﺻﻞ هﺬا اﻟﻤﺪﺧﻞ ﺳﻴﻜﻮن اﺳﻢ اﻟﺰرار ‪. OK‬‬
‫• ﻣﺪﺧﻞ ﻻﺳﻢ اﻟﺰرار اﻟﺜﺎﻧﻰ وﻳﺴﻤﻰ زرار ‪ False‬ﻻن اﻟﺪاﻟﺔ ﺳﺘﺨﺮج اﻟﻘﻴﻤﺔ ‪ False‬اذا‬
‫ﺿﻐﻂ اﻟﻤﺴﺘﺨﺪم هﺬا اﻟﺰرار‪.‬‬
‫واذا ﻟﻢ ﻳﻮﺻﻞ هﺬا اﻟﻤﺪﺧﻞ ﺳﻴﻜﻮن اﺳﻢ اﻟﺰرار ‪.Cancel‬‬

‫ﻣﺜﺎل‬

‫‪43‬‬
‫‪Two Button Dialog‬‬
‫ﻻﻇﻬﺎر رﺳﺎﻟﺔ ذات ﺛﻼث زراﻳﺮ ﻋﺎدة ‪ Yes‬و ‪ No‬و ‪.Cancel‬‬
‫وﻳﻮﺟﺪ ﻟﻬﺬة اﻟﺪاﻟﺔ ﻋﺪة ﻣﺪاﺧﻞ وﻟﻜﻦ اهﻢ هﺬة اﻟﻤﺪاﺧﻞ آﻤﺎ ﻓﻰ اﻟﺪاﻟﺘﻴﻦ اﻟﺴﺎﺑﻘﺘﻴﻦ‪:‬‬

‫• ﻣﺪﺧﻞ ﻧﺺ اﻟﺮﺳﺎﻟﺔ‬
‫• ﻣﺪﺧﻞ ﻻﺳﻢ اﻟﺰرار اﻻول وﺳﻴﻈﻬﺮ هﺬا اﻟﺰرار ﻓﻰ ﻳﺴﺎر اﻟﺮﺳﺎﻟﺔ واذا ﻟﻢ ﻳﻮﺻﻞ هﺬا‬
‫اﻟﻤﺪﺧﻞ ﺳﻴﻜﻮن اﺳﻢ اﻟﺰرار ‪. Yes‬‬
‫• ﻣﺪﺧﻞ ﻻﺳﻢ اﻟﺰرار اﻟﺜﺎﻧﻰ وﺳﻴﻈﻬﺮ هﺬا اﻟﺰرار ﻓﻰ وﺳﻂ اﻟﺮﺳﺎﻟﺔ واذا ﻟﻢ ﻳﻮﺻﻞ هﺬا‬
‫اﻟﻤﺪﺧﻞ ﺳﻴﻜﻮن اﺳﻢ اﻟﺰرار ‪. NO‬‬
‫• ﻣﺪﺧﻞ ﻻﺳﻢ اﻟﺰرار اﻟﺜﺎﻟﺚ وﺳﻴﻈﻬﺮ هﺬا اﻟﺰرار ﻓﻰ ﻳﻤﻴﻦ اﻟﺮﺳﺎﻟﺔ واذا ﻟﻢ ﻳﻮﺻﻞ هﺬا‬
‫اﻟﻤﺪﺧﻞ ﺳﻴﻜﻮن اﺳﻢ اﻟﺰرار ‪. Cancel‬‬
‫وﻳﻮﺟﺪ ﻟﻬﺬة اﻟﺪاﻟﺔ ﻣﺨﺮج واﺣﺪ ﻳﺤﺪد اى زرار ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﻴﻪ‪.‬‬
‫وﻗﻴﻤﺔ هﺬا اﻟﻤﺨﺮج ﺳﺘﻜﻮن ﺑﺎﻟﻘﻴﻤﺔ ‪:‬‬
‫‪ 0‬اذا ﺿﻐﻂ اﻟﻤﺴﺘﺨﺪم اﻟﺰرار اﻻول‪.‬‬
‫‪ 1‬اذا ﺿﻐﻂ اﻟﻤﺴﺘﺨﺪم اﻟﺰرار اﻟﺜﺎﻧﻰ‪.‬‬
‫‪ 2‬اذا ﺿﻐﻂ اﻟﻤﺴﺘﺨﺪم اﻟﺰرار اﻟﺜﺎﻟﺚ‪.‬‬
‫‪ 3‬اذا اﻏﻠﻖ اﻟﻤﺴﺘﺨﺪم اﻟﺮﺳﺎﻟﺔ دون اﻟﻀﻐﻂ ﻋﻠﻰ اى ﻣﻦ اﻟﺰراﻳﺮ‪.‬‬

‫‪: Express Dialogs-2‬‬


‫وهﻰ ‪ Express VI‬ﺳﻬﻠﺔ اﻻﺳﺘﺨﺪام وﺳﺮﻳﻌﺔ ﻻﻇﻬﺎر رﺳﺎﺋﻞ ﻟﻠﻤﺴﺘﺨﺪم ﺗﺨﺒﺮﻩ ﺑﺸﻰء ﻣﻌﻴﻦ او‬
‫ﺗﻄﻠﺐ ﻣﻨﻪ ادﺧﺎل ﺑﻴﺎﻧﺎت ﻣﻌﻴﻨﺔ‪.‬‬
‫وهﻤﺎ ‪ Display Message Express VI‬و ‪.Prompt User Express VI‬‬

‫‪Display Message Express VI‬‬


‫ﺗﺴﺘﺨﺪم هﺬة ‪ Express VI‬ﻻﻇﻬﺎر رﺳﺎﻟﺔ ﻟﻠﻤﺴﺘﺨﺪم ﺑﻬﺎ زرار او زرارﻳﻦ‪.‬‬

‫‪44‬‬
‫هﺬة ‪ Express VI‬ﺗﺸﺒﺔ اﻟﺪوال اﻻﺳﺎﺳﻴﺔ ‪.One and Two Button Dialogs‬‬

‫ﺑﻤﺠﺮد ادراج ‪ Express VI‬ﻓﻰ ‪ Block Diagram‬ﺗﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﻓﻴﻬﺎ ﺧﺎﺋﺺ‬
‫اﻟﺮﺳﺎﻟﺔ اﻟﺘﻰ ﻧﺮﻳﺪهﺎ‬

‫وﺑﻌﺪ ادراج هﺬة ‪ Express VI‬ﻳﻤﻜﻦ ان ﻧﻌﻴﺪ ﻓﺘﺢ ﻧﺎﻓﺬة اﻟﺨﺼﺎﺋﺺ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ‬
‫‪ ExpressVI‬ﺿﻐﻄﺘﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ او ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻬﺎ ﺑﺎﻟﺰر اﻻﻳﻤﻦ و اﺧﺘﻴﺎر ‪.Properties‬‬

‫‪45‬‬
‫وﻳﻮﺟﺪ ﻟﻬﺬة ‪ Express VI‬ﻣﺪﺧﻞ ﻳﺴﻤﻰ ‪ Enabled‬وهﻮ ﻟﺘﻔﻌﻴﻞ او ﻋﺪم ﺗﻔﻌﻴﻞ اﻇﻬﺎر اﻟﺮﺳﺎﻟﺔ‬
‫ﻓﺎذا آﺎن آﺎﻧﺖ اﻟﻘﻴﻤﺔ اﻟﻤﻮﺻﻠﺔ ﻟﻬﺬا اﻟﻤﺪﺧﻞ ‪:‬‬
‫‪ True‬ﺳﻮف ﻳﺘﻢ اﻇﻬﺎر اﻟﺮﺳﺎﻟﺔ ﻋﻨﺪ ﺗﻨﻔﻴﺬ ‪.Express VI‬‬
‫‪ False‬ﻟﻦ ﻳﺘﻢ اﻇﻬﺎر اﻟﺮﺳﺎﻟﺔ ﻋﻨﺪ ﺗﻨﻔﻴﺬ ‪.Express VI‬‬
‫وهﺬا ﻟﻠﺘﺤﻜﻢ ﻓﻰ اﻇﻬﺎر او ﻋﺪم اﻇﻬﺎر اﻟﺮﺳﺎﻟﺔ ﻣﻦ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫وﻳﻮﺟﺪ ﻟﻬﺬة ‪ Express VI‬ﻣﺨﺮج ﻗﻴﻤﺘﻪ ﺗﺘﻮﻗﻒ ﻋﻠﻰ اﻟﺰرار اﻟﺬى ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﻴﻪ ﻣﻦ ﻗﺒﻞ‬
‫اﻟﻤﺴﺘﺨﺪم ﻋﻨﺪ اﻇﻬﺎر اﻟﺮﺳﺎﻟﺔ‪.‬‬
‫ﻓﻔﻰ ﺣﺎﻟﺔ اذا آﺎﻧﺖ اﻟﺮﺳﺎﻟﺔ ﺗﺤﺘﻮى ﻋﻠﻰ زرار واﺣﺪ ﻓﺎن هﺬا اﻟﻤﺨﺮج ﻗﻴﻤﺘﻪ ‪ True‬داﺋﻤﺎ‪.‬‬
‫اﻣﺎ ﻓﻰ ﺣﺎﻟﺔ اذا آﺎﻧﺖ اﻟﺮﺳﺎﻟﺔ ﺗﺤﺘﻮى ﻋﻠﻰ زرارﻳﻦ ﻓﺴﺘﻜﻮن ﻗﻴﻤﺘﻪ ‪:‬‬
‫‪ True‬اذا ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺰرار اﻻول‪.‬‬
‫‪ False‬اذا ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺰرار اﻟﺜﺎﻧﻰ‪.‬‬
‫وهﺬا ﻳﻤﺎﺛﻞ اﻟﺪاﻟﺘﻴﻦ ‪ One Button Dialog‬و ‪Two Button Dialog‬‬

‫‪Prompt User Express VI‬‬


‫وهﻰ ﻻﻇﻬﺎر رﺳﺎﻟﺔ ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪم ﻣﻦ ﺧﻼﻟﻬﺎ ادﺧﺎل ﺑﻴﺎﻧﺎت ﻣﺤﺪدة ﻟﻠﺒﺮﻧﺎﻣﺞ ﻣﺜﻞ رﺳﺎﻟﺔ ادﺧﺎل‬
‫اﺳﻢ اﻟﻤﺴﺘﺨﺪم وآﻠﻤﺔ اﻟﺴﺮ‪.‬‬

‫‪46‬‬
‫وﺑﻤﺠﺮد ادراج هﺬة ‪ Express VI‬ﺗﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة اﻟﺨﺼﺎﺋﺺ ﻟﺘﺤﺪﻳﺪ ﺧﺼﺎﺋﺺ اﻟﺮﺳﺎﻟﺔ‪.‬‬

‫ﺷﻜﻞ اﻟﺮﺳﺎﻟﺔ‬

‫‪47‬‬
‫ﺷﻜﻞ اﻳﻘﻮﻧﺔ ‪ Express VI‬ﺑﻌﺪ ﺗﺤﺪﻳﺪ ﺧﺼﺎﺋﺼﻬﺎ‬

‫‪48‬‬
‫‪The Sequence Structure‬‬
‫ﺗﺤﺘﻮى ‪ Sequence Structure‬ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻻآﻮاد آﻞ آﻮد ﻳﺴﻤﻰ ‪SubDiagram‬‬
‫ﺗﻨﻔﺬ آﻠﻬﺎ ﺑﺘﺮﺗﻴﺐ ﺗﻮاﺟﺪهﺎ ﻓﻰ ‪.Sequence Structure‬وﻳﻮﺿﻊ آﻞ آﻮد ﻓﻰ اﻃﺎر‪ .‬ﺗﺮﺗﻴﺐ‬
‫هﺬا اﻻﻃﺎر هﻮ ﺗﺮﺗﻴﺐ ﺗﻨﻔﻴﺬ اﻟﻜﻮد‪.‬‬
‫وﻳﻮﺟﺪ ﻧﻮﻋﺎن ﻣﻦ ‪ Sequence Structure‬هﻤﺎ ‪ Flat Sequence Structure‬و‬
‫‪.Stacked Sequence Structure‬‬
‫وهﻤﺎ ﻳﺨﺘﻠﻔﺎن ﻓﻘﻂ ﻓﻰ ﻃﺮﻳﻘﺔ ﻋﺮض اﻻآﻮاد )‪. (SubDiagrams‬‬
‫‪Flat Sequence Structure‬‬
‫ﺗﻌﺮض اﻻﻃﺎرات او اﻻآﻮاد ﺑﺠﻮار ﺑﻌﻀﻬﺎ وﺗﻨﻔﺬ اﻻآﻮاد اﻟﻤﻮﺟﺪة داﺧﻞ اﻻﻃﺎرت ﺑﺎﻟﺘﺮﺗﻴﺐ ﻣﻦ‬
‫اﻟﻴﺴﺎر اﻟﻰ اﻟﻴﻤﻴﻦ‪.‬‬

‫‪Stacked Sequence Structure‬‬


‫وهﻰ ﺗﻤﺎﺛﻞ ‪ Case Structure‬ﻓﻰ ﻃﺮﻳﻘﺔ ﻋﺮض اﻻآﻮاد)اﻟﻤﻮﺟﻮدة ﻓﻰ آﻞ اﻃﺎر(‪.‬‬

‫‪49‬‬
: Sequence Structure ‫ادراج‬
‫ ﻣﻦ‬Sequence Structure ‫ﻳﺘﻢ ادراج‬
Function Palette>>Programming>>Structures

Add Frame ‫ وﻧﻀﻐﻂ‬Structure ‫وﻻﺿﺎﻓﺔ اﻃﺎر ﺟﺪﻳﺪ ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ اﻃﺎر‬
Add Frame Before ‫ او‬After

50
‫‪: Sequence Local‬‬
‫ﻳﺘﻢ ﻧﻘﻞ اﻟﺒﻴﺎﻧﺎت ﺑﻴﻦ اﻻﻃﺎرات ﻓﻰ ‪ Flat Sequence Structure‬ﺑﺎﻟﺮﺑﻂ ﺑﻴﻦ اﻻآﻮاد ﻋﻦ ﻃﺮﻳﻖ‬
‫‪) Tunnels‬رﺑﻂ ﻣﺒﺎﺷﺮ(‪.‬‬

‫‪51‬‬
‫اﻣﺎ ﻓﻰ ﺣﺎﻟﺔ ‪ Stacked Sequence Structure‬ﻓﻴﺴﺘﺨﺪم ‪ Sequence Local‬ﻟﻨﻘﻞ اﻟﺒﻴﺎﻧﺎت‬
‫ﺑﻴﻦ اﻻﻃﺎرات اﻟﻤﺨﺘﻠﻔﺔ‪.‬‬

‫اﺿﺎﻓﺔ ‪: Sequence Local‬‬


‫ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻻﻃﺎر وﻧﺨﺘﺎر ‪Add Sequence Local‬‬

‫‪52‬‬
‫ﻧﻮﺻﻞ ﻗﻴﻤﺔ اﻟﻰ ‪ Sequence Local‬ﻓﻰ اﺣﺪ اﻻﻃﺎرت وﻳﺘﻢ ﻗﺮاءة هﺬة اﻟﻘﻴﻤﺔ ﻓﻰ اﻻﻃﺎرات‬
‫اﻻﺧﺮى‪.‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬
‫ﻓﻰ اى وﻗﺖ اﺛﻨﺎء ﺗﺼﻤﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻤﻜﻦ اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ ‪Flat and Stacked Sequence‬‬
‫‪.Structures‬‬

‫‪53‬‬
54
‫اﻟﻤﺆﻗﺘﺎت ‪Timing‬‬
‫ﻟﻠﻤﺆﻗﺘﺎت اهﻤﻴﺔ آﺒﻴﺮة ﻓﻰ ‪ LabVIEW‬ﻓﻬﻰ ﺗﺴﺘﺨﺪم ﻟﻘﻴﺎس اﻟﺰﻣﻦ وﻋﻤﻞ ﺗﺰاﻣﻦ ﺑﻴﻦ اﻟﻤﻬﺎم اﻟﻤﺨﺘﻠﻔﺔ و‬
‫ﻋﻤﻞ ﺗﺄﺧﻴﺮ ﻓﻰ ﻋﻤﻞ ‪ Loops‬ﻟﻜﻰ ﺗﻌﻤﻞ ‪Loops‬ﺑﻤﻌﺪل ﻣﻨﺎﺳﺐ ﺣﺘﻰ ﻻ ﺗﺴﺘﺤﻮز ﻋﻠﻰ اﻟﺴﺮﻋﺔ‬
‫اﻟﻜﻠﻴﺔ ﻟﻠﻤﻌﺎﻟﺞ‪.‬‬
‫وﻳﻮﺟﺪ ﻧﻮﻋﺎن ﻣﻦ اﻟﻤﺆﻗﺘﺎت ‪ :‬اﻟﺪوال اﻻﺳﺎﺳﻴﺔ و‪Express Timing VIs‬‬
‫وﻳﻤﻜﻦ ادراج ﺟﻤﻴﻊ اﻟﻤﺆﻗﺘﺎت ﻣﻦ‬
‫‪Function Palette >> Programming>> Timing‬‬

‫اﻟﺪوا ل اﻻﺳﺎﺳﻴﺔ ‪:‬‬


‫‪ .1‬داﻟﺔ )‪: Wait (ms‬‬
‫ﺗﺠﻌﻞ هﺬة اﻟﺪاﻟﺔ ‪ VI‬ﺗﻨﺘﻈﺮ ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ ﻣﻴﻠﻠﻰ ﺛﺎﻧﻴﺔ ﺛﻢ ﺑﻌﺪهﺎ ﻳﺴﺘﻤﺮ ﺗﻨﻔﻴﺬ ‪.VI‬اى اﻧﻬﺎ ﺗﻘﻮم ﺑﻌﻤﻞ‬
‫ﺗﺄﺧﻴﺮ زﻣﻨﻰ ﺑﺎﻟﻤﻠﻠﻰ ﺛﺎﻧﻴﺔ‪ .‬اذا اردت ان ﻳﻜﻮن اﻟﺘﺄﺧﻴﺮ ﺑﺎﻟﺜﻮان اﺿﺮب ﻋﺪد اﻟﺜﻮاﻧﻰ ﻓﻰ ‪.1000‬‬

‫‪55‬‬
‫‪ .2‬داﻟﺔ ‪: Wait Until Next‬‬
‫ﺗﺠﻌﻞ هﺬة اﻟﺪاﻟﺔ ‪ VI‬ﺗﻨﺘﻈﺮ ﺣﺘﻰ ﺗﻜﻮن اﻟﺴﺎﻋﺔ اﻟﺪاﺧﻠﻴﺔ ﻟﻨﻈﺎم اﻟﺘﺸﻐﻴﻞ )وﻳﻨﺪوز ﻣﺜﻼ( ﺗﺴﺎوى‬
‫ﻣﻀﺎﻋﻔﺎت اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ﻟﻠﺪاﻟﺔ)‪ (millisecond multiple‬وﺑﻌﺪ ذﻟﻚ ﻳﺴﺘﻤﺮ ﺗﻨﻔﻴﺬ ‪.VI‬‬
‫وﺗﻜﻮن اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ﻟﻠﺪاﻟﺔ ﺑﺎﻟﻤﻠﻠﻰ ﺛﺎﻧﻴﺔ‪.‬‬

‫وﺗﺘﺸﺎﺑﺔ اﻟﺪاﻟﺘﻴﻦ )‪ Wait(ms‬واﻟﺪاﻟﺔ ‪ Wait Until Next ms Multiple‬وﻟﻜﻦ هﻨﺎك اﺧﺘﻼف‬


‫ﺑﻴﻨﻬﻤﺎ‪.‬‬
‫وﻳﺘﻀﺢ اﻻﺧﺘﻼف ﻣﻦ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻰ‪:‬‬

‫هﻰ ‪.10‬‬ ‫ﻟﻮ ان اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ﻟﺪاﻟﺔ ‪Wait until Next ms Multiple‬‬
‫وﻗﻴﻤﺔ ﺳﺎﻋﺔ او ﻣﺆﻗﺖ اﻟﻨﻈﺎم هﻰ ﻣﺜﻼ ‪.112‬‬

‫‪ 8‬ﻣﻴﻠﻠﻰ ﺛﺎﻧﻴﺔ ﺣﺘﻰ ﺗﻜﻮن اﻟﺴﺎﻋﺔ اﻟﺪاﺧﻠﻴﺔ ﻟﻠﻨﻈﺎم ‪ 120‬وهﻮ ﻳﻌﻨﻰ‬ ‫ﻓﺴﻮف ﺗﻨﺘﻈﺮ اﻟﺪاﻟﺔ‬
‫ﻣﻀﺎﻋﻔﺎت ‪) 10‬اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ﻟﻠﺪاﻟﺔ(‪.‬‬
‫وﻓﻰ اﻟﻤﺮة اﻟﺘﺎﻟﻴﺔ ﺳﻮف ﺗﻨﺘﻈﺮ اﻟﻰ ان ﺗﻜﻮن اﻟﺴﺎﻋﺔ ‪ 130‬اﻳﻀﺎ ﻣﻀﺎﻋﻔﺎت ‪ .10‬وهﻜﺬا‬
‫ﻻﺣﻆ اﻧﻪ ﺣﺪث ﺗﺰاﻣﻦ ﻣﻊ ﺳﺎﻋﺔ اﻟﻨﻈﺎم ‪.‬‬

‫ﻟﻮ ان اﻟﻘﻴﻤﺔ اﻟﺪاﺧﻠﺔ ﻟﻬﺎ هﻰ ‪.10‬‬ ‫اﻣﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺪاﻟﺔ )‪Wait (ms‬‬
‫وﻗﻴﻤﺔ ﺳﺎﻋﺔ او ﻣﺆﻗﺖ اﻟﻨﻈﺎم هﻰ ﻣﺜﻼ ‪.112‬‬

‫‪56‬‬
‫‪ 10‬ﻣﻴﻠﻠﻰ ﺛﺎﻧﻴﺔ ﻟﻜﻰ ﺗﻜﻮن اﻟﺴﺎﻋﺔ اﻟﺪاﺧﻠﻴﺔ ﻟﻠﻨﻈﺎم ‪.122‬اى اﻧﻬﺎ اﻧﺘﻈﺮت‬ ‫ﻓﺴﻮف ﺗﻨﺘﻈﺮ اﻟﺪاﻟﺔ‬
‫‪ 10‬ﻣﻠﻠﻰ ﺛﺎﻧﻴﺔ ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻗﻴﻤﺔ ﺳﺎﻋﺔ اﻟﻨﻈﺎم‪ .‬وهﻜﺬا ﺳﺘﻨﺘﻈﺮ ﻓﻰ آﻞ ﻣﺮة ﺗﻨﻔﺬ ‪ 10‬ﻣﻠﻠﻰ ﺛﺎﻧﻴﺔ‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻗﻴﻤﺔ ﺳﺎﻋﺔ اﻟﻨﻈﺎم‪.‬‬

‫ﻓﻰ ﺟﻌﻞ ﻣﺎ ﺑﺪاﺧﻞ ‪ Loops‬ﻳﻨﻔﺬ ﻓﻰ ازﻣﻨﺔ ﻣﺤﺪدة ‪.‬آﻤﺎ اﻧﻬﺎ ﺗﺴﺘﺨﺪم ﻓﻰ‬ ‫ﻟﺬﻟﻚ ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ‬
‫ﻋﻤﻞ ﺗﺰاﻣﻦ ﺑﻴﻦ اﻻﺣﺪاث‪.‬‬
‫ﻻﺣﻆ اﻧﻪ ﻋﻨﺪﻣﺎ ﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻓﻰ ‪ Loop‬ﻓﺄﻧﻬﺎ ﻓﻰ اول ﻣﺮة ﺗﻨﻔﺬ ﻓﻴﻬﺎ ﻗﺪ ﺗﻨﺘﻈﺮ اﻗﻞ ﻣﻦ اﻟﻘﻴﻤﺔ‬
‫اﻟﺪاﺧﻠﺔ اﻟﻴﻬﺎ آﻤﺎ ﻓﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ‪.‬‬

‫ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺘﻴﻦ اﻟﺴﺎﺑﻘﺘﻴﻦ ﺑﻜﺜﺮة ﻓﻰ ‪ Loops‬وذﻟﻚ ﺣﺘﻰ ﻻ ﺗﺴﺘﺤﻮز ‪ Loop‬ﻋﻠﻰ ﺳﺮﻋﺔ اﻟﻤﻌﺎﻟﺞ‪.‬‬
‫ﻓﺘﻘﻮم هﺬة اﻟﺪوال ﺑﻌﻤﻞ اﻟﺘﺎﺧﻴﺮ اﻟﻼزم ﻟﻌﻤﻞ اﻟﻤﻬﺎم اﻻﺧﺮى ﻣﺜﻞ ﺗﻔﺎﻋﻞ ﻋﻨﺎﺻﺮ ‪ Front Panel‬ﻣﻊ‬
‫اﻟﻤﺴﺘﺨﺪم‪.‬‬

‫‪ .3‬داﻟﺔ )‪: Tick Count (ms‬‬


‫ﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻟﻠﺤﺼﻮل ﻋﻠﻰ )اﻟﺴﺎﻋﺔ( اﻟﻤﺆﻗﺖ اﻟﺪاﺧﻠﻰ ﻟﻨﻈﺎم اﻟﺘﺸﻐﻴﻞ وذﻟﻚ ﺑﺎﻟﻤﻠﻠﻰ ﺛﺎﻧﻴﺔ‪.‬‬

‫ﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻓﻰ ﺣﺴﺎب اﻟﻮﻗﺖ اﻟﻤﻨﻘﻀﻰ ﻓﻰ ﺗﻨﻔﻴﺬ ﺟﺰء ﻣﻌﻴﻦ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪57‬‬
‫‪: Express Timing Functions‬‬
‫ﺑﺎﻻﺿﺎﻓﺔ اﻟﻰ اﻟﺪوال اﻻﺳﺎﺳﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻰ ﺑﻴﺌﺔ ‪ LabVIEW‬ﺗﻮﺟﺪ ‪Express Timing VIs‬‬
‫وهﻤﺎ ‪Time Delay‬و ‪.Elapsed Time‬‬

‫‪: Time Delay Express VI .1‬‬


‫هﻰ ﺗﻤﺎﺛﻞ ﺑﺎﻟﻀﺒﻂ داﻟﺔ )‪ Wait(ms‬واﻟﻔﺮق ﺑﻴﻨﻬﻤﺎ ان ﻓﻰ هﺬة ‪ Express VI‬ﻧﺤﺪد ﻟﻬﺎ زﻣﻦ‬
‫اﻟﺘﺄﺧﻴﺮ ﺑﺎﻟﺜﻮاﻧﻰ‪.‬‬
‫وﻋﻨﺪ ادراج ‪ Express VI‬ﺗﻈﻬﺮ ﻧﺎﻓﺬة ﻧﺤﺪد ﻓﻴﻬﺎ زﻣﻦ اﻟﺘﺄﺧﻴﺮ اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫وﻳﻤﻜﻦ ﺗﻮﺻﻴﻞ ﻗﻴﻤﺔ اﻟﺘﺄﺧﻴﺮ اﻟﻰ ‪ Express VI‬وهﺬة اﻟﻘﻴﻤﺔ ﺳﻮف ﺗﺤﻞ ﻣﺤﻞ اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺣﺪدﻧﺎ‬
‫ﺑﻮاﺳﻄﺔ اﻟﻨﺎﻓﺬة اﻟﺴﺎﺑﻘﺔ‪.‬‬

‫‪: Elapsed Time Express VI .2‬‬


‫ﺗﺘﻴﺢ هﺬة ‪ Express VI‬ﻣﻌﺮﻓﺔ اذا آﺎن ﻗﺪ اﻧﻘﻀﻰ وﻗﺖ )ﻣﺤﺪدة ﻗﻴﻤﺘﻪ ﻣﻦ ﻗﺒﻞ( ام ﻻ‪.‬‬
‫ﻋﻨﺪ ادراج ﺗﻠﻚ ‪ Express VI‬ﺗﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﻧﺤﺪد ﻓﻴﻬﺎ اﻟﻮﻗﺖ اﻟﺬى ﻧﺮﻳﺪ ﻣﻌﺮﻓﺔ هﻞ اﻧﻘﻀﻰ هﺬا‬
‫اﻟﻮﻗﺖ ام ﻻ‪.‬‬

‫‪58‬‬
‫وﺗﺤﺪد اﻟﻘﻴﻤﺔ ‪ Time Has Elapsed‬هﻠﻰ اﻧﻘﻀﻰ اﻟﻮﻗﺖ ام ﻻ‬
‫ﻓﺎذا آﺎﻧﺖ ‪ True‬ﻓﺈن اﻟﻮﻗﺖ اﻟﻤﺤﺪد ﻗﺪ اﻧﻘﻀﻰ‬
‫اﻣﺎ اذا اآﺎﻧﺖ ‪ False‬ﻓﺈن اﻟﻮﻗﺖ ﻟﻢ ﻳﻨﻘﻀﻰ ﺑﻌﺪ‪.‬‬

‫‪59‬‬
‫‪Formula Node‬‬
‫ﺗﺴﺘﺨﺪم ‪ Formula Node‬ﻟﻜﺘﺎﺑﺔ اﻟﻤﻌﺎدﻻت اﻟﺮﻳﺎﺿﻴﺔ ‪.‬‬
‫ﻣﺜﻼ ﻟﺘﻄﺒﻴﻖ هﺬة اﻟﻤﻌﺎدﻟﺔ ‪ Y=X2+X+1‬ﺑﻮاﺳﻄﺔ اﻟﺪوال اﻻﺳﺎﺳﻴﺔ ﻓﻰ ‪ LabVIEW‬ﻓﺴﻮف‬
‫ﺗﻜﻮن ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫وﻟﻜﻦ ﺑﺎﺳﺘﺨﺪام ‪ Formula Node‬ﺳﺘﻜﻮن ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫آﻴﻔﻴﺔ ادراج ‪: Formula Node‬‬


‫ﻳﺘﻢ ادرج ‪ Formula Node‬ﻣﻦ‬
‫‪Factions Palette >>Programming >>Structures‬‬

‫‪60‬‬
‫اﺿﺎﻓﺔ ﻣﺘﻐﻴﺮات داﺧﻠﺔ وﻣﺘﻐﻴﺮات ﺧﺎرﺟﺔ‪:‬‬
‫ﻳﻤﻜﻦ اﺿﺎﻓﺔ اى ﻋﺪد ﻣﻦ اﻟﻤﺘﻐﻴﺮات اﻟﺪاﺧﻠﺔ اواﻟﺨﺎرﺟﺔ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس‬
‫واﺧﺘﻴﺎر‬
‫‪ Add Input‬ﻻﺿﺎﻓﺔ ﻣﺘﻐﻴﺮ داﺧﻞ‬
‫‪ Add Output‬ﻻﺿﺎﻓﺔ ﻣﺘﻐﻴﺮ ﺧﺎرج‬

‫ﻣﻠﺤﻮﻇﺎت‬
‫• ﻻ ﻳﻤﻜﻦ ان ﻳﻜﻮن هﻨﺎك ﻣﺘﻐﻴﺮﻳﻦ داﺧﻠﻴﻦ او ﺧﺎرﺟﻴﻦ ﺑﻨﻔﺲ اﻻﺳﻢ ‪.‬‬
‫• ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻣﺘﻐﻴﺮ ﺧﺎرج واﺧﺮ داﺧﻞ ﺑﻨﻔﺲ اﻻﺳﻢ ‪.‬‬
‫• اﻟﻤﺘﻐﻴﺮات اﻟﺨﺎرﺟﺔ ﻳﻜﻮن اﻃﺎرهﺎ اآﺜﺮ ﺳﻤﻜﺎ ﻣﻦ اﻟﻤﺘﻐﻴﺮات اﻟﺪاﺧﻠﺔ ‪.‬‬

‫• ﻳﻤﻜﻦ ﺗﻐﻴﺮ اﻟﻤﺘﻐﻴﺮ ﻣﻦ داﺧﻞ اﻟﻰ ﺧﺎرج او اﻟﻌﻜﺲ‬

‫‪61‬‬
‫آﺘﺎﺑﺔ اﻟﻤﻌﺎدﻻت داﺧﻞ ‪: Forumla Node‬‬
‫ﺗﻜﺘﺐ اﻟﻤﻌﺎدﻻت ﻓﻰ داﺧﻞ ‪ Fromula Node‬ﺑﻄﺮﻳﻘﺔ ﻣﺸﺎﺑﻬﺔ ﻟﻜﺘﺎﺑﺔ اﻟﺠﻤﻞ ﻓﻰ ﻟﻐﺔ ‪.C‬‬
‫ﺗﻜﺘﺐ اﻟﻤﻌﺎدﻟﺔ ﺑﺎﺳﺘﺨﺪام اﻟﺪوال و اﺳﻤﺎء اﻟﻤﺘﻐﻴﺮات‪.‬‬
‫ﻳﻮﺿﻊ ﺑﻌﺪ آﻞ ﻣﻌﺎدﻟﺔ اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ ;‬
‫ﻳﻤﻜﻦ ان ﺗﻮﺟﺪ اآﺜﺮ ﻣﻦ ﻣﻦ ﻣﻌﺎدﻟﺔ ﻓﻰ ‪.Formula Node‬‬
‫اى ﻣﺘﻐﻴﺮ ﻳﺴﺘﺨﺪم ﻓﻰ اﻟﻤﻌﺎدﻻت ﻳﺠﺐ ان ﻳﻮﺿﻊ آﻤﺘﻐﻴﺮ ﺧﺎرج او داﺧﻞ ﻋﻠﻰ اﻃﺮاف‬
‫‪.Formula Node‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬
‫ﻟﻴﺲ ﺣﺘﻤﻴﺎ رﺑﻂ اﻟﻤﺘﻐﻴﺮات اﻟﺨﺎرﺟﺔ ﺑﺨﺎرج ‪ Node‬ﻓﻬﻨﺎك ﻣﺜﻼ اﻟﻤﺘﻐﻴﺮات اﻟﻮﺳﻴﻄﺔ اﻟﺘﻰ‬
‫ﺗﺴﺘﺨﺪم ﺑﻴﻦ اﻟﻤﻌﺎدﻻت‪.‬‬

‫‪62‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬
‫ﻟﻴﺲ هﻨﺎ ﻋﺪد ﻣﺤﺪد ﻟﻌﺪد اﻟﻤﺘﻐﻴﺮات او ﻋﺪد اﻟﻤﻌﺎدﻻت اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ ‪.Formula Node‬‬
‫ﻳﻤﻜﻦ ﺗﻜﺒﻴﺮ ‪ Fromula Node‬ﻟﺘﺴﻊ اى ﻋﺪد ﻣﻦ اﻟﻤﻌﺎدﻻت وذﻟﻚ ﺑﺎﺳﺘﺨﺪام ‪Positioning‬‬
‫‪Tool‬‬

‫آﻤﺎ ﻳﻤﻜﻦ اﻇﻬﺎر ﺷﺮﻳﻂ اﻧﺰﻻق راﺳﻰ داﺧﻞ ‪ Node‬ﻟﻜﺘﺎﺑﺔ اآﺒﺮ ﻋﺪد ﻣﻤﻜﻦ ﻣﻦ اﻟﻤﻌﺎدﻻت‪.‬‬

‫ﻳﻤﻜﻦ ﺗﻄﺒﻴﻖ اﻟﺠﻤﻠﺔ اﻟﺸﺮﻃﻴﺔ ‪ if … then…else‬داﺧﻞ ‪Formula Node‬‬


‫ﻓﻤﺜﻼ اذا اردﻧﺎ ﺗﻄﺒﻴﻖ هﺬة اﻟﺠﻤﻠﺔ‬
‫‪If (x>=0) then‬‬
‫)‪y=sqrt(x‬‬
‫‪else‬‬
‫‪y=-99‬‬
‫‪endif‬‬

‫‪63‬‬
‫واﻟﺘﻰ ﺗﻌﻨﻰ ‪ :‬اذا آﺎﻧﺖ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ‪ x‬اآﺒﺮ ﻣﻦ او ﺗﺴﺎوى ‪ 0‬ﻓﺎﺟﻌﻞ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ‪ y‬ﺗﺴﺎوى‬
‫اﻟﺠﺬر اﻟﺘﺮﺑﻴﻌﻰ ﻟﻘﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ‪. x‬‬
‫واذا آﺎﻧﺖ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ‪ x‬ﻏﻴﺮ ذﻟﻚ اى ﻟﻴﺴﺖ اآﺒﺮ وﻻ ﺗﺴﺎوى ‪) 0‬اى اﺻﻐﺮ ﻣﻦ ‪ (0‬ﻓﺎﺟﻌﻞ‬
‫ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ‪ y‬ﺗﺴﺎوى اﻟﺮﻗﻢ ‪) -99‬دﻻﻟﺔ ﻋﻠﻰ ان اﻟﻤﺘﻐﻴﺮ ‪ x‬ﻟﻴﺲ ﻟﻪ ﺟﺬر ﺗﺮﺑﻴﻌﻰ( ‪.‬‬

‫وهﺬ اﻟﻤﺜﺎل ﻳﻤﻜﻦ ﺗﻄﺒﻴﻘﻪ ﺑﺎﺳﺘﺨﺪام ‪ Formula Node‬ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫اوﺑﻬﺬا اﻟﺸﻜﻞ‬

‫وﺗﺘﻜﻮن اﻟﺠﻤﻠﺔ ‪ y=(x>=0) ?sqrt(x) : -99‬ﻣﻦ‬


‫اﻟﺸﺮط وهﻮ ﻣﺎ ﺑﻴﻦ اﻟﻘﻮﺳﻴﻦ ‪X>=0‬‬
‫ﻋﺒﺎرة ‪ Then‬وهﻰ ﻣﺎ ﺑﻌﺪ اﻟﻌﻼﻣﺔ ? و هﻰ ﻓﻰ هﺬا اﻟﻤﺜﺎل ﻗﻴﻤﺔ ‪ y‬اذا ﺗﺤﻘﻖ اﻟﺸﺮط ))‪.(Sqrt(x‬‬
‫ﻋﺒﺎرة ‪ else‬وهﻰ ﻣﺎ ﺑﻌﺪ اﻟﻌﻼﻣﺔ ‪ :‬وهﻮ ﻓﻰ هﺬا اﻟﻤﺜﺎل ﻗﻴﻤﺔ ‪ y‬اذا ﻟﻢ ﻳﺤﻘﻖ اﻟﺸﺮط )‪.(-99‬‬

‫وﻟﻤﻌﺮﻓﺔ اﻟﺪوال اﻟﺘﻰ ﻳﻤﻜﻦ ان ﻧﺴﺘﺨﺪﻣﻬﺎ ﻓﻰ ‪ Formula Node‬ﻧﺸﺎهﺪ ‪ Context Help‬ﻟـ‬


‫‪.Formula Node‬‬

‫‪64‬‬
‫‪Expression Node‬‬
‫هﻰ ﺻﻮرة ﻣﺒﺴﻄﺔ ﻣﻦ ‪.Formula Node‬ﻓﻬﻰ ﺗﺤﺘﻮى ﻋﻠﻰ ﻋﺒﺎرة رﻳﺎﺿﻴﺔ واﺣﺪة وﻣﺪﺧﻞ‬
‫واﺣﺪ وﻣﺨﺮج واﺣﺪ‪.‬‬

‫وﺣﻴﺚ ان اﻟﻤﺪﺧﻞ وان اﻟﻤﺨﺮج وﺣﻴﺪ ﻓﻠﻴﺲ ﻟﻬﻤﺎ اﺳﻤﺎء‪.‬‬


‫وﺗﻜﺘﺐ اﻟﻌﺒﺎرة اﻟﺮﻳﺎﺿﻴﺔ ﺑﺪون اﻟﻌﻼﻣﺔ ;‬
‫وﻳﺴﺘﺨﺪم ﻣﺘﻐﻴﺮ وﺣﻴﺪ ﻓﻰ هﺬة اﻟﻌﺒﺎرة اﻟﺮﻳﺎﺿﻴﺔ وﻳﻤﻜﻦ ان ﻧﺴﻤﻰ هﺬة اﻟﻤﺘﻐﻴﺮ ﺑﺎى اﺳﻢ ‪.‬‬
‫وهﺬا اﻟﻤﺘﻐﻴﺮ ﻳﻌﺒﺮ ﻋﻦ اﻟﻤﺪﺧﻞ ‪.‬‬
‫واﻟﻤﺨﺮج هﻮ ﻧﺎﺗﺞ اﻟﻌﺒﺎرة اﻟﺮﻳﺎﺿﻴﺔ‬

‫وﻳﺘﻢ ادارج ‪ Expression Node‬ﻣﻦ‬


‫‪Function Palette>>Programming>>Numeric‬‬

‫‪65‬‬
66
‫ﺗﻢ ﺑﺤﻤﺪ اﷲ ﺗﻌﺎﻟﻰ اﻻﻧﺘﻬﺎء ﻣﻦ اﻟﺪرس‬
‫اﻟﻰ اﻟﻘﺎء ﺑﺎذن اﷲ ﺗﻌﺎﻟﻰ ﻓﻰ اﻟﺪرس اﻟﺴﺎدس‬
LabVIEW ‫دروس ﺗﻌﻠﻴﻢ‬

‫اﻟﺪرس اﻟﺴﺎدس‬
Arrays and Clusters
‫اﻟﻔﻬﺮس‬

‫اﻟﻔﻬﺮس ‪i.........................................................................................................‬‬

‫هﺪف اﻟﺪرس ‪iii ..................................................................................................‬‬

‫ﻣﻘﺪﻣﺔ ‪iv ..........................................................................................................‬‬

‫اﻟﻤﺼﻔﻮﻓﺎت )‪1 ..................................................................................... (Arrays‬‬

‫ﻣﺎهﻰ اﻟﻤﺼﻔﻮﻓﺔ )‪ (Array‬؟ ‪1 .............................................................................‬‬


‫اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Controls‬او ‪3 ...................................................... Indicators‬‬
‫اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Constants‬ﻓﻰ ‪9 ........................................... Block Diagram‬‬
‫ﺣﺬف ﺟﻤﻴﻊ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ‪10 .........................................................................‬‬
‫اﺿﺎﻓﺔ او ﺣﺬف ﻋﻨﺼﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ‪11 .................................................................‬‬
‫اﻇﻬﺎر ‪) Scrollbar‬ﺷﺮﻳﻂ اﻧﺰﻻق( ﻟﻠﻤﺼﻔﻮﻓﺔ ‪13 .......................................................‬‬
‫اﺳﺘﺨﺪام ﺧﺎﺻﻴﺔ ‪14 .................................................................. Auto-Indexing‬‬
‫اﺳﺘﺨﺪام ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻟﺘﺤﺪﻳﺪ ﻋﺪد ﻣﺮات ﺗﻜﺮار ﺗﻨﻔﻴﺬ ‪17 .............. For Loop‬‬
‫اﻟﻤﺼﻔﻮﻓﺎت ذات ﺑﻌﺪﻳﻦ ‪19 .................................................................................‬‬
‫آﻴﻔﻴﺔ ﺗﻜﻮن ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ‪20 ....................................................................‬‬
‫آﻴﻔﻴﺔ ﺗﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺑﺎﺳﺘﺨﺪام ‪22 ......................................... For Loop‬‬
‫اﻟﺪول اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺼﻔﻮﻓﺎت ‪24 ............................................................................‬‬
‫داﻟﺔ ‪25 ............................................................................ Initialize Array‬‬
‫داﻟﺔ ‪27 ................................................................................ Array Size‬‬
‫داﻟﺔ ‪28 ................................................................................. Build Array‬‬
‫داﻟﺔ ‪31 .............................................................................. Array Subset‬‬
‫داﻟﺔ ‪32 ................................................................................ Index Array‬‬
‫داﻟﺔ ‪34 ....................................................................... Delete from Array‬‬

‫‪35 ....................................................................................... Polymorphism‬‬

‫‪i‬‬
37 ............................................................. Compound Arithmetic Function

43 ................................................................................................. Clusters

44 .................................... Cluster Indicators‫ و‬Cluster Controls ‫آﻴﻔﻴﺔ اﻧﺸﺎء‬


46 ....................................................Block Diagram ‫ ﺛﺎﺑﺖ داﺧﻞ‬Cluster ‫اﻧﺸﺎء‬
47 ...................................................................... Cluster ‫ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ داﺧﻞ‬
49 ........................................... SubVI ‫ ﻓﻰ ﺗﻤﺮﻳﺮ اﻟﺒﻴﺎﻧﺎت ﻣﻦ و اﻟﻰ‬Cluster ‫اﺳﺘﺨﺪام‬
49 ..................................................................... Clusters ‫اهﻢ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑـ‬
50 ........................................................................................Bundle ‫داﻟﺔ‬
53 ................................................................................... Unbundle ‫داﻟﺔ‬
54 ........................................................................ Bundle By Name ‫داﻟﺔ‬
55 .................................................................... Unbundle by Name ‫داﻟﺔ‬
56 ................................................................ Clusters ‫اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺎت و‬
57 .......................................................................... Cluster to Array ‫داﻟﺔ‬
58 .......................................................................... Array to Cluster ‫داﻟﺔ‬
60 .................................................Clusters ‫اﺳﺘﺨﺪام دوال اﻟﻤﻘﺎرﻧﺔ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت و‬

64 ........................................................ Error-Handling ‫ ودوال‬Error Clusters

66 .........................................................‫ و اﻟﺪوال ﻣﻊ اﻻﺧﻄﺎء‬SubVIs ‫آﻴﻒ ﺗﺘﻔﺎﻋﻞ‬


66 .......................................................................... Error Case Structure
68 ............................................................................... Error Clusters ‫دﻣﺞ‬
69 .................................................................. SubVI ‫ داﺧﻞ‬Error ‫آﻴﻔﻴﺔ ﺗﻜﻮﻳﻦ‬
72 ..................................................................... ‫آﻴﻔﻴﺔ اﻇﻬﺎر رﺳﺎﻟﺔ ﺧﻄﺄ ﻟﻠﻤﺴﺘﺨﺪم‬
73 ................................................................................ Explain Error ‫ﻧﺎﻓﺬة‬
74 ....................................................................... Loops ‫اﺧﺘﺒﺎر ﺣﺪوث ﺧﻄﺄ ﻓﻰ‬

ii
‫هﺪف اﻟﺪرس‬

‫• اﻟﺘﻌﺮف ﻋﻠﻰ اﻟﻤﺼﻔﻮﻓﺎت واﻟﻌﻤﻠﻴﺎت اﻟﺨﺎﺻﺔ ﺑﻬﺎ ‪.‬‬


‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Clusters‬واﻟﻌﻤﻠﻴﺎت اﻟﺨﺎﺻﺔ ﺑﻬﺎ ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ﻣﻌﻨﻰ ‪.Polymorphism‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪.Compound Arithmetic Function‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ ﻣﻌﺎﻟﺠﺔ اﻻﺧﻄﺎء اﻟﺘﻰ ﺗﺤﺪث اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬

‫‪iii‬‬
‫ﻣﻘﺪﻣﺔ‬

‫ﻓﻰ هﺬا اﻟﺪرس ﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻰ ﻧﻮﻋﻴﻦ ﻣﺮآﺒﻴﻦ ﻣﻦ اﻧﻮاع اﻟﺒﻴﺎﻧﺎت )‪ ( Data Type‬وهﻤﺎ‬
‫اﻟﻤﺼﻔﻮﻓﺎت )‪ (Arrays‬و‪.Clusters‬‬
‫ووﺟﻮد هﺬان اﻟﻨﻮﻋﺎن ﻳﺴﻬﻞ ﺗﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت واﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‪.‬‬
‫وﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻰ اﺳﺘﺨﺪاﻣﺎت ﻋﺪﻳﺪة ﻟﻬﻤﺎ واﻳﻀﺎ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑﻬﻤﺎ ﻓﻰ ﺑﻴﺌﺔ ‪.LabVIEW‬‬
‫واﺧﻴﺮا ﺳﻮف ﻧﺘﻌﺮف آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺧﻄﺎء اﻟﺘﻰ ﺗﺤﺪث اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ وﺑﻌﺾ اﻟﻤﻬﺎرات‬
‫اﻟﻤﻬﻤﺔ ﻓﻰ اﻟﺒﺮﻣﺠﺔ‪.‬‬

‫‪iv‬‬
‫اﻟﻤﺼﻔﻮﻓﺎت )‪(Arrays‬‬

‫ﻣﺎهﻰ اﻟﻤﺼﻔﻮﻓﺔ )‪ (Array‬؟‬


‫اﻟﻤﺼﻔﻮﻓﺔ هﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻟﻬﺎ ﻧﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت )‪.(Data Type‬‬
‫ﻓﻠﻘﺪ ﺗﻌﺎﻣﻠﻨﺎ ﻣﻦ ﻗﺒﻞ ﻣﻊ ﻋﻨﺎﺻﺮ ﺗﺄﺧﺬ ﻗﻴﻤﺔ وﺣﻴﺪة )‪ (Scalar Value‬ﻣﺜﻞ ‪ Indicators‬و ‪. Controls‬‬
‫ﻓﻤﺜﻼ ‪ Indicator‬اﻟﺨﺎص ﺑﺪرﺟﺔ اﻟﺤﺮارة ﻟﻪ ﻗﻴﻤﺔ وﺣﻴﺪة ﻓﻰ اى وﻗﺖ ﻓﻨﻘﻮل ﻣﺜﻼ ان درﺟﺔ اﻟﺤﺮارة ﺗﺴﺎوى ‪.35‬‬
‫اﻣﺎ اذا اردﻧﺎ ان ﻧﻤﺜﻞ درﺟﺎت اﻟﺤﺮارة ﺧﻼل اﻟﻴﻮم ﻓﻠﻦ ﻧﺴﺘﻄﻴﻊ ان ﻧﻀﻌﻬﺎ ﻓﻰ ‪ Indicator‬او ‪ Control‬وﻟﻜﻦ‬
‫ﻧﻀﻌﻬﺎ ﻓﻰ ﻣﺼﻔﻮﻓﺔ )‪ ( Array‬و ﻧﺼﻔﻬﺎ ﺑﺎﻧﻬﺎ ﻣﺼﻔﻮﻓﺔ درﺟﺎت اﻟﺤﺮارة‪.‬‬
‫وآﻤﺎ ﻗﻠﻨﺎ ﺗﺤﺘﻮى اﻟﻤﺼﻔﻮﻓﺔ ﻋﻠﻰ ﻋﻨﺎﺻﺮ وﻳﻤﻜﻦ ان ﺗﻜﻮن هﺬة اﻟﻌﻨﺎﺻﺮ ﻣﻦ اى ﻧﻮع ﻣﺜﻞ )‪ Control‬او‬
‫‪ Indicator‬او ‪ ( ... Constant‬ﻣﺎﻋﺪا ‪ Array‬او ‪ Chart‬او ‪. Graph‬‬
‫واﻟﻤﺼﻔﻮﻓﺔ ﻗﺪ ﺗﻜﻮن ذات ﺑﻌﺪ واﺣﺪ او ﺑﻌﺪﻳﻦ او ﻋﺪة اﺑﻌﺎد‪.‬‬
‫وﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ آﻞ ﺑﻌﺪ ﻳﻤﻜﻦ ان ﻳﺼﻞ ‪ 231-1‬ﻋﻨﺼﺮ ‪.‬‬
‫ﻣﺜﺎل ﻳﻮﺿﺢ ﻣﻔﻬﻮم اﻻﺑﻌﺎد‪:‬‬
‫اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ هﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ﺻﻒ وﺣﻴﺪ او ﻋﻤﻮد وﺣﻴﺪ ‪.‬‬
‫ﻓﻤﺜﻼ ﻟﻮ ان ﻃﻼﺑﺎ ﻳﻤﺘﺤﻨﻮن ﻓﻰ اآﺜﺮ ﻣﻦ ﻣﺎدة آﻞ ﺷﻬﺮ‪.‬‬
‫ﻓﺎن درﺟﺎت اﻟﻄﻼب ﻓﻰ ﻣﺎدة واﺣﺪة ﻓﻰ ﺷﻬﺮ ﻣﺎ ﺗﻜﻮن ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ‪.‬‬

‫‪1‬‬
‫اﻟﻤﺼﻔﻮﻓﺔ دات اﻟﺒﻌﺪﻳﻦ ﻣﺜﻞ اﻟﺠﺪول ﻟﻬﺎ ﻋﺪة ﺻﻔﻮف واﻋﻤﺪة‪.‬‬
‫ﻣﺜﻞ درﺟﺎت اﻟﻄﻼب ﻓﻰ اآﺜﺮ ﻣﻦ ﻣﺎدة ﻓﻰ ﺷﻬﺮ واﺣﺪ‪.‬‬

‫اﻟﻤﺼﻔﻮﻓﺔ ذات ﺛﻼث اﺑﻌﺎد ﻣﺜﻞ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺠﺪاول‪.‬‬


‫ﻣﺜﻞ درﺟﺎت اﻟﻄﻼب ﻓﻰ اآﺜﺮ ﻣﻦ ﻣﺎدة ﻓﻰ اآﺜﺮ ﻣﻦ ﺷﻬﺮ‪.‬‬

‫وﻟﻠﻮﺻﻮل اﻟﻰ اى ﻋﻨﺼﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ﻧﺴﺘﺨﺪم ‪) Index‬دﻟﻴﻞ( اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬

‫وهﺬا ‪ Index‬ﻳﺎﺧﺬ اﻟﻘﻴﻢ ﻣﻦ ﺻﻔﺮ اﻟﻰ ‪ N-1‬ﺣﻴﺚ ‪ N‬هﻮ ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬
‫ﻣﺜﺎل‪ :‬ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺑﻬﺎ ‪ 10‬ﻋﻨﺎﺻﺮ‬

‫‪2‬‬
‫وﻟﻠﻤﺼﻔﻮﻓﺎت اهﻤﻴﺔ آﺒﺮى ﻓﻤﺜﻼ اى اﺷﺎرة ﻟﻜﻰ ﻳﺘﻢ رﺳﻤﻬﺎ او ﺗﺨﺰﻳﻨﻬﺎ ﻓﻰ ﻣﻠﻒ ﺗﻤﺜﻞ ﻋﻠﻰ هﻴﺌﺔ ﻣﺼﻔﻮﻓﺔ ‪ ،‬آﻞ‬
‫ﻋﻨﺼﺮ ﺑﻬﺎ ﻳﻤﺜﻞ ﻧﻘﻄﺔ ﻓﻰ هﺬة اﻻﺷﺎرة ‪ ،‬اﻳﻀﺎ ﻟﻠﻤﺼﻔﻮﻓﺎت اهﻤﻴﺔ ﻓﻰ ﺗﺨﺰﻳﻦ اﻟﻘﻴﻢ اﻟﺘﻰ ﺗﺨﺮج ﻣﻦ ‪ ،Loop‬ﻓﻜﻞ‬
‫ﺗﻨﻔﻴﺬة ﻟـ ‪ Loop‬ﺗﺨﺮج ﻋﻨﺼﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ آﻤﺎ ﺳﻨﻮﺿﺢ‪.‬‬

‫اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Controls‬او ‪: Indicators‬‬


‫ﻳﺘﻢ اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Controls‬او ‪ Indicators‬ﻓﻰ ‪ Front Panel‬ﻓﻰ ﺧﻄﻮﺗﻴﻦ ‪:‬‬
‫‪ -1‬ﻳﺘﻢ ادارح اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ وهﻮ اﻟﺬى ﺳﻴﺤﺘﻮى ﻋﻠﻰ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ‬
‫وﻳﺘﻢ ادراﺟﻪ ﻣﻦ‬
‫‪Controls Palette>>Modern>>Array, Matrix & Cluster‬‬

‫‪ -2‬ﻳﺘﻢ ادراج ‪ Control‬او ‪ Indicator‬اﻟﺬى ﻧﺮﻳﺪﻩ داﺧﻞ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ ﻟﺘﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ﻣﻨﻪ‪.‬‬

‫‪3‬‬
‫ﻻﺣﻆ ان ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻳﻤﻜﻦ ان ﻳﻜﻮﻧﻮا ‪ Controls‬او ‪ Indicators‬وﻟﻴﺲ ﺧﻠﻴﻂ ﻣﻨﻬﻢ‪.‬‬

‫‪4‬‬
‫ﻋﻨﺪ ادراج اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ وﻗﺒﻞ وﺿﻊ اى ‪ Control‬او ‪ Indicator‬داﺧﻠﻪ ﻳﻈﻬﺮ ﻟﻪ ‪ Terminal‬ﻓﻰ‬
‫‪ Block Diagram‬وﻳﻜﻮن ﻟﻮن هﺬا ‪ Terminal‬اﺳﻮد وﻳﻮﺟﺪ ﺑﻪ ﻗﻮﺳﻴﻦ ﻓﺎرﻏﻴﻦ ﺣﺘﻰ ﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟـ ‪Data‬‬
‫‪ type‬اﻟﺨﺎص ﺑﻪ وﻳﺘﻢ ذﻟﻚ ﺑﻮﺿﻊ ‪ Control‬او ‪ Indicator‬او ﺛﺎﺑﺖ داﺧﻞ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬

‫وﻋﻨﺪ وﺿﻊ ‪ Control‬او ‪ Indicator‬او ﺛﺎﺑﺖ داﺧﻞ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ ﻳﺘﻐﻴﺮ ﻟﻮن ‪ Terminal‬اﻟﻰ ﻟﻮن ‪Data‬‬
‫‪ Type‬اﻟﺨﺎص ﺑﺎﻟﻌﻨﺼﺮ اﻟﺬى وﺿﻊ ﻓﻴﻬﺎ‪ .‬آﻤﺎ ﻳﻮﺿﻊ ﺑﻴﻦ اﻟﻘﻮﺳﻴﻦ ﻓﻰ ‪ Terminal‬رﻣﺰ هﺬا ‪. Data Type‬‬

‫ﺗﺬآﺮ ان ‪ Terminal‬ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻋﻠﻰ ﺷﻜﻞ اﻳﻘﻮﻧﺔ او ﻳﻜﻮن ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﻘﺪﻳﻢ وﻟﻠﺘﻐﻴﻴﺮ ﺑﻴﻨﻬﻤﺎ ﻧﻀﻐﻂ ﺑﺎﻟﺰر‬
‫اﻻﻳﻤﻦ ﻟﻠﻤﺎوس وﻧﺨﺘﺎر او ﻧﻠﻐﻰ اﺧﺘﻴﺎر ‪ View as icon‬وهﺬا ﺗﻐﻴﻴﺮ ﻓﻰ اﻟﺸﻜﻞ ﻓﻘﻂ وﻟﻴﺲ ﻟﻪ اى ﺗﺄﺛﻴﺮ اﺧﺮ‪.‬‬

‫‪5‬‬
‫‪ Positioning‬ﻋﻠﻰ ﺣﺎﻓﺔ اﻟﻌﻨﺼﺮ داﺧﻞ‬ ‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ اﺑﻌﺎد اﻟﻌﻨﺼﺮ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ وذﻟﻚ ﺑﺘﺤﺮﻳﻚ اﻻداة‬

‫ﻓﻨﻀﻐﻂ وﻧﺴﺤﺐ اﻟﻰ اﻻﺑﻌﺎد اﻟﺘﻰ ﻧﺮﻳﺪهﺎ ‪.‬‬ ‫اﻟﻤﺼﻔﻮﻓﺔ ﺣﺘﻰ ﻳﻈﻬﺮ اﻟﻤﺆﺷﺮ ﻋﻠﻰ هﻴﺌﺔ ﻣﺆﺷﺮﺑﺴﻬﻤﻴﻦ او‬

‫وﻳﻜﻦ ﺗﻐﻴﻴﺮ ﻋﺪد اﻟﻌﻨﺎﺻﺮ اﻟﺘﻰ ﺗﻈﻬﺮ داﺧﻞ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ وذﻟﻚ ﺑﺘﻐﻴﻴﺮ اﺑﻌﺎد اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ وذﻟﻚ ﺑﺘﺤﺮﻳﻚ‬

‫ﻓﻨﻀﻐﻂ‬ ‫‪ Positioning‬ﻋﻠﻰ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ ﺣﺘﻰ ﻳﻜﻮن اﻟﻤﺆﺷﺮ ﻋﻠﻰ هﻴﺌﺔ ﻣﺆﺷﺮ ﺑﺴﻬﻤﻴﻦ او‬ ‫اﻻداة‬
‫وﻧﺴﺤﺐ اﻟﻰ اﻻﺑﻌﺎد اﻟﺘﻰ ﻧﺮﻳﺪهﺎ‪.‬‬

‫‪6‬‬
‫ﻳﻈﻬﺮ اﻟﻌﻨﺼﺮ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ ﻣﻌﺘﻤﺎ اذا ﻟﻢ ﺗﺤﺪد ﻟﻪ ﻗﻴﻤﺔ وﻳﺘﻢ ﺗﺤﺪﻳﺪ ﻗﻴﻤﺔ اﻟﻌﻨﺎﺻﺮ ﺑﻜﺘﺎﺑﺔ اﻟﻘﻴﻤﺔ ﻣﺒﺎﺷﺮة ﻓﻰ‬
‫اﻟﻌﻨﺼﺮ او اﺳﺘﺨﺪام اﻻﺳﻬﻢ ﻓﻰ ﺣﺎﻟﺔ اذا آﺎن اﻟﻌﻨﺼﺮ ‪ Numeric Control‬او ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﻌﻨﺼﺮ اذا آﺎن‬
‫‪ Boolean‬او ﺗﺤﺪد ﻗﻴﻢ اﻟﻤﺼﻔﻮﻓﺔ ﻣﻦ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ اﺛﻨﺎء اﻟﺘﻨﻔﻴﺬ‪.‬‬

‫‪7‬‬
‫و ﺗﻌﺘﺒﺮ اﻟﻌﻨﺎﺻﺮ اﻟﺘﻰ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ هﻰ اﻟﻌﻨﺎﺻﺮ اﻟﺘﻰ ﺗﻢ ﺗﺤﺪﻳﺪ ﻗﻴﻢ ﻟﻬﺎ )ﻻﺣﻆ ان اﻟﺼﻔﺮ ﻗﻴﻤﺔ(‪.‬‬

‫ﺗﺪل ﻗﻴﻤﺔ ‪) Index‬اﻟﺪﻟﻴﻞ( اﻟﺨﺎص ﺑﺎﻟﻤﺼﻔﻮﻓﺔ ﻋﻠﻰ رﻗﻢ اول ﻋﻨﺼﺮ ﻳﻈﻬﺮ ﻓﻰ اﻃﺎر اﻟﻌﻨﺼﺮ ‪.‬‬
‫واذا ﻗﻤﺖ ﺑﺘﻐﻴﻴﺮ ﻗﻴﻤﺔ اﻟﺪﻟﻴﻞ ﻳﻈﻬﺮ ﻟﻚ اﻟﻌﻨﺼﺮ اﻟﺬى رﻗﻤﺔ ﻳﺴﺎوى ﻗﻴﻤﺔ ‪.Index‬‬

‫‪8‬‬
‫اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Constants‬ﻓﻰ ‪: Block Diagram‬‬
‫ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ ﻳﺘﻢ اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Constants‬ﻓﻰ ‪ Block Diagram‬ﻋﻠﻰ ﺧﻄﻮﺗﻴﻦ‪:‬‬
‫‪ -1‬ﻧﺪرج اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ )‪ (Array Constant‬ﻣﻦ‬
‫‪Function Palette>>Programming >>Array‬‬

‫‪-2‬ﻧﺪرج ﺛﺎﺑﺖ )‪ (Constant‬داﺧﻞ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ‬


‫هﺬا اﻟﺜﺎﺑﺖ ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻣﻦ اﻟﻨﻮع ‪ Numeric‬او ‪ String‬او ‪.Boolean‬‬

‫‪9‬‬
‫ﺣﺬف ﺟﻤﻴﻊ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ‪:‬‬
‫ﻳﻤﻜﻦ ﺣﺬف ﺟﻤﻴﻊ ﻗﻴﻢ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ وﺟﻌﻠﻬﺎ ﻓﺎرﻏﺔ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ‬
‫‪) Index‬اﻟﺪﻟﻴﻞ( – وﻟﻴﺲ ﻋﻠﻰ اﻟﻌﻨﺼﺮ‪ -‬واﺧﺘﻴﺎر‬
‫‪Data Operation >>Empty Array‬‬

‫‪10‬‬
‫اﺿﺎﻓﺔ او ﺣﺬف ﻋﻨﺼﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ‪:‬‬
‫ﻳﻤﻜﻦ اﺿﺎﻓﺔ ﻋﻨﺼﺮ او ﺣﺬف ﻋﻨﺼﺮ ﻣﻦ ﻣﺼﻔﻮﻓﺔ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻌﻨﺼﺮ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ‬
‫و اﺧﺘﻴﺎر‬
‫‪Data Operation >>Insert Element Before‬‬
‫ﻻﺿﺎﻓﺔ ﻋﻨﺼﺮ‬
‫او‬
‫‪Data Operation >>Delete Element‬‬
‫ﻟﺤﺬف ﻋﻨﺼﺮ‬

‫‪11‬‬
12
‫اﻇﻬﺎر ‪) Scrollbar‬ﺷﺮﻳﻂ اﻧﺰﻻق( ﻟﻠﻤﺼﻔﻮﻓﺔ ‪:‬‬
‫ﻋﻠﻤﻨﺎ اﻧﻪ ﺑﺘﻐﻴﻴﺮ ﻗﻤﻴﺔ ‪ Index‬ﺗﺘﻐﻴﺮ اﻟﻌﻨﺎﺻﺮ اﻟﺘﻰ ﺗﻈﻬﺮ ﻣﻦ ﺧﻼل اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ ﻓﺘﺴﺘﻄﻴﻊ ﻣﺸﺎهﺪﺗﻬﺎ ‪ .‬وهﻨﺎك‬
‫ﻃﺮﻳﻘﺔ اﺧﺮى ﻟﺘﺸﺎهﺪ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ وهﻰ اﻇﻬﺎر ‪ Scrollbar‬ﻟﻠﻤﺼﻔﻮﻓﺔ وهﺬا ‪ Scrollbar‬ﻗﺪ ﻳﻜﻮن اﻓﻘﻴﺎ‬
‫)‪ (Horizontal‬او رأﺳﻴﺎ )‪ (Vertical‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Index‬واﺧﺘﻴﺎر‬
‫‪Visible Items>>Vertical Scrollbar‬‬
‫او‬
‫‪Visible Items>> Horizontal Scrollbar‬‬

‫‪13‬‬
‫اﺳﺘﺨﺪام ﺧﺎﺻﻴﺔ ‪: Auto-Indexing‬‬
‫ﺧﺎﺻﻴﺔ ‪ Auto-Indexing‬هﻰ ان ‪ While Loop‬او ‪ For Loop‬ﺗﻘﻮم ﺑﺘﺨﺰﻳﻦ ﻗﻴﻢ ﻋﻠﻰ اﻃﺎرهﺎ ﻓﻰ‬
‫ﻣﺼﻔﻮﻓﺔ ﻓﻜﻞ ﻣﺮة ﺗﻨﻔﺬ ﻓﻴﻬﺎ ‪ Loop‬ﻳﺘﻢ اﺿﺎﻓﺔ ﻗﻴﻤﺔ اﻟﻰ اﻟﻤﺼﻔﻮﻓﺔ وﺗﺨﺮج هﺬة اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ ﺧﺎرج ‪ Loop‬ﺑﻌﺪ‬
‫اﻧﺘﻬﺎء ﻋﻤﻞ ‪ Loop‬ﻣﺒﺎﺷﺮة‪.‬‬
‫واذا آﺎﻧﺖ هﺬة اﻟﺨﺎﺻﻴﺔ ﻏﻴﺮ ﻣﻔﻌﻠﺔ ﺗﺨﺮج اﺧﺮ ﻗﻴﻤﺔ ﻓﻘﻂ ﻣﻦ ‪ Loop‬ﺑﻌﺪ اﻧﺘﻬﺎء ﻋﻤﻠﻬﺎ‪.‬‬
‫وهﺬة اﻟﺨﺎﺻﻴﺔ ﻣﻔﻌﻠﺔ ﺗﻠﻘﺎﺋﻴﺎ ﻣﻊ ‪ For Loop‬وﻳﻤﻜﻦ ﺗﻌﻄﻴﻠﻬﺎ‪.‬‬
‫وﻟﻜﻦ هﻰ ﻣﻌﻄﻠﺔ ﺗﻠﻘﺎﺋﻴﺎ ﻣﻊ ‪ While Loop‬وﻳﻤﻜﻦ ﺗﻔﻌﻠﻴﻠﻬﺎ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬
‫اﺳﺘﺨﺪام ‪ For Loop‬ﻻﺧﺮاج ﻣﺼﻔﻮﻓﺔ ﺑﻬﺎ ‪ 5‬ﻋﻨﺎﺻﺮ آﻞ ﻋﻨﺼﺮ ﺑﻪ رﻗﻢ ﻋﺸﻮاﺋﻰ‬

‫‪14‬‬
‫ﻳﻤﻜﻦ اﻟﻐﺎء ﺗﻔﻌﻴﻞ ‪ Auto Indexing‬ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ ‪ Tunnel‬واﺧﺘﻴﺎر ‪. Disable Indexing‬‬
‫وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﺗﺨﺮج ﻓﻘﻂ اﺧﺮ ﻗﻴﻤﺔ ﻟﺪاﻟﺔ اﻟﺮﻗﻢ اﻟﻌﺸﻮاﺋﻰ وهﻰ ﻗﻴﻤﺔ وﺣﻴﺪة )‪ ( Scalar‬و ﻟﻴﺴﺖ ﻣﺼﻔﻮﻓﺔ‪.‬‬

‫‪15‬‬
‫ﻻﺣﻆ ان اﻟﺮاﺑﻂ اﺻﺒﺢ ﻣﻘﻄﻮﻋﺎ ﻻﻧﻪ ﻳﺼﻞ ﺑﻴﻦ ﻧﻮﻋﻴﻦ ﻣﺨﺘﻠﻔﻴﻦ )ﻗﻴﻤﺔ وﺣﻴﺪة وﻣﺼﻔﻮﻓﺔ( وﻟﻠﺘﻐﻠﺐ ﻋﻠﻰ هﺬا اﻟﺨﻄﺄ‬
‫وﺟﻌﻞ اﻟﺮاﺑﻂ ﻏﻴﺮ ﻣﻘﻄﻮع ﻧﺠﻌﻞ اداة اﻻﻇﻬﺎر ﻋﺒﺎرة ﻋﻦ ‪ Numeric Indicator‬ﺑﺪﻻ ﻣﻦ ﻣﺼﻔﻮﻓﺔ‪.‬‬

‫ﺗﺴﺘﺨﺪم اﻳﻀﺎ ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻓﻰ ﺣﺎﻟﺔ ادﺧﺎل ﻗﻴﻢ ﻋﻨﺎﺻﺮ ﻣﺼﻔﻮﻓﺔ اﻟﻰ ‪ For Loop‬و ‪While‬‬
‫‪.Loop‬‬
‫ﻓﻰ ﺣﺎﻟﺔ وﺻﻞ ﻣﺼﻔﻮﻓﺔ اﻟﻰ دﺧﻞ ‪ For Loop‬ﻣﺜﻼ ﻣﻊ ﺗﻔﻌﻴﻞ ‪ .Auto Indexing‬ﻓﺴﻮف ﻳﺪﺧﻞ ﻗﻴﻤﺔ اﻟﻌﻨﺼﺮ‬
‫اﻻول ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ داﺧﻞ ‪ Loop‬ﻣﻊ اول ﺗﻨﻔﻴﺬة‪ .‬ﺛﻢ ﻳﺪﺧﻞ ﻗﻴﻤﺔ اﻟﻌﻨﺼﺮ اﻟﺜﺎﻧﻰ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ داﺧﻞ‬
‫‪ Loop‬ﻣﻊ اﻟﺘﻨﻔﻴﺬة اﻟﺜﺎﻧﻴﺔ‪ .‬وهﻜﺬا‬
‫اى ان ﻓﻰ ﺣﺎﻟﺔ ‪ Auto Indexing‬ﻻ ﺗﺪﺧﻞ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ آﻠﻬﺎ ﻣﺮة واﺣﺪة واﻧﻤﺎ ﻳﺪﺧﻞ ﻋﻨﺼﺮ ﻋﻨﺼﺮ ﻣﻊ‬
‫آﻞ ﺗﻨﻔﻴﺬة‪.‬وﻳﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻊ هﺬة اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Loop‬آﺄﻧﻬﺎ ﻗﻴﻢ وﺣﻴﺪة‪.‬‬

‫‪16‬‬
‫اﻣﺎ ﻓﻰ ﺣﺎﻟﺔ ﺗﻌﻄﻴﻞ ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻓﺴﻮف ﺗﺪﺧﻞ آﻞ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ آﻜﻞ ﻣﻊ اول ﺗﻨﻔﻴﺬة ﻓﻘﻂ ﻟﻴﺘﻢ‬
‫اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ آﻤﺼﻔﻮﻓﺔ داﺧﻞ ‪.Loop‬‬

‫اﺳﺘﺨﺪام ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻟﺘﺤﺪﻳﺪ ﻋﺪد ﻣﺮات ﺗﻜﺮار ﺗﻨﻔﻴﺬ ‪: For Loop‬‬
‫اذا ﺗﻢ ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺔ اﻟﻰ داﺧﻞ ‪ For Loop‬و ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻣﻔﻌﻠﺔ ﻓﺴﻮف ﻳﻜﻮن ﻋﺪد ﻣﺮات‬
‫ﺗﻜﺮار ﺗﻨﻔﻴﺬ ‪ For Loop‬ﻳﺴﺎوى ﺳﻌﺔ هﺬة اﻟﻤﺼﻔﻮﻓﺔ )ﻋﺪد اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ(‪ .‬وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ‬
‫‪.Terminal‬‬ ‫ﻻداﻋﻰ ﻟﺘﻮﺻﻴﻞ اى ﻗﻴﻤﺔ ﻟـ‬

‫‪17‬‬
‫‪ Terminal‬واﻳﻀﺎ ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺔ اﻟﻰ دﺧﻞ ‪ For Loop‬ﻣﻊ ﺗﻔﻌﻴﻞ ﺧﺎﺻﻴﺔ‬ ‫اذا ﺗﻢ ﺗﻮﺻﻴﻞ ﻗﻴﻤﺔ اﻟﻰ اﻟـ‬
‫‪ Auto Indexing‬ﻓﺴﻮف ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﻋﺪد ﻣﺮات ﺗﻨﻔﻴﺬ ‪ For Loop‬ﺑﺎﺻﻐﺮ اﻟﻘﻴﻤﻴﺘﻴﻦ )اﻟﻘﻴﻤﺔ اﻟﻤﻮﺻﻠﺔ ﻟـ‬
‫وﺳﻌﺔ اﻟﻤﺼﻔﻮﻓﺔ(‪.‬‬
‫ﻓﺴﻮف ﻳﻜﻮن ﻋﺪد ﻣﺮات ﺗﻨﻔﻴﺬ ‪ For Loop‬ﻳﺴﺎوى‬ ‫ﻓﺎذا آﺎﻧﺖ ﺳﻌﺔ اﻟﻤﺼﻔﻮﻓﺔ اﺻﻐﺮ ﻣﻦ اﻟﻘﻴﻤﺔ اﻟﻤﻮﺻﻠﺔ ﻟـ‬
‫ﺳﻌﺔ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬
‫اﺻﻐﺮ ﻣﻦ ﺳﻌﺔ اﻟﻤﺼﻔﻮﻓﺔ ﻓﺴﻮف ﻳﻜﻮن ﻋﺪد ﻣﺮات ﺗﻨﻔﻴﺬ ‪ For Loop‬ﻳﺴﺎوى‬ ‫واذا آﺎﻧﺖ اﻟﻘﻴﻤﺔ اﻟﻤﻮﺻﻠﺔ ﻟـ‬
‫‪.‬‬ ‫اﻟﻘﻴﻤﺔ اﻟﻤﻮﺻﻠﺔ اﻟﻰ‬
‫ﻣﺜﺎل ‪:‬‬

‫‪18‬‬
‫اﻟﻤﺼﻔﻮﻓﺎت ذات ﺑﻌﺪﻳﻦ ‪:‬‬
‫وهﻰ ﺗﻤﺎﺛﻞ اﻟﺠﺪول ﺣﻴﺚ ﺗﺨﺰن اﻟﻌﻨﺎﺻﺮ ﻋﻠﻰ هﻴﺌﺔ ﺻﻔﻮف واﻋﻤﺪة‪.‬‬
‫وهﺬة اﻟﻤﺼﻔﻮﻓﺎت ﻳﺤﺪد ﻓﻴﻬﺎ اﻟﻌﻨﺼﺮ ﺑﻌﺪد ‪) Index 2‬دﻟﻴﻠﻴﻦ( ‪.‬‬
‫‪ Index‬ﻟﺘﺤﺪﻳﺪ رﻗﻢ اﻟﻌﻤﻮد و ‪ Index‬ﻟﺘﺤﺪﻳﺪ رﻗﻢ اﻟﺼﻒ‪.‬‬
‫وآﻞ ﻣﻦ ‪ Index‬اﻟﻌﻤﻮد و ‪ Index‬اﻟﺼﻒ ﻳﺒﺪأ ﺑﺎﻟﺮﻗﻢ ﺻﻔﺮ‪.‬‬

‫‪19‬‬
‫آﻴﻔﻴﺔ ﺗﻜﻮن ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ‪:‬‬
‫ﻧﻘﻮم ﺑﻌﻤﻞ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺛﻢ ﻧﻀﻐﻂ ﻋﻠﻰ ‪ Index‬ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس وﻧﺨﺘﺎر ‪Add Dimension‬‬

‫‪20‬‬
‫‪ Positioning‬ﻋﻠﻰ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ‬ ‫وﻳﻤﻜﻦ ﻋﺮض ﻋﺪد اآﺒﺮ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ﺑﺘﺤﺮﻳﻚ اﻻداة‬

‫ﻓﻨﻀﻐﻂ وﻧﺤﺮك اﻻﻃﺎر ﻓﻰ اﺣﺪ اﻻﺗﺠﺎهﺎت اﻟﺮأﺳﻴﺔ او اﻻﻓﻘﻴﺔ‬ ‫او‬ ‫ﺣﺘﻰ ﺗﺘﺤﻮل اﻟﻰ اﻟﺴﻬﻢ ذو اﺗﺠﺎهﻴﻦ‬
‫واﻋﺎدة ﻋﻤﻞ ذﻟﻚ ﻓﻰ اﻻﺗﺠﺎﻩ اﻻﺧﺮ‪.‬‬

‫وﻧﻼﺣﻆ اﻧﻪ ﻋﻨﺪ ﺗﻜﻮﻳﻦ اﻟﻤﺼﻔﻮﻓﺔ ﺗﻜﻮن ﻓﺎرﻏﺔ وﻧﺴﻄﻴﻊ آﺘﺎﺑﺔ اﻟﻘﻴﻢ اﻟﺘﻰ ﻧﺮﻳﺪهﺎ ﻓﻴﻬﺎ ﻣﺒﺎﺷﺮة‪.‬‬
‫وﻳﻤﻜﻦ ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ ان ﻧﻘﻮم ﺑﺤﺬف ﺑﻌﺪ ﻣﻦ ﻣﺼﻔﻮﻓﺔ ﻟﻬﺎ اآﺜﺮ ﻣﻦ ﺑﻌﺪ ‪.‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ‬
‫‪ Index‬اﻟﻤﺼﻔﻮﻓﺔ واﺧﺘﻴﺎر ‪.Remove Dimension‬‬

‫‪21‬‬
‫آﻴﻔﻴﺔ ﺗﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺑﺎﺳﺘﺨﺪام ‪: For Loop‬‬
‫رأﻳﻨﺎ آﻴﻒ ﻳﺘﻢ اﺳﺘﺨﺪام ‪ For Loop‬ﻟﻌﻤﻞ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ‪.‬وﺑﺎﺳﺘﺨﺪام ﻋﺪد ‪ - For Loop 2‬ﺑﺤﻴﺖ‬
‫ﺗﻜﻮن واﺣﺪة داﺧﻞ اﻻﺧﺮى‪ -‬وﺗﻔﻌﻴﻞ ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻳﻤﻜﻦ ﺗﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺑﻬﺎ ﻗﻴﻢ‪.‬‬
‫و ﺗﻜﻮن ‪ For Loop‬اﻟﺪاﺧﻠﻴﺔ اﻟﺼﻔﻮف وﺗﻘﻮم ‪ For Loop‬اﻟﺨﺎرﺟﻴﺔ ﺑﺘﺨﺰﻳﻦ هﺬة اﻟﺼﻔﻮف ﻓﻮق ﺑﻌﻀﺎ ﻟﺘﻜﻮﻳﻦ‬
‫ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ‪.‬‬

‫‪22‬‬
23
‫اﻟﺪول اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺼﻔﻮﻓﺎت ‪:‬‬
‫ﺗﻮﺟﺪ دوال آﺜﻴﺮة ﻓﻰ ‪ LabVIEW‬ﺧﺎﺻﺔ ﺑﺎﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت‪.‬‬
‫وﺗﻮﺟﺪ هﺬة اﻟﺪوال ﻓﻰ‬
‫‪Function Palette>>Programming>>Array‬‬

‫‪24‬‬
‫ﺗﺬآﺮة‪ :‬اﻟﺘﺮﻗﻴﻢ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺎت ﻳﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ ﻓﺎﻟﻌﻨﺼﺮ اﻻول ﺗﺮﻗﻴﻤﻪ ‪ (Index=0) 0‬واﻟﻌﻨﺼﺮ اﻟﺜﺎﻧﻰ ﺗﺮﻗﻴﻤﻪ‬
‫‪ (Index=1) 1‬وهﻜﺬا‪.‬‬

‫داﻟﺔ ‪:Initialize Array‬‬


‫ﺗﻘﻮم ﺑﺈﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﺑﻬﺎ ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﻌﻨﺎﺻﺮ وﻗﻴﻢ هﺬة اﻟﻌﻨﺎﺻﺮ ﻣﺘﺴﺎوﻳﺔ‪.‬‬
‫وﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ ‪:‬‬
‫• اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺳﺘﺄﺧﺬهﺎ اﻟﻌﻨﺎﺻﺮ‬
‫• ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ آﻞ ﺑﻌﺪ‬
‫وﺧﺮج هﺬة اﻟﺪاﻟﺔ ﻣﺼﻔﻮﻓﺔ ﺑﻬﺎ ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻣﺘﺴﺎوﻳﻴﻦ ﻓﻰ اﻟﻘﻴﻤﺔ وهﻰ اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺣﺪدﻧﺎهﺎ‪.‬‬

‫ﻣﻦ اﻟﺸﻜﻞ ﻓﻰ اﻻﻋﻠﻰ اﻟﺪاﻟﺔ اﺧﺮﺟﺖ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ‪.‬‬


‫وﻻﺧﺮاج ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ او ﺛﻼﺛﺔ او اآﺜﺮ ﻧﻤﺪ اﻳﻘﻮن اﻟﺪاﻟﺔ ﻻﺳﻔﻞ ﻟﻠﻌﺪد اﻟﺬى ﻧﺮﻳﺪﻩ ﻣﻦ اﻻﺑﻌﺎد‪.‬‬

‫‪25‬‬
‫اﻣﺜﻠﺔ‬

‫‪26‬‬
‫داﻟﺔ ‪: Array Size‬‬

‫ﺗﺨﺮج هﺬة اﻟﺪاﻟﺔ ﺳﻌﺔ اﻟﻤﺼﻔﻮﻓﺔ )ﻋﺪد اﻟﻌﻨﺎﺻﺮ( ‪.‬‬


‫ﻓﺎذا آﺎﻧﺖ اﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺗﺨﺮج اﻟﺪاﻟﺔ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬
‫واذا آﺎﻧﺖ اﻟﻤﺼﻔﻮﻓﺔ ﻟﻬﺎ اآﺜﺮ ﻣﻦ ﺑﻌﺪ ﺗﺨﺮج اﻟﺪاﻟﺔ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ‪ .‬اﻟﻌﻨﺼﺮ اﻻول ﻓﻴﻬﺎ ﻗﻴﻤﺘﻪ ﻋﺪد‬
‫ﻋﻨﺎﺻﺮ اﻟﺒﻌﺪ اﻻول واﻟﻌﻨﺼﺮ اﻟﺜﺎﻧﻰ ﻓﻴﻬﺎ ﻗﻴﻤﺘﻪ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﺒﻌﺪ اﻟﺜﺎﻧﻰ وهﻜﺬا‪.‬‬

‫اﻣﺜﻠﺔ‬

‫‪27‬‬
‫داﻟﺔ ‪: Build Array‬‬
‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﺿﺎﻓﺔ ﻋﻨﺎﺻﺮ ﻟﻠﻤﺼﻔﻮﻓﺔ او ﺑﺠﻤﻊ ﺑﻴﻦ ﻣﺼﻔﻮﻓﺎت او ﻋﻨﺎﺻﺮ ﻟﺘﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ اآﺒﺮ‪.‬‬

‫وهﺬة اﻟﺪاﻟﺔ ﻟﻬﺎ ﻣﺨﺮج واﺣﺪ‪.‬‬


‫وﻟﻬﺎ ﻣﺪﺧﻞ واﺣﺪ ﻋﻨﺪ ادراﺟﻬﺎ وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد اﻟﻤﺪاﺧﻞ ﺑﻤﺪ اﻳﻘﻮن اﻟﺪاﻟﺔ اﻟﻰ اﺳﻔﻞ‪.‬‬

‫او ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ واﺧﺘﻴﺎر ‪Add Input‬‬

‫وﻳﻤﻜﻦ ان ﻳﻮﺻﻞ اﻟﻤﺪﺧﻞ اﻟﻰ ﻋﻨﺼﺮ او ﻣﺼﻔﻮﻓﺔ ذات اى ﺑﻌﺪ وﻳﻌﺘﻤﺪ ﺧﺮج اﻟﺪاﻟﺔ ﻋﻠﻰ ﻧﻮﻋﻴﺔ اﻟﻤﺪاﺧﻞ وﻋﻠﻰ‬
‫ﺧﺎﺻﻴﺔ ‪ Concatenate‬وﻳﻤﻜﻦ ﺗﻘﺴﻴﻢ ﺣﺎﻻت ﺗﻨﻔﻴﺬ هﺬة اﻟﺪاﻟﺔ اﻟﻰ ﺛﻼث ﺣﺎﻻت ‪:‬‬
‫اوﻻ ‪ :‬ﺗﻮﺻﻴﻞ ﻋﻨﺎﺻﺮذات ﻗﻴﻢ وﺣﻴﺪة اﻟﻰ ﻣﺪاﺧﻞ اﻟﺪاﻟﺔ‪.‬‬
‫ﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﺗﺨﺮج اﻟﺪاﻟﺔ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﻣﻜﻮﻧﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻟﺪاﺧﻠﺔ وهﺬة اﻟﻌﻨﺎﺻﺮ ﻟﻬﺎ ﻧﻔﺲ اﻟﺘﺮﺗﻴﺐ‬
‫ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬

‫‪28‬‬
‫ﺛﺎﻧﻴﺎ ‪ :‬ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺎت ذات اﺑﻌﺎد ﻣﺨﺘﻠﻔﺔ و ﻋﻨﺎﺻﺮ اﻟﻰ اﻟﻤﺪاﺧﻞ ‪.‬‬
‫ﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﺗﻘﻮم اﻟﺪاﻟﺔ ﺑﺘﺠﻤﻴﻊ اﻟﻤﺪﺧﻼت ﺑﺎﻟﺘﺮﺗﻴﺐ ﻟﺘﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ ﻳﺴﺎوى اآﺒﺮ ﺑﻌﺪ ﻟﻤﺼﻔﻮﻓﺎت‬
‫اﻟﻤﺪﺧﻞ‪.‬‬

‫‪29‬‬
‫ﻻﺣﻆ ان ﺷﻜﻞ ﻣﺪﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ ﻣﺨﺘﻠﻒ ﻋﻦ ﺷﻜﻞ ﻣﺪﺧﻞ اﻟﻌﻨﺼﺮ‬
‫وﺷﻜﻞ ﻣﺪﺧﻞ اﻟﻌﻨﺼﺮ ﻋﺒﺎرة ﻋﻦ ﻣﺮﺑﻊ واﺣﺪ وﺷﻜﻞ ﻣﺪﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ ﻋﺒﺎرة ﻋﻦ ﻣﺮﺑﻌﻴﻦ ﻣﺘﺠﺎورﻳﻦ‪.‬‬
‫آﻤﺎ ﻻﺣﻆ ان اﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺗﻌﺘﺒﺮ ﻋﻨﺼﺮ ﻓﻰ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ‪.‬‬

‫ﺛﺎﻟﺜﺎ ‪:‬ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺎت ذات اﺑﻌﺎد ﻣﺘﺴﺎوﻳﺔ‬


‫وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﻳﺘﻮﻗﻒ اﻟﺨﺮج ﻋﻠﻰ ﺧﺎﺻﻴﺔ ‪ Concatenate‬ﻣﻔﻌﻠﺔ ام ﻻ‪.‬‬
‫وﻟﺘﻔﻌﻴﻞ ﺧﺎﺻﻴﺔ ‪ Concatenate‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ وﻧﺨﺘﺎر ‪Concatenate‬‬
‫ﻟﺘﻔﻌﻴﻠﻬﺎ او اﻟﻐﺎء ﺗﻔﻌﻴﻠﻬﺎ‪.‬‬

‫اذا آﺎﻧﺖ ﺧﺎﺻﻴﺔ ‪ Concatenate‬ﻣﻔﻌﻠﺔ ﻓﺎن اﻟﺨﺮج ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ذات ﻧﻔﺲ اﺑﻌﺎد اﻟﻤﺼﻔﻮﻓﺎت اﻟﺪاﺧﻠﺔ‬
‫وﻋﻨﺎﺻﺮهﺎ هﻰ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺎت اﻟﺪاﺧﻠﺔ ﺑﺎﻟﺘﺮﺗﻴﺐ‪.‬‬

‫‪30‬‬
‫داﻟﺔ ‪: Array Subset‬‬
‫ﺗﻘﻮم ﺑﺎﺧﺮاج ﺟﺰء ﻣﺤﺪد ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﺔ ﻟﻬﺎ‪.‬‬
‫وﻣﺪاﺧﻞ هﺬة اﻟﻤﺼﻔﻮﻓﺔ آﺎﻟﺘﺎﻟﻰ ‪:‬‬
‫• ﻣﺪﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﻰ ﺳﻨﺄﺧﺬ ﻣﻨﻬﺎ اﻟﺠﺰء‪.‬‬
‫• اﻟﻤﺪﺧﻞ ‪ Index‬وهﻮ رﻗﻢ اول ﻋﻨﺼﺮ ﻓﻰ اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬
‫• اﻟﻤﺪﺧﻞ ‪ Length‬وهﻮ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫ﻣﺜﺎل‬

‫‪31‬‬
‫ﻳﻤﻜﻦ زﻳﺎدة ﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ ﺑﻤﺪ اﻳﻘﻮﻧﺘﻬﺎ ﻻﺳﻔﻞ وذﻟﻚ ﻻﺧﺮاج ﺟﺰء ﻣﻦ ﻣﺼﻔﻮﻓﺔ ﻟﻬﺎ اآﺜﺮ ﻣﻦ ﺑﻌﺪ‬

‫داﻟﺔ ‪: Index Array‬‬


‫ﺗﺨﺮج هﺬة اﻟﺪاﻟﺔ ﻗﻴﻤﺔ ﻋﻨﺼﺮ ﻣﻌﻴﻦ ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬

‫اﻟﻤﺪﺧﻞ ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﻟﻬﺎ اآﺜﺮ ﻣﻦ ﺑﻌﺪ وذﻟﻚ ﺑﻤﺪ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻟﺰﻳﺎدة ﻋﺪد اﺑﻌﺎد ﻣﺼﻔﻮﻓﺔ اﻟﺪﺧﻞ‪.‬‬

‫وهﺬا ﻣﺜﺎل ﻟﻜﻴﻔﻴﺔ ﻣﻌﺮﻓﺔ ﻗﻴﻤﺔ ﻋﻨﺼﺮ ﻓﻰ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ‪:‬‬

‫‪32‬‬
‫وﻳﻤﻜﻦ ﺑﺎﺳﺘﺨﺪام هﺬة اﻟﺪاﻟﺔ اﻟﺤﺼﻮل ﻋﻠﻰ ﺻﻒ او ﻋﻤﻮد ﻣﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ‪.‬‬
‫ﻓﺎذا اردﻧﺎ اﻟﺤﺼﻮل ﻋﻠﻰ ﺻﻒ ﻣﻌﻴﻦ ﻧﺤﺪد رﻗﻢ اﻟﺼﻒ وﻧﺘﺮك رﻗﻢ اﻟﻌﻤﻮد ﺧﺎﻟﻴﺎ‪.‬‬

‫واذا اردﻧﺎ اﻟﺤﺼﻮل ﻋﻠﻰ ﻋﻤﻮد ﻧﺤﺪد رﻗﻢ اﻟﻌﻤﻮد وﻧﺘﺮك رﻗﻢ اﻟﺼﻒ ﺧﺎﻟﻴﺎ ‪.‬‬

‫‪33‬‬
‫داﻟﺔ ‪: Delete from Array‬‬
‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺤﺬف ﺟﺰء ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﺔ اﻟﻴﻬﺎ‪.‬‬

‫وﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ ‪:‬‬


‫• اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﻰ ﻧﺮﻳﺪ اﻟﺤﺬف ﻣﻨﻬﺎ ‪.‬‬
‫• ﻃﻮل اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪ ﺣﺬﻓﻪ ‪.‬‬
‫• ﺑﺪاﻳﺔ اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪ ﺣﺬﻓﻪ ‪.‬‬
‫وﺗﺨﺮج اﻟﺪاﻟﺔ ‪:‬‬
‫• اﻟﻤﺼﻔﻮﻓﺔ ﺑﻌﺪ ﺣﺬف اﻟﻌﻨﺎﺻﺮ ﻣﻨﻬﺎ‪.‬‬
‫• اﻟﺠﺰء اﻟﺬى ﺗﻢ ﺧﺬﻓﻪ ‪.‬‬
‫ﻣﺜﺎل‬

‫‪34‬‬
‫‪Polymorphism‬‬
‫ﻧﻌﻠﻢ ان اﻟﺪوال اﻟﺤﺴﺎﺑﻴﺔ اﻟﺠﻤﻊ واﻟﻄﺮح و اﻟﻀﺮب و اﻟﻘﺴﻤﺔ ﺗﻘﻮم ﺑﻌﻤﻠﻴﺎت ﺣﺴﺎﺑﻴﺔ ﺑﻴﻦ ﻗﻴﻤﺘﻴﻦ ﻋﺪدﻳﺘﻴﻦ‬
‫وهﺬة اﻟﻘﻴﻢ هﻰ ﻗﻴﻢ وﺣﻴﺪة‪.‬‬
‫وﻟﻜﻦ هﺬة اﻟﺪول ﻳﻤﻜﻦ ان ﺗﻘﻮم ﺑﻌﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ ﺑﻴﻦ ﻗﻴﻤﺔ وﺣﻴﺪة و ﻣﺼﻔﻮﻓﺔ او ﺗﻘﻮم ﺑﻌﻤﻠﻴﺎت ﺣﺴﺎﺑﻴﺔ ﺑﻴﻦ‬
‫ﻣﺼﻔﻮﻓﺘﻴﻦ‪.‬‬
‫واﺧﺘﻼف ﻣﺪاﺧﻞ هﺬة اﻟﺪوال ﻓﻰ اﻟﺴﻌﺔ و اﻟﺘﻤﺜﻴﻞ اﻟﻌﺪدى هﻮ ﻣﺎ ﻳﻌﺮف ﺑـ‪. Polymorphism‬‬
‫اﻣﺜﻠﺔ ‪:‬داﻟﺔ اﻟﺠﻤﻊ ﻳﻤﻜﻦ ان ﺗﻘﻮم ﺑﺎﻟﺠﻤﻊ ﺑﻴﻦ رﻗﻤﻴﻦ او ﺑﻴﻦ رﻗﻢ وﻣﺼﻔﻮﻓﺔ او ﻣﺼﻔﻮﻓﺘﻴﻦ‪.‬‬

‫ﻣﺜﺎل‬

‫‪35‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬
‫اذا ﻗﻤﺖ ﺑﻌﻤﻞ ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ ﺑﻴﻦ ﻣﺼﻔﻮﻓﺘﻴﻦ ﻣﺨﺘﻠﻔﺘﻴﻦ ﻓﻰ اﻟﺴﻌﺔ )ﻋﺪد اﻟﻌﻨﺎﺻﺮ ( ﻓﺎن اﻟﻨﺎﺗﺞ ﻣﺼﻔﻮﻓﺔ‬
‫ﺳﻌﺘﻬﺎ هﻰ ﻧﻔﺲ ﺳﻌﺔ اﺻﻐﺮهﻤﺎ‪.‬‬
‫ﻣﺜﺎل‬

‫‪36‬‬
‫‪Compound Arithmetic Function‬‬
‫اﻟﺪوال اﻟﺤﺴﺎﺑﻴﺔ اﻟﻤﺮآﺒﺔ‬

‫ﺗﺘﻴﺢ هﺬة اﻟﺪاﻟﺔ ﻋﻤﻞ ﻋﻤﻠﻴﺎت ﺣﺴﺎﺑﻴﺔ او ﻣﻨﻄﻘﻴﺔ ﺑﻴﻦ اآﺜﺮ ﻣﻦ ﻗﻴﻤﺘﻴﻦ‪.‬‬
‫ﻣﺜﺎل‬

‫وﻳﻤﻜﻦ ان ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ )‪ (Compound Arithmetic Function‬ﺑﻌﻤﻠﻴﺔ ﺟﻤﻊ) ‪ (Add‬او‬


‫ﺿﺮب )‪ ( Multiply‬او ‪ And‬او ‪ Or‬او ‪.Xor‬‬
‫وﻳﺘﻢ ادراﺟﻬﺎ ﻣﻦ‬
‫‪Function Palette>>Numeric‬‬
‫او‬
‫‪Function Palette>>Boolean‬‬

‫‪37‬‬
38
‫‪.Positioning‬‬ ‫وﻋﻨﺪ ادراج هﺬة اﻟﺪاﻟﺔ ﻳﻜﻮن ﻟﻬﺎ ﻣﺪﺧﻼن وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد اﻟﻤﺪاﺧﻞ ﺑﻤﺪ اﻳﻘﻮﻧﺘﻬﺎ ﻻﺳﻔﻞ ﺑﺎﻻداة‬

‫ﻋﻨﺪ ادراج اﻟﺪاﻟﺔ ﻓﺎﻧﻬﺎ ﺗﻜﻮن ﻣﻌﺪة ﻟﺘﺆدى ﻋﻤﻠﻴﺔ اﻟﺠﻤﻊ )‪ (Add‬او ‪ AND‬وﻟﻜﻦ ﻳﻤﻜﻦ اﺧﺘﻴﺎر وﻇﻴﻔﺔ‬
‫اﺧﺮى )‪ Multiply‬او ‪ And‬او ‪ Or‬او ‪ .(Xor‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ اﻟﺪاﻟﺔ و اﺧﺘﻴﺎر‬
‫‪ Change Mode‬ﺛﻢ اﺧﺘﻴﺎر اﻟﻮﻇﻴﻔﺔ‪.‬‬

‫‪ Operating‬ﻋﻠﻰ اﻟﺪاﻟﺔ واﺧﺘﻴﺎر ‪ Change Mode‬ﺛﻢ‬ ‫وﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ اﻟﻮﻇﻴﻔﺔ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻻداة‬
‫اﺧﺘﻴﺎر اﻟﻮﻇﻴﻔﺔ‪.‬‬

‫‪39‬‬
‫ﻳﻤﻜﻦ ﻋﻜﺲ اى ﻣﻦ اﻟﻤﺪاﺧﻞ او اﻟﻤﺨﺮج ‪.‬‬
‫وﻋﻨﺪ ﻋﻜﺲ ﻣﺪﺧﻞ او ﻣﺨﺮج ﺗﻮﺿﻊ ﻋﻠﻴﻪ داﺋﺮة ﺻﻐﻴﺮة‪.‬‬
‫وﻟﻌﻜﺲ ﻣﺪﺧﻞ او اﻟﻤﺨﺮج ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻤﺪﺧﻞ او اﻟﻤﺨﺮج وﻧﺨﺘﺎر ‪. Invert‬‬

‫واﻟﻌﻜﺲ ﻓﻰ ﺣﺎﻟﺔ اﻟﺠﻤﻊ ﻳﻌﻨﻰ ﺿﺮب ﻣﺪﺧﻞ او اﻟﻤﺨﺮج ﻓﻰ اﺷﺎرة ﺳﺎﻟﺐ ﻓﺎذا آﺎن ﻗﻴﻤﺘﻪ ‪ x‬ﺳﺘﻌﻜﺲ اﻟﻰ ‪.–x‬‬
‫وﻓﻰ ﺣﺎﻟﺔ اﻟﻀﺮب اذا آﺎن ﻣﺪﺧﻞ او اﻟﻤﺨﺮج ﺑﺎﻟﻘﻴﻤﺔ ‪ x‬وﺗﻢ ﻋﻜﺴﻪ ﺳﺘﻜﻮن ﻗﻴﻤﺘﻪ ‪.1/x‬‬
‫اﻣﺎ ﻓﻰ ﺣﺎﻟﺔ اﻟﻌﻤﻠﻴﺎت اﻟﻤﻨﻄﻘﻴﺔ ‪ And‬او ‪ Or‬او ‪ Xor‬ﻓﺘﻌﻜﺲ ﺣﺎﻟﺔ اﻟﻤﺪﺧﻞ او اﻟﻤﺨﺮج ﺑـ ‪ Not‬ﻓﻤﺜﻼ ‪x‬‬
‫ﻋﻜﺴﻬﺎ ‪.Not x‬‬
‫اﻣﺜﻠﺔ‬

‫‪40‬‬
41
42
‫‪Clusters‬‬

‫‪ Cluster‬ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻬﻮ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ وﻟﻜﻦ ﻋﻜﺲ اﻟﻤﺼﻔﻮﻓﺎت هﺬة اﻟﻌﻨﺎﺻﺮ ﻳﻤﻜﻦ ان‬
‫ﺗﻜﻮن ﻣﺨﺘﻠﻔﺔ ﻓﻰ ﻧﻮع اﻟﺒﻴﺎﻧﺎت )‪ (Data Type‬ﻓﻴﻤﻜﻦ ان ﺗﺤﺘﻮى ﻋﻠﻰ ‪Numeric Control‬‬
‫و‪ Boolean Control‬و اﻧﻮاع اﺧﺮى‪.‬‬
‫وآﻤﺜﺎل ﻣﺠﻤﻮﻋﺔ اﻟﺒﻴﺎﻧﺎت اﻟﺸﺨﺼﻴﺔ اﻟﺘﻰ ﺗﺤﺘﻮى ﻋﻠﻰ اﻻﺳﻢ وﺗﺎرﻳﺦ اﻟﻤﻴﻼد وﻋﻨﻮان اﻟﺴﻜﻦ و رﻗﻢ‬
‫اﻟﺘﻠﻴﻔﻮن هﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺒﻴﺎﻧﺎت اﻟﻤﺨﺘﻠﻔﺔ اﻻﻧﻮاع ﺗﻨﺪرج ﺗﺤﺖ اﺳﻢ واﺣﺪ وهﻰ اﻟﺒﻴﺎﻧﺎت اﻟﺸﺨﺼﻴﺔ‪.‬‬
‫وﻳﻤﻜﻦ ﺗﺸﺒﻴﺔ ‪ Cluster‬ﺑﻜﺎﺑﻞ اﻟﺘﻠﻴﻔﻮن ﻓﻬﻮ ﻋﺒﺎرة ﻋﻦ آﺎﺑﻞ واﺣﺪ ﻳﻮﺟﺪ ﺑﻪ ﻋﺪة اﺳﻼك آﻞ ﺳﻠﻚ ﻳﻌﺒﺮ‬
‫ﻋﻦ ﻋﻨﺼﺮ ﻣﻌﻴﻦ‪.‬‬
‫و ‪ Cluster‬ﻳﻌﺒﺮ ﻋﻨﻪ ﻓﻰ ‪ Block Diagram‬ﺑـ ﺧﻂ واﺣﺪ ﺣﺘﻰ اذا آﺎن ﻳﺤﺘﻮى ﻋﻠﻰ ﻋﺪة ﻗﻴﻢ ﻻﻧﻮاع‬
‫ﻣﺨﺘﻠﻔﺔ ﻣﻦ اﻟﺒﻴﺎﻧﺎت‪.‬‬
‫وﺑﺬﻟﻚ ﺗﺴﻄﻴﻊ ﻧﻘﻞ ﻋﺪة ﻗﻴﻢ ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻓﻰ ﺧﻂ واﺣﺪ ﺑﺪﻻ ﻣﻦ ﻋﺪة ﺧﻄﻮط‪.‬وﺑﺎﻟﺘﺎﻟﻰ ﻟﻮ ان هﺬة اﻟﺒﻴﺎﻧﺎت‬
‫ﺳﺘﺪﺧﻞ او ﺗﺨﺮج ﻣﻦ داﻟﺔ او ‪ SubVI‬ﺳﺘﺤﺘﺎج اﻟﻰ ﻣﺨﺮج او ﻣﺪﺧﻞ واﺣﺪ‪.‬‬
‫وﻓﻰ ‪ Block Diagram‬ﻳﻤﻜﻦ ﺗﺠﻤﻴﻊ ﻋﺪة ﺧﻄﻮط ﻟﺒﻴﺎﻧﺎت ﻣﺨﺘﻠﻔﻪ ﻓﻰ ‪ Cluster‬وﺗﺴﻤﻰ هﺬة اﻟﻌﻤﻠﻴﺔ‬
‫ﺑـ ‪.Bundle‬‬
‫وﻳﻤﻜﻦ ان اﻳﻀﺎ ﻓﻚ ‪ Cluster‬اﻟﻰ ﻋﻨﺎﺻﺮﻩ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ وﺗﺴﻤﻰ هﺬة اﻟﻌﻤﻠﻴﺔ ﺑـ ‪.UnBundle‬‬

‫‪43‬‬
‫و ﻟﻠـ ‪ Cluster‬ﺳﻌﺔ ﺛﺎﺑﺘﺔ وﻣﺤﺪدة ﺑﺎﻟﻌﻨﺎﺻﺮ اﻟﺘﻰ ﻓﻴﻪ‪.‬‬
‫وﻻ ﻳﻤﻜﻦ رﺑﻂ ﻋﺪد ‪ Clusters 2‬اﻻ اذا آﺎﻧﺎ ﻟﻬﻢ ﻧﻔﺲ اﻟﻌﻨﺎﺻﺮ و ﻧﻔﺲ ﺗﺮﺗﻴﺐ ﺗﻠﻚ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪. Cluster‬‬

‫آﻴﻔﻴﺔ اﻧﺸﺎء ‪ Cluster Controls‬و‪: Cluster Indicators‬‬


‫ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت ﻳﺘﻢ اﻧﺸﺎء ‪ Cluster‬ﻋﻠﻰ ﺧﻄﻮﺗﻴﻦ‪:‬‬
‫‪ -1‬ﻳﺘﻢ ادراج اﻃﺎر اﻟـ ‪ Cluster‬وهﻮ اﻟﺬى ﺳﻴﺤﺘﻮى ﻋﻨﺎﺻﺮ ‪ Cluster‬ﻣﻦ‬
‫‪Controls Palette>>Modern>>Array, Matrix, & Cluster‬‬

‫‪ -2‬ﻳﺘﻢ ادراج ‪ Controls‬او ‪ Indicators‬داﺧﻞ اﻃﺎر ‪. Cluster‬‬

‫‪44‬‬
‫واﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬ﻳﺠﺐ ان ﺗﻜﻮن آﻠﻬﺎ ‪ Controls‬او آﻠﻬﺎ ‪ Indicators‬وﻟﻴﺲ ﻣﺨﺘﻠﻂ‪.‬‬
‫ﺑﻤﺠﺮد ادراج ‪ Cluster‬داﺧﻞ ‪ Front Panel‬ﻳﻮﺿﻊ ﻟﻪ ﺗﻠﻘﺎﺋﻴﺎ ‪ Terminal‬ﻓﻰ ‪Block Diagram‬‬

‫‪. Positioning‬‬ ‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ اﺑﻌﺎد ‪ Cluster‬ﺑﻮاﺳﻄﺔ اﻻداة‬

‫وﻟﺠﻌﻞ ﻣﺴﺎﺣﺔ اﻃﺎر ‪ Cluster‬ﻋﻠﻰ ﻗﺪر اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ‬
‫اﻃﺎر ‪ Cluster‬وﻧﺨﺘﺎر‬

‫‪45‬‬
Autosize>>Size to Fit

: Block Diagram ‫ ﺛﺎﺑﺖ داﺧﻞ‬Cluster ‫اﻧﺸﺎء‬


: ‫ آﺎﻟﺘﺎﻟﻰ‬Block Diagram ‫ ﺛﺎﺑﺖ داﺧﻞ‬Cluster ‫ﻳﻤﻜﻦ اﻧﺸﺎء‬
‫ ﻣﻦ‬Cluster Constant ‫ ادراج اﻃﺎر‬: ‫اوﻻ‬
Function Palette>>Arrays and Clusters >>Cluster Constant

46
‫ﺛﺎﻧﻴﺎ ‪ :‬ادراج ﺛﻮاﺑﺖ داﺧﻞ اﻃﺎر ‪ Cluster‬ﻣﺜﻞ )‪ Numeric Constant‬او ‪ Boolean Constant‬او‬
‫‪.(String Constant‬‬

‫ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪: Cluster‬‬


‫ﻟﻠﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬ﺗﺮﺗﻴﺐ وهﺬا اﻟﺘﺮﺗﻴﺐ ﻟﻴﺲ ﻣﺮﺗﺒﻄﺎ ﺑﻤﻜﺎن اﻟﻌﻨﺼﺮ داﺧﻞ اﻃﺎر ‪.Cluster‬‬
‫وﺗﺮﺗﺐ اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬وﻓﻖ ﺗﺮﺗﻴﺐ ادراﺟﻬﺎ داﺧﻞ اﻻﻃﺎر‪.‬‬
‫ﻓﺎول ﻋﻨﺼﺮ ﺗﻢ ادراﺟﺔ ﺗﺮﺗﻴﺒﺔ رﻗﻢ ‪ 0‬وﺛﺎﻧﻰ ﻋﻨﺼﺮ ﺗﻢ ادراﺟﻪ ﺗﺮﺗﻴﺒﻪ رﻗﻢ ‪ 1‬وهﻜﺬا‪.‬‬
‫وﻟﻠﺘﺮﺗﻴﺐ اهﻤﻴﺔ ﻓﻠﻜﻰ ﺗﺮﺑﻂ ﺑﻴﻦ ‪ Clusters 2‬ﻳﺠﺐ ان ﻳﻜﻮﻧﺎ ﻟﻬﻢ ﻧﻔﺲ اﻟﻌﻨﺎﺻﺮ وﺑﻨﻔﺲ اﻟﺘﺮﺗﻴﺐ ‪.‬‬
‫وﻟﻤﻌﺮﻓﺔ او ﺗﻐﻴﻴﺮ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻃﺎر ‪Cluster‬‬
‫وﻧﺨﺘﺎر ‪.Reorder Controls in Cluster‬‬

‫ﻳﻈﻬﺮ ارﻗﺎم ﻓﻰ ﻣﺮﺑﻌﺎت ﻣﻈﻠﻠﻪ ﺑﺎﻟﻠﻮن اﻻﺑﻴﺾ و واﺧﺮى ﻣﻈﻠﻠﺔ ﺑﺎﻟﻠﻮن اﻻﺳﻮد ‪.‬‬
‫• اﻻرﻗﺎم اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺮﺑﻌﺎت اﻟﻤﻈﻠﻠﺔ ﺑﺎﻟﻠﻮن اﻻﺑﻴﺾ هﻰ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ اﻟﺤﺎﻟﻰ‪.‬‬
‫‪47‬‬
‫• اﻻرﻗﺎم اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺮﺑﻌﺎت اﻟﻤﻈﻠﻠﺔ ﺑﺎﻟﻠﻮن اﻻﺳﻮد هﻰ اﻟﺘﺮﺗﻴﺐ اﻟﺠﺪﻳﺪ ﻟﻠﻌﻨﺎﺻﺮ‪.‬‬
‫وﻳﻈﻬﺮ ﻓﻰ ‪ Toolbar‬ﻣﻔﺎﺗﻴﺢ ‪:‬‬
‫• ﻣﻔﺘﺎخ ‪ Ok‬ﻟﻠﺨﺮوج ﻣﻦ ﻋﻤﻠﻴﺔ اﻟﺘﺮﺗﻴﺐ ﺑﺎﻟﺘﺮﺗﻴﺐ اﻟﺠﺪﻳﺪ‪.‬‬
‫• ﻣﻔﺘﺎح ‪ Revert‬ﻟﻠﻌﻮدة ﻟﻠﺘﺮﺗﻴﺐ اﻟﻘﺪﻳﻢ واﻟﻐﺎء اﻟﺘﻐﻴﺮات ﻓﻰ اﻟﺘﺮﺗﻴﺐ‪.‬‬
‫• ﻣﺮﺑﻊ ﻻدﺧﺎل ﺗﺮﺗﻴﺐ اﻟﻌﻨﺼﺮ ‪.‬‬

‫‪48‬‬
‫اﺳﺘﺨﺪام ‪ Cluster‬ﻓﻰ ﺗﻤﺮﻳﺮ اﻟﺒﻴﺎﻧﺎت ﻣﻦ و اﻟﻰ ‪: SubVI‬‬
‫ﻧﻌﻠﻢ ﻣﻦ اﻟﺪرس اﻟﺮاﺑﻊ ان اﻗﺼﻰ ﻋﺪد ﻟﻠـ ‪ Terminals‬ﻷى ‪ Connector Pane‬ﺧﺎﺻﺔ ﺑـ ‪ VI‬هﻮ ‪.28‬‬
‫وﻟﻜﻦ اذا آﺎن ﻋﺪد ‪ Terminals‬آﺒﻴﺮا ﻓﻘﺪ ﻳﺆدى اﻟﻰ وﺟﻮد اﺧﻄﺎء ﻓﻰ اﻟﺘﻮﺻﻴﻞ واﻳﻀﺎ اﻟﻰ ﺑﻌﺾ ﻣﻦ اﻟﺘﻌﻘﻴﺪ‪.‬‬
‫وﺗﺴﺘﺨﺪم ‪ Cluster‬ﻓﻰ ﺗﻘﻠﻴﻞ ﻋﺪد اﻟﻮﺻﻼت اﻟﺘﻰ ﺗﺪﺧﻞ او ﺗﺨﺮج ﻣﻦ ‪ SubVI‬ﻓﺒﻮاﺳﻄﺔ ‪Cluster‬‬
‫ﺗﺴﺘﻄﻴﻊ ﺗﺠﻤﻴﻊ ﻋﺪد ﻣﻦ ‪ Controls‬او ‪ Indicators‬وادﺧﺎل او اﺧﺮاج ﻋﺪة ﻗﻴﻢ ﻣﻦ واﻟﻰ ‪SubVI‬‬
‫ﺑﻮاﺳﻄﺔ ‪ Terminal‬واﺣﺪ ﻓﻘﻂ‪.‬‬

‫اهﻢ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑـ ‪: Clusters‬‬


‫وهﺬة اﻟﺪوال ﻣﻮﺟﻮدة ﻓﻰ‬
‫‪Function Palette>>Programming>>Cluster & Variant‬‬

‫‪49‬‬
‫داﻟﺔ ‪: Bundle‬‬
‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺘﺠﻤﻴﻊ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻨﻔﺮدة ﻓﻰ ‪ Cluster‬ﺟﺪﻳﺪ او ﺗﻐﻴﺮ ﻗﻴﻤﺔ اﺣﺪ اﻟﻌﻨﺎﺻﺮ‬
‫اﻟﻤﻮﺟﻮدة ﻓﻰ ‪ Cluster‬ﻣﻮﺟﻮد‪.‬‬

‫‪. Positioning‬‬ ‫وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد ﻣﺪاﺧﻞ اﻟﺪاﻟﺔ ﺑﻤﺪهﺎ ﻻﺳﻔﻞ ﺑﺎﺳﺘﺨﺪام اﻻداة‬

‫ﻣﺪﺧﻞ هﺬة اﻟﺪاﻟﺔ ﻋﺒﺎرة ﻋﻦ ﻣﺪﺧﻞ ﻟـ ‪ Cluster‬وﻣﺠﻤﻮﻋﺔ ﻣﺪاﺧﻞ ﻟﻌﻨﺎﺻﺮ‪.‬‬


‫واﻟﻤﺨﺮج هﻮ ‪ Cluster‬ﺗﻢ اﻧﺸﺄﻩ او ﺗﻌﺪﻳﻞ ﻗﻴﻢ ﻓﻴﻪ‪.‬‬
‫وﻻﻧﺸﺎء ‪ Cluster‬ﺟﺪﻳﺪ ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ‪ .‬ﻧﺮﺑﻂ هﺬة اﻟﻌﻨﺎﺻﺮ اﻟﻰ ﻣﺪاﺧﻞ اﻟﺪاﻟﺔ وﻓﻰ هﺬة‬
‫اﻟﺤﺎﻟﺔ ﻻ ﻳﺴﺘﺨﺪم اﻟﻤﺪﺧﻞ اﻟﺨﺎص ﺑـ ‪ . Cluster‬وﺳﻮف ﺗﺨﺮج اﻟﺪاﻟﺔ ‪ Cluster‬ﻳﺤﺘﻮى ﻋﻠﻰ اﻟﻌﻨﺎﺻﺮ‬
‫اﻟﺪاﺧﻠﺔ وﺗﺮﺗﻴﺐ هﺬة اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪ Cluster‬هﻰ ﻧﻔﺲ ﺗﺮﺗﻴﺐ رﺑﻄﻬﺎ ﺑﺎﻟﺪاﻟﺔ‪.‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬
‫ﻋﻨﺪ رﺑﻂ اﻟﻌﻨﺼﺮ ﺑﻤﺪﺧﻞ اﻟﺪاﻟﺔ ﻳﻈﻬﺮ ﻋﻨﺪ ﻣﺪﺧﻞ اﻟﺪاﻟﺔ رﻣﺰ ﻳﺪل ﻋﻠﻰ ﻧﻮع اﻟﺒﻴﺎﻧﺎت ﻟﻬﺬا اﻟﻌﻨﺼﺮ‪.‬‬

‫‪50‬‬
‫وﻟﺘﻐﻴﻴﺮ ﻗﻴﻤﺔ ﻋﻨﺼﺮ ﻓﻰ ‪ Cluster‬ﻧﻘﻮم ﺑﺘﻮﺻﻴﻞ ‪ Cluster‬ﺑـﻤﺪﺧﻞ ‪ Cluster‬ﻋﻨﺪﺋﺬ ﻳﺼﺒﺢ ﺗﻠﻘﺎﺋﻴﺎ‬
‫ﻋﺪد ﻣﺪاﺧﻞ اﻟﻌﻨﺎﺻﺮ ﻟﻠﺪاﻟﺔ ﻳﺴﺎوى ﻋﺪد ﻋﻨﺎﺻﺮ ‪ Cluster‬وﺑﻨﻔﺲ اﻟﺘﺮﺗﻴﺐ آﻤﺎ ﺳﻴﻈﻬﺮ ﻋﻨﺪ آﻞ ﻣﺪﺧﻞ‬
‫ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺨﺎﺻﺔ ﺑﺎﻟﻌﻨﺼﺮ‪.‬‬
‫ﺛﻢ ﻧﻘﻮم ﺑﺘﻮﺻﻴﻞ اﻟﻘﻴﻤﺔ اﻟﺠﺪﻳﺪة ﻟﻤﺪﺧﻞ اﻟﻌﻨﺼﺮ اﻟﻤﺮاد ﺗﻐﻴﻴﺮ ﻗﻴﻤﺘﻪ‪.‬‬

‫‪51‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻟﻮ ﺗﻢ ﺗﻮﺻﻴﻞ اﻟﻘﻴﻤﺔ اﻟﺠﺪﻳﺪة ﺑﻤﺪﺧﻞ ﻋﻨﺼﺮ اﺧﺮ وﻣﺨﺘﻠﻒ ﻓﻰ ﻧﻮع اﻟﺒﻴﺎﻧﺎت ﺳﻮف ﻳﻈﻬﺮ اﻟﺨﻂ‬
‫ﻣﻘﻄﻮﻋﺔ ﻻﻧﻪ ﺧﻄﺄ‪.‬‬

‫‪52‬‬
‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ ﻗﻴﻢ اآﺜﺮ ﻣﻦ ﻋﻨﺼﺮ ﻓﻰ ‪ Cluster‬ﻓﻰ ﻧﻔﺲ اﻟﻮﻗﺖ‪.‬‬

‫داﻟﺔ ‪: Unbundle‬‬
‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﻔﻚ ‪ Cluster‬اﻟﻰ ﻋﻨﺎﺻﺮﻩ‪.‬‬

‫وﻳﻮﺟﺪ ﻟﻬﺬة اﻟﺪاﻟﺔ ﻣﺪﺧﻞ واﺣﺪ ﻳﺘﻢ ﺗﻮﺻﻴﻞ ﻟﻪ ‪ Cluster‬اﻟﺘﻰ ﻧﺮﻳﺪ ﻓﻜﻪ ﻓﻴﺼﺒﺢ ﻋﺪد ﻣﺨﺎرج اﻟﺪاﻟﺔ‬
‫ﻳﺴﺎوى ﻋﺪد ﻋﻨﺎﺻﺮ ‪ Cluster‬وآﻞ ﻣﺨﺮج ﻳﻜﻮن ﻻﺣﺪ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓﻰ ‪ Cluster‬وﻳﻈﻬﺮ ﻋﻠﻰ‬
‫اﻟﻤﺨﺮج ﻧﻮع ﺑﻴﺎﻧﺎت اﻟﻌﻨﺼﺮ‪.‬‬
‫وﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﻋﻠﻰ ﻣﺨﺎرج اﻟﺪاﻟﺔ هﻮ ﻧﻔﺲ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪.Cluster‬‬

‫وﻣﻦ اﻟﻤﻬﻢ ﻣﻌﺮﻓﺔ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ‬


‫ﻓﺘﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ هﻰ اﻟﻄﺮﻳﻘﺔ ﻟﻠﺘﻌﺮف ﻋﻠﻰ ﻋﻨﺼﺮ ﻣﻌﻴﻦ ﻓﻬﺬة اﻟﺪاﻟﺔ ﻻ ﺗﺘﻴﺢ اﻟﺘﻌﺮف ﻋﻠﻰ اﺳﻢ اﻟﻌﻨﺼﺮ‪.‬‬

‫‪53‬‬
‫ﻓﻴﻤﻜﻦ ان ﻳﻮﺟﺪ ﻋﻨﺼﺮﻳﻦ ﺑﻨﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت ﻓﻬﺬﻳﻦ اﻟﻌﻨﺼﺮ ﻟﻦ ﻳﻔﺮق ﺑﻴﻨﻬﻤﺎ اﻻ اﻟﺘﺮﺗﻴﺐ وﻟﻮﺣﺪث ان‬
‫وﺻﻠﺖ ﻋﻨﺼﺮ ﻣﻜﺎن اﻻﺧﺮ ﻟﻦ ﺗﻌﻄﻰ ‪VI‬ﺧﻄﺄ ﻻﻧﻬﻢ ﻟﻬﻢ ﻧﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت وﻟﻜﻦ اﻟﻨﺘﻴﺠﺔ ﺳﺘﻜﻮن ﺧﻄﺄ ‪.‬‬

‫داﻟﺔ ‪: Bundle By Name‬‬


‫ﻣﺜﻞ داﻟﺔ ‪ Bundle‬ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺘﻐﻴﺮ ﻗﻴﻤﺔ ﻋﻨﺼﺮ او اآﺜﺮ ﻓﻰ ‪ .Cluster‬وﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻌﻨﺎﺻﺮ ﺑﻮاﺳﻄﺔ اﻻﺳﻢ ‪.‬‬
‫وﻻ ﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻓﻰ اﻧﺸﺎء ‪ Cluster‬ﺟﺪﻳﺪ‪.‬‬
‫وﻓﻰ هﺬة اﻟﺪاﻟﺔ ﻳﺠﺐ ﺗﻮﺻﻴﻞ اﻟﻤﺪﺧﻞ اﻟﺨﺎص ﺑـ ‪ Cluster‬وﺗﺴﺘﻄﻴﻊ ان ﺗﺨﺘﺎر اى ﻋﻨﺼﺮ ﻓﻰ ‪Cluster‬‬
‫ﻟﺘﻐﻴﻴﺮ ﻗﻴﻤﺘﻪ‪.‬‬

‫‪.Positioning‬‬ ‫وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد ﻣﺪاﺧﻞ اﻟﺪاﻟﺔ ﺑﻤﺪ اﻳﻘﻮﻧﺘﻬﺎ ﻻﺳﻔﻞ ﺑﻮاﺳﻄﺔ اﻻداة‬

‫‪54‬‬
‫وﻻﺧﺘﻴﺎر ﻋﻨﺼﺮ ﻣﻌﻴﻦ ﻣﻦ ﻋﻨﺎﺻﺮ ‪ Cluster‬ﻟﺘﻐﻴﻴﺮ ﻗﻴﻤﺘﻪ )ﺑﻌﺪ ﺗﻮﺻﻴﻞ ‪ (Cluster‬ﻧﻀﻐﻂ ﻋﻠﻰ‬
‫‪ Operating‬ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻗﺎﺋﻤﺔ ﺑﻌﻨﺎﺻﺮ ‪ Cluster‬ﻧﺨﺘﺎر ﻣﻨﻬﺎ اﻟﻌﻨﺼﺮ اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬ ‫اﻟﻤﺪﺧﻞ ﺑﺎﻻداة‬

‫داﻟﺔ ‪: Unbundle by Name‬‬


‫ﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﻗﻴﻤﺔ ﻋﻨﺼﺮ او اآﺜﺮ ﻣﻦ ‪ Cluster‬وﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻌﻨﺼﺮ ﺑﻮاﺳﻄﺔ اﺳﻢ اﻟﻌﻨﺼﺮ‪.‬‬
‫ﻋﻨﺪ ادراج اﻟﺪاﻟﺔ ﻗﻢ ﺑﺘﻮﺻﻴﻞ ‪ Cluster‬اﻟﻰ ﻣﺪﺧﻞ اﻟﺪاﻟﺔ ﻓﻴﻈﻬﺮ اﺳﻢ اول ﻋﻨﺼﺮ ﻓﻰ ‪ Cluster‬ﻋﻠﻰ ﻣﺨﺮج اﻟﺪاﻟﺔ‪.‬‬
‫‪ Operating‬واﺧﺘﺮ اﻟﻌﻨﺼﺮ اﻟﺬى ﺗﺮﻳﺪﻩ‬ ‫ﻻﺧﺘﻴﺎر ﻋﻨﺼﺮ اﺧﺮ اﺿﻐﻂ ﻋﻠﻰ اﻟﻌﻨﺼﺮ ﺑﻮاﺳﻄﺔ اﻻداة‬
‫ﻣﻦ ﻗﺎﺋﻤﺔ اﻟﻌﻨﺎﺻﺮ‪.‬‬

‫‪55‬‬
‫‪.Positioning‬‬ ‫ﻟﺰﻳﺎدة ﻋﺪد اﻟﻤﺨﺎرج ﻧﻤﺪ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻻﺳﻔﻞ ﺑﻮاﺳﻄﺔ اﻻداة‬

‫اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺎت و ‪: Clusters‬‬


‫ﻓﻰ ﺑﻌﺾ اﻻﺣﻴﺎن ﺗﺤﺘﺎج ﻟﻠﺘﺤﻮﻳﻞ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ ‪ Cluster‬واﻟﻌﻜﺲ‪.‬‬
‫وﻳﻮﺟﺪ داﻟﺘﺎن ﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺎت و ‪ Clusters‬وﻳﻤﻜﻦ ادراﺟﻬﻤﺎ ﻣﻦ‬
‫‪Function Palette>>Programming>>Cluster & Variant‬‬

‫‪Function Palette>>Programming>>Arrey‬‬

‫‪56‬‬
‫داﻟﺔ ‪: Cluster to Array‬‬
‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﻟﺘﺤﻮﻳﻞ ﻣﻦ ‪ Cluster‬ﺑﻪ ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻟﻬﺎ ﻧﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﻰ ﻣﺼﻔﻮﻓﺔ‬
‫ﺑﻬﺎ ﻧﻔﺲ اﻟﻌﺪد ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻟﻨﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫وﺳﻴﻜﻮن ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ هﻮ ﻧﻔﺲ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪.Cluster‬‬

‫‪57‬‬
‫ﻻﺣﻆ اﻧﻪ ﻟﻜﻠﻰ ﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻳﺠﺐ ان ﺗﻜﻮن آﻞ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪ Cluster‬ﻟﻬﺎ ﻧﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت‪.‬‬
‫ﻻﺣﻆ اﻳﻀﺎ ان اذا آﺎن اﺣﺪ اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﻓﻠﻦ ﺗﺴﻄﻴﻊ ان ﺗﺴﺘﺨﺪم هﺬة‬
‫اﻟﺪاﻟﺔ ﻻن ‪ LabVIEW‬ﻻ ﻳﺴﻤﻊ ﺑﻮﺟﻮد ﻣﺼﻔﻮﻓﺔ داﺧﻞ ﻣﺼﻔﻮﻓﺔ‪.‬‬

‫داﻟﺔ ‪: Array to Cluster‬‬


‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﻟﺘﺤﻮﻳﻞ ﻣﻦ ﻣﺼﻔﻮﻓﺔ اﺣﺎدﻳﺔ ﺗﺤﺘﻮى ﻋﻠﻰ ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻟﻰ ‪ Cluster‬ﺑﻪ‬
‫ﻧﻔﺲ اﻟﻌﺪد ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﺑﻨﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫وﻋﻨﺪ اﺳﺘﺨﺪام هﺬة اﻟﺪاﻟﺔ ﻳﺠﺐ ان ﺗﺤﺪد ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪ Cluster‬وذﻟﻚ ﻻن ‪ LabVIEW‬ﻻ ﻳﻘﻮم‬
‫ﺑﺘﺤﺪﻳﺪ ﺣﺠﻢ ‪ Cluster‬ﺗﻠﻘﺎﺋﻴﺎ ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت‪.‬‬
‫وﻟﺘﺤﺪﻳﺪ ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻓﻨﺨﺘﺎر ‪ Cluster Size‬ﻓﺘﻈﻬﺮ‬
‫ﻟﻨﺎ ﻧﺎﻓﺬة ﻧﺤﺪد ﻓﻴﻬﺎ ﻋﺪد ﻋﻨﺎﺻﺮ ‪Cluster‬‬

‫‪58‬‬
‫ﻣﺎذا ﻳﺤﺪث اذا ﻟﻢ ﻧﺤﺪد ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪Cluster‬؟‬
‫اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻌﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪Cluster‬هﻰ ‪. 9‬‬
‫ﻓﺎذا آﺎن ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ اﻗﻞ ﻣﻦ ‪ 9‬ﻓﺴﻮف ﻳﺤﺘﻮى ‪ Cluster‬ﻋﻠﻰ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ‬
‫ﺑﺎﻻﺿﺎﻓﺔ ﻋﻠﻰ ﻋﻨﺎﺻﺮ ﻣﻜﻤﻠﺔ ﻗﻴﻤﺘﻬﺎ اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻨﻮع اﻟﺒﻴﺎﻧﺎت ) ﻣﺜﺎل ‪ 0‬اذا آﺎن ﻧﻮع اﻟﺒﻴﺎﻧﺎت‬
‫‪ False ، Numeric‬اذا آﺎن ﻧﻮع اﻟﺒﻴﺎﻧﺎت ‪ ( Boolean‬ﺣﺘﻰ ﻳﺼﺒﺢ اﻟﻌﺪد اﻟﻜﻠﻰ ﻓﻰ ‪Cluster‬‬
‫ﻳﺴﺎوى ‪ 9‬ﻋﻨﺎﺻﺮ‪.‬‬

‫‪59‬‬
‫واذا آﺎن ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ اآﺒﺮ ﻣﻦ ‪ 9‬ﻓﺴﻮف ﻳﺤﺘﻮى ‪ Cluster‬ﻋﻠﻰ اول ‪ 9‬ﻋﻨﺎﺻﺮ ﻣﻦ‬
‫ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻘﻂ ‪.‬‬
‫ﻣﺜﺎل ﻋﻠﻰ اهﻤﻴﺔ اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ ‪ Cluster‬و ‪: Array‬‬
‫هﺪف اﻟﻤﺜﺎل ﻋﻜﺲ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪ Cluster‬وﺣﻴﺚ ان ﻻ ﺗﻮﺟﺪ داﻟﺔ ﺗﻘﻮم ﺑﻬﺬة اﻟﻮﻇﻴﻔﺔ ﻣﻊ‬
‫‪ Cluster‬ﺳﻨﻘﻮم ﺑﺘﺤﻮﻳﻞ ‪ Cluster‬اﻟﻰ ‪ Array‬وﻧﺴﺘﺨﺪم اﻟﺪاﻟﺔ ‪ Reverse 1D Array‬ﻟﻌﻜﺲ‬
‫ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﺛﻢ ﻧﺤﻮل اﻟﻤﺼﻔﻮﻓﺔ اﻟﻨﺎﺗﺠﺔ اﻟﻰ ‪.Cluster‬‬

‫اﺳﺘﺨﺪام دوال اﻟﻤﻘﺎرﻧﺔ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت و ‪: Clusters‬‬


‫ﻳﻤﻜﻦ اﺳﺘﺨﺪام دوال اﻟﻤﻘﺎرﻧﺔ ﻟﻠﻤﻘﺎرﻧﺔ ﺑﻴﻦ ﻣﺼﻔﻮﻓﺘﻴﻦ او ‪Clusters 2‬‬

‫‪60‬‬
‫وهﻨﺎك ﻧﻤﻄﻴﻦ ﻟﻠﻤﻘﺎرﻧﺔ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺎت و ‪ Clusters‬هﻤﺎ ‪ Compare Elements‬و ‪Compare‬‬
‫‪.Aggregates‬‬

‫وﻻﺧﺘﻴﺎر اﻟﻨﻤﻂ ﻧﻀﻐﻂ ﻋﻠﻰ اﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ داﻟﺔ اﻟﻤﻘﺎرﻧﺔ وﻧﺨﺘﺎر ‪Comparison Mode‬‬
‫ﺛﻢ اﻟﻨﻤﻂ اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫‪61‬‬
‫وﻓﻰ ﻧﻤﻂ ‪ Compare Aggregates‬ﺗﻘﻮم داﻟﺔ اﻟﻤﻘﺎرﻧﺔ ﺑﻤﻘﺎرﻧﺔ آﻞ ﻋﻨﺼﺮ ﻣﻊ اﻟﺬى ﻳﻘﺎﺑﻠﻪ اﻟﺬى‬
‫ﻳﻘﺎﺑﻠﻪ واذا آﺎﻧﺖ آﻞ اﻟﻤﻘﺎرﻧﺎت ﻧﺘﻴﺠﺘﻬﺎ ‪ True‬ﺗﺨﺮج اﻟﺪاﻟﺔ اﻟﻘﻴﻤﺔ ‪ True‬واذا ﻟﻢ ﺗﻜﻦ آﻞ اﻟﻤﻘﺎرﻧﺎت‬
‫ﻗﻴﻤﺘﻬﺎ ‪ True‬ﺗﺨﺮج اﻟﺪاﻟﺔ اﻟﻘﻴﻤﺔ ‪ .False‬ان اﻟﺪاﻟﺔ ﻓﻰ هﺬا اﻟﻨﻤﻂ ﺗﺨﺮج ﻗﻴﻤﺔ وﺣﻴﺪة ‪ True‬او‬
‫‪.False‬‬

‫وﻓﻰ ﻧﻤﻂ ‪ Compare Elements‬ﺗﻘﻮم داﻟﺔ اﻟﻤﻘﺎرﻧﺔ ﺑﻤﻘﺎرﻧﺔ آﻞ ﻋﻨﺼﺮ ﻣﻊ اﻟﺬى ﻳﻘﺎﺑﻠﻪ وﺗﺨﺮج‬
‫ﻧﺘﺎﺋﺞ اﻟﻤﻘﺎرﻧﺎت آﻠﻬﺎ ﻓﻰ ﻣﺼﻔﻮﻓﺔ او ‪ Cluster‬ﺑﻨﻔﺲ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ‪.‬‬

‫‪62‬‬
63
‫‪ Error Clusters‬ودوال ‪Error-Handling‬‬

‫‪ Error Cluster‬وهﻮ ‪ Cluster‬ﺧﺎص ﻟﺘﺨﺰﻳﻦ و ﺗﻤﺮﻳﺮ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻻﺧﻄﺎء اﻟﺘﻰ ﺗﺤﺪث اﺛﻨﺎء‬
‫ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫وﻳﻤﻜﻦ ادراج هﺬا ‪ Cluster‬ﻋﻠﻰ هﻴﺌﺔ ‪ Error-In Cluster‬او ‪ Error-Out Cluster‬ﻣﻦ‪:‬‬
‫‪Controls Palette>>Modern>>Array , Matrix & Cluster‬‬

‫وﻳﺘﻜﻮن ‪ Error Cluster‬ﻣﻦ ﺛﻼث ﻋﻨﺎﺻﺮ‪:‬‬


‫‪ : Status -1‬وهﻮ ﻣﻦ اﻟﻨﻮع ‪ Boolean‬وﻗﻴﻤﺘﻪ ﺗﻜﻮن ‪ True‬ﻟﻮ ان هﻨﺎك ﺧﻄﺄ ‪ .‬وﺗﻜﻮن ‪ False‬ﻟﻮ‬
‫اﻧﻪ ﻟﻴﺲ هﻨﺎك ﺧﻄﺄ ‪.‬‬
‫‪: Code -2‬وﻳﺤﻤﻞ رﻗﻢ ﺻﺤﻴﺢ ﻣﻦ اﻟﻨﻮع ‪- signed integer) I32‬رﻗﻢ ﺻﺤﻴﺢ ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻣﻮﺟﺒﺎ او‬
‫ﺳﺎﻟﺒﺎ( وهﺬا اﻟﻌﻨﺼﺮ ﻗﻴﻤﺘﻪ ﺗﺤﺪد اﻟﺨﻄﺄ اﻟﺬى ﺣﺪث‪.‬‬

‫‪64‬‬
‫ﻓﺎذا آﺎﻧﺖ ﻗﻴﻤﺘﻪ ‪:‬‬
‫ﻣﻮﺟﺐ ‪ :‬رﻗﻢ اﻟﺨﻄﺄ ﻓﻠﻜﻞ ﺧﻄﺄ رﻗﻢ آﻮدى ﻣﻌﻴﻦ‪.‬‬
‫ﺳﺎﻟﺐ ‪ :‬رﻗﻢ اﻟﺘﺤﺬﻳﺮ ﻓﻠﻜﻞ ﺗﺤﺬﻳﺮ رﻗﻢ آﻮدى ﻣﻌﻴﻦ‪.‬‬
‫ﺻﻔﺮ‪ :‬ﻟﻢ ﻳﺤﺪث ﺧﻄﺄ ‪.‬‬
‫‪ :Source -3‬ﻧﺺ ﻳﺤﺘﻮى ﻋﻠﻰ وﺻﻒ ﻟﻤﺼﺪر اﻟﺨﻄﺄ ﺳﻮاء آﺎن داﻟﺔ او ‪.SubVI‬‬

‫ﻳﺤﺪث اﻟﺨﻄﺄ ﻏﺎﻟﺒﺎ ﻋﻨﺪﻣﺎ ﻻ ﺗﺴﺘﻄﻴﻊ اﻟﺪاﻟﺔ او ‪ SubVI‬ﺗﻜﻤﻠﺔ ﻣﻬﻤﺘﻬﺎ ﺑﺴﺒﺐ ﻋﺪم ﺗﻮﻓﺮ ﻣﻌﻠﻮﻣﺎت اﺳﺎﺳﻴﺔ‬
‫ﻟﺘﻜﻤﻠﻪ ﻣﻬﻤﺘﻬﺎ او ان اى ﻣﻦ ﺗﻠﻚ اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﻬﻤﺔ ﻏﻴﺮ ﺻﺎﻟﺤﺔ‪.‬‬
‫وﻳﺴﺘﺨﺪم هﺬا ‪ Cluster‬ﻋﺎدة ﻓﻰ آﺜﻴﺮ ﻣﻦ اﻟﺪوال و ‪ SubVI‬آﻤﺪﺧﻞ او ﻣﺨﺮج‪.‬‬

‫‪65‬‬
‫آﻴﻒ ﺗﺘﻔﺎﻋﻞ ‪ SubVIs‬و اﻟﺪوال ﻣﻊ اﻻﺧﻄﺎء ‪:‬‬
‫اذا ﺣﺪث ﺧﻄﺄ داﺧﻞ داﻟﺔ او ‪ SubVI‬ﻓﺎﻧﻬﺎ ﺗﺨﺮج ﻣﻌﻠﻮﻣﺎت اﻟﺨﻄﺄ ﻓﻰ ‪ error out cluster‬ﺣﺘﻰ‬
‫ﺗﻜﻮن هﺬة اﻟﻤﻌﻠﻮﻣﺎت ﺟﺎهﺰة ﻟﻠـ ‪ SubVI‬واﻟﺪوال اﻟﺘﻰ ﺗﻠﻴﻬﺎ‪.‬‬
‫اذا اﺳﺘﻘﺒﻠﺖ ‪ SubVI‬او داﻟﺔ ﻋﻠﻰ ﻣﺪﺧﻠﻬﺎ ‪ error in‬ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ ﻓﺎﻧﻬﺎ ﻻ ﺗﻘﻮم ﺑﺎى ﻋﻤﻞ اﻻ ﺑﻌﺪ‬
‫ازاﻟﺔ ﺳﺒﺐ اﻟﺨﻄﺄ‪.‬واذا ﻟﻢ ﻳﺘﻢ ازاﻟﺔ ﺳﺒﺐ اﻟﺨﻄﺄ ﺗﻘﻮم ‪ VI‬ﺑﺘﻤﺮﻳﺮ ‪ error in‬اﻟﻰ ‪ error out‬ﻟﻴﻜﻮن‬
‫ﺟﺎهﺰا ﻟﻠﺪوال و ‪ SubVIs‬اﻟﺘﻰ ﺗﻠﻴﻬﺎ‪.‬‬

‫اﻧﺘﺸﺎر ﻣﻌﻠﻮﻣﺎت اﻟﺨﻄﺄ ﻋﻦ ﻃﺮﻳﻖ ﺗﺪﻓﻖ اﻟﺒﻴﺎﻧﺎت ‪:‬‬


‫ﻋﻨﺪ ﺗﺼﻤﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻔﻀﻞ رﺑﻂ ﻣﺪاﺧﻞ وﻣﺨﺮاج ‪ Error Clusters‬ﻟﻠﺪوال و ‪ SubVI‬ﺣﺘﻰ ﻳﺘﻢ ﻧﺸﺮ‬
‫‪ Error Cluster‬ﻋﻦ ﻃﺮﻳﻖ ﺗﺪﻓﻖ اﻟﺒﻴﺎﻧﺎت ﻓﺒﺬﻟﻚ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺨﻄﺄ اﻟﺬى ﻳﺤﺪث ﺗﻜﻮن ﻣﺘﺎﺣﺔ ﻟﻠﺪاﻟﺔ‬
‫او ‪ SubVI‬اﻟﺘﻰ ﺳﺘﻨﻔﺬ‪.‬‬

‫‪: Error Case Structure‬‬


‫ﻋﻨﺪ ﺗﻮﺻﻴﻞ ‪ Error Cluster‬ﺑﺎﻟﻤﺪﺧﻞ ‪ Case Selector‬ﻟـ ‪ Case Structure‬ﻓﺎﻧﻪ ﻳﺼﺒﺢ ﻟﻠـ‬
‫‪ Case Structure‬ﺣﺎﻟﺘﻴﻦ ‪:‬‬

‫‪66‬‬
‫• اﻟﺤﺎﻟﺔ اﻻوﻟﻰ ‪) Error‬ﻟﻮن اﻃﺎرهﺎ اﺣﻤﺮ ( وهﻰ اﻟﺤﺎﻟﺔ اﻟﺘﻰ ﺳﺘﻨﻔﺬ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ اذا آﺎن‬
‫‪ Error In Cluster‬ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ )‪.(Status=True‬‬
‫• اﻟﺤﺎﻟﺔ اﻟﺜﺎﻧﻴﺔ ‪) No Error‬ﻟﻮن اﻃﺎرهﺎ اﺧﻀﺮ ( وهﻰ اﻟﺤﺎﻟﺔ اﻟﺘﻰ ﺳﺘﻨﻔﺬ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ اذا‬
‫آﺎن ‪ Error In Cluster‬ﻻ ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ )‪.(Status=False‬‬
‫وﻏﺎﻟﺒﺎ ﻋﻨﺪ ﺗﺼﻤﻴﻢ ‪ SubVI‬ﻳﻮﺿﻊ آﻮد ‪ SubVI‬داﺧﻞ اﻟﺤﺎﻟﺔ ‪. No Error‬ﻓﻬﻰ ﺳﺘﻨﻔﺬ ﻣﻬﻤﺘﻬﺎ اذا ﻟﻢ‬
‫ﻳﺄﺗﻰ ﻟﻬﺎ ﺧﻄﺄ ﻣﻦ اﻟﺪوال او ‪ SubVIs‬اﻟﺘﻰ ﻗﺒﻠﻬﺎ‪.‬‬

‫وﻓﻰ اﻟﺤﺎﻟﺔ ‪ Error‬ﺳﻮف ﺗﻘﻮم ﺑﺘﻤﺮﻳﺮ ‪ Error Cluster‬اﻟﻰ ﺧﺎرﺟﻬﺎ ﻟﺘﻨﻘﻞ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺨﻄﺄ اﻟﻰ‬
‫اﻟﺪوال و‪ SubVIs‬اﻟﺘﻰ ﺑﻌﺪهﺎ‪.‬‬
‫‪67‬‬
: Error Clusters ‫دﻣﺞ‬
. ‫ ﻳﻤﻜﻦ ﺟﻤﻌﻬﻢ ﺟﻤﻴﻌﺎ ﻓﻰ ﻣﺴﺎر واﺣﺪ‬Error Cluster ‫اذا آﺎن هﻨﺎك اآﺜﺮ ﻣﻦ ﻣﺼﺪر او ﻣﺴﺎر ﻟﻠـ‬
.Error Clusters ‫ ﻟﺪﻣﺞ اآﺜﺮ‬Merge Errors.vi ‫وﺗﺴﺘﺨﺪم‬

‫وﻳﺘﻢ ادراﺟﻬﺎ ﻣﻦ‬


Function Palette >>Dialog & User Interface

68
‫وﻣﺪاﺧﻞ هﺬة ‪ VI‬ﺛﻼث ﻣﺪاﺧﻞ ‪:‬‬
‫‪ : Error In1‬ﻣﺪﺧﻞ ﻟـ ‪ Error Cluster‬اﻻآﺜﺮ اهﻤﻴﺔ‪.‬‬
‫‪ : Error In 2‬ﻣﺪﺧﻞ ﻟـ ‪ Error Cluster‬واهﻤﻴﺔ هﺬا اﻟﻤﺪﺧﻞ ﺑﻌﺪ اهﻤﻴﺔ ‪Error In1‬‬
‫‪ : Error In3‬ﻣﺪﺧﻞ ﻟـ ‪ Error Cluster‬واهﻤﻴﺔ هﺬا اﻟﻤﺪﺧﻞ ﺑﻌﺪ اهﻤﻴﺔ ‪.Error In2‬‬
‫‪ : Error Array in‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ﻣﻦ ‪ Error Clusters‬واهﻤﻴﺘﻬﺎ ﺗﺄﺗﻰ ﺑﻌﺪ اهﻤﻴﺔ اﻟﻤﺪاﺧﻞ اﻟﺜﻼث‪.‬‬

‫وﺗﺨﺮج هﺬة ‪ Error Cluster VI‬وﺣﻴﺪ ‪ .‬ﻓﺎذا آﺎن اﺣﺪ اﻟﻤﺪاﺧﻞ ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ )‪( Status=True‬‬
‫ﺗﺨﺮج اﻟﺪاﻟﺔ ‪ Error Cluster‬ﻟﻬﺬا اﻟﻤﺪﺧﻞ ‪.‬‬
‫وﻟﻮ آﺎن هﻨﺎك اآﺜﺮ ﻣﻦ ﻣﺪﺧﻞ ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ ﺗﺨﺮج اﻟﺪاﻟﺔ ‪ Error Cluster‬ﻟﻠﻤﺪﺧﻞ اآﺜﺮ اهﻤﻴﺔ‪.‬‬
‫ﻣﺜﺎل‪ :‬ﻟﻮ ان ‪ Error In2‬و‪ Error In 3‬ﻳﺤﺘﻮﻳﺎن ﻋﻠﻰ اﺧﻄﺎء )‪ Status =True‬ﻓﻰ آﻼهﻤﺎ( ﺗﺨﺮج‬
‫اﻟﺪاﻟﺔ ‪ Error In 2‬ﻻﻧﻪ اآﺜﺮ اهﻤﻴﺔ‪.‬‬
‫واذا ﻟﻢ ﻳﻜﻦ هﻨﺎك اﺧﻄﺄ ﻓﻰ اﻟﻤﺪاﺧﻞ ﺗﺒﺤﺚ اﻟﺪاﻟﺔ ﻋﻦ اﻟﺘﺤﺬﻳﺮات ﻋﻠﻰ اﻟﻤﺪاﺧﻞ وﺗﺨﺮج اآﺜﺮ اﻟﺘﺤﺬﻳﺮات‬
‫اهﻤﻴﺔ ان وﺟﺪت‪.‬‬
‫واذا ﻟﻢ هﻨﺎك اى ﺧﻄﺄ او ﺗﺤﺬﻳﺮ ﺗﺨﺮج اﻟﺪاﻟﺔ ‪ Error Cluster‬ﻻ ﻳﺤﺘﻮى ﻋﻠﻰ اﺧﻄﺎء )‪(No Error‬‬

‫آﻴﻔﻴﺔ ﺗﻜﻮﻳﻦ ‪ Error‬داﺧﻞ ‪: SubVI‬‬


‫آﻴﻒ ﻳﻤﻜﻦ ﺟﻌﻞ ‪ SubVI‬اذا ﻟﻢ ﺗﺴﺘﻄﻊ اآﻤﺎل ﻣﻬﻤﺘﻬﺎ ﻻى ﺳﺒﺐ ان ﺗﻜﻮن ﺧﻄﺄ وﺗﺨﺮﺟﻪ‪.‬‬
‫ﻣﺜﺎل ‪ SubVI :‬ﺗﻘﻮم ﺑﺤﺴﺎ ب اﻟﺠﺬر اﻟﺘﺮﺑﻴﻌﻰ ﻟﻼﻋﺪاد ﻓﺎذا آﺎن اﻟﺪﺧﻞ ﻋﺪد اآﺒﺮ او ﻳﺴﺎوى اﻟﺼﻔﺮ ﻓﺎﻧﻬﺎ‬
‫ﺗﺤﺴﺐ اﻟﺠﺬر اﻟﺘﺮﺑﻴﻌﻰ و اذا آﺎن اﻟﺪﺧﻞ ﻋﺪد ﺳﺎﻟﺐ ﻓﺎن ‪ SubVI‬ﺗﻘﻮم ﺑﺘﻜﻮﻳﻦ ﺧﻄﺄ ﻻن اﻟﻌﺪد ﺳﺎﻟﺐ‬
‫وﺗﻘﻮم ﺑﺎﺧﺮاج هﺬا اﻟﺨﻄﺄ ﻓﻰ ‪.Error Cluster‬‬

‫ﻟﻌﻤﻞ ذﻟﻚ ﻧﺴﺘﺨﺪم اﻟﺪاﻟﺔ ‪Error Cluster from Error Code‬‬

‫‪69‬‬
‫ﺗﻘﻮم هﺬة ‪ VI‬ﺑﺘﺤﻮﻳﻞ اﻟﺮﻗﻢ اﻟﻜﻮدى ﻟﻠﺨﻄﺄ اﻟﻰ ‪. Error Cluster‬‬
‫وﻣﺪاﺧﻞ هﺬة ‪:VI‬‬
‫• ‪ : Error Code‬اﻟﺮﻗﻢ اﻟﻜﻮدى ﻟﻠﺨﻄﺄ ‪.‬‬
‫• ‪ : Error Message‬وﺻﻒ ﻟﻠﺨﻄﺄ هﺬا اﻟﻮﺻﻒ ﻳﻈﻬﺮ ﻋﻨﺪ اﺳﺘﺨﺪام ‪Simple Error Handler‬‬
‫)ﺳﻴﺄﺗﻰ ﺷﺮﺣﻪ ﻓﻰ اﻟﺠﺰء اﻟﻘﺎدم( واذا ﻟﻢ ﻳﻮﺻﻞ هﺬة اﻟﻤﺪﺧﻞ ﻓﺎن ‪ LabVIEW‬ﻳﻈﻬﺮ اﻟﻮﺻﻒ اﻟﺘﻘﻠﻴﺪى‬
‫اﻟﺨﺎص ﺑـ ‪.Error Code‬‬
‫• ‪ : Error in‬ﻣﺪﺧﻞ ‪ Error Cluster‬اﻟﺬى ﻳﺤﺘﻮى ﻋﻠﻰ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ اى ﺧﻄﺄ ﺣﺪث ﻗﺒﻞ ﻋﻤﻞ ‪. VI‬‬
‫وﻣﺨﺮج هﺬة ‪:VI‬‬
‫• ‪ Error Cluster : Error Out‬ﻳﺤﺘﻮى ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺨﻄﺄ اﻟﺨﺎص ﺑﺎﻟـ ‪Error‬‬
‫‪ Code‬وذﻟﻚ ﻓﻰ ﺣﺎﻟﺔ اذا آﺎن ‪ Error In‬ﻻﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ اﻣﺎ ﻓﻰ ﺣﺎﻟﺔ ان ‪Error In‬‬
‫ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ ﻓﺎن ﺧﺮج ‪ Error Out‬هﻮ ﻧﻔﺴﻪ ‪.Error In‬‬

‫‪70‬‬
71
‫آﻴﻔﻴﺔ اﻇﻬﺎر رﺳﺎﻟﺔ ﺧﻄﺄ ﻟﻠﻤﺴﺘﺨﺪم ‪:‬‬
‫ﻋﻨﺪﻣﺎ ﻻ ﻳﺴﺘﻄﻴﻊ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺨﻄﺄ او ازاﻟﺘﻪ ﻓﺎﻧﻪ ﻳﻤﻜﻦ اﻇﻬﺎر رﺳﺎﻟﺔ ﻟﻠﻤﺴﺘﺨﺪم ﺗﺒﻴﻦ ﺣﺪوث اﻟﺨﻄﺄ ‪.‬‬
‫ﺗﺴﺘﺨﺪم ‪ Simple Error Handler .vi‬ﻻﻇﻬﺎر رﺳﺎﻟﺔ ﻟﻠﻤﺴﺘﺨﺪم ﺑﺎﻟﺨﻄﺄ اﻟﺬى ﺣﺪث ‪.‬‬
‫وﻳﺘﻢ ادراج هﺬة ‪ VI‬ﻣﻦ‬
‫‪Function Palette>>Programming>>Dialog & User Interface‬‬

‫وﻳﺘﻢ ﺗﻮﺻﻴﻞ ‪ Error Cluster‬ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻰ ﻣﺪﺧﻞ هﺬة ‪ VI‬ﻓﺎذا آﺎن هﻨﺎك ﺧﻄﺄ ﺗﺨﺮج هﺬة اﻟﺪاﻟﺔ‬
‫وﺻﻒ ﻟﻠﺨﻄﺄ آﻤﺎ اﻧﻬﺎ ﺗﻈﻬﺮ رﺳﺎﻟﺔ ﻟﻠﻤﺴﺘﺨﺪم ﺑﻪ هﺬا اﻟﻮﺻﻒ‪.‬‬
‫و ﻳﺤﺪد اﻟﻤﺪﺧﻞ ‪ type of dialog‬ﻧﻮع اﻟﺮﺳﺎﻟﺔ ‪.‬‬

‫‪72‬‬
‫واذا ﻟﻢ ﻳﻮﺻﻞ هﺬة اﻟﻤﺪﺧﻞ ﺗﻈﻬﺮ رﺳﺎﻟﺔ ﺑﺰرار واﺣﺪ‪.‬‬

‫ﻧﺎﻓﺬة ‪: Explain Error‬‬


‫ﻋﻨﺪﻣﺎ ﻳﺤﺘﻮى ‪ Error Cluster Control‬او ‪ Error Cluster Indicator‬ﻋﻠﻰ ﺧﻄﺄ ﻓﻴﻤﻜﻦ‬
‫اﻇﻬﺎر ﻧﺎﻓﺬة ‪ Explain Error‬اﻟﺘﻰ ﺗﺤﺘﻮى ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺨﻄﺄ ﺑﺎﻻﺿﺎﻓﺔ ﻟﻮﺻﻒ اﻟﺨﻄﺄ واﺳﺒﺎب‬
‫ﺣﺪوﺛﻪ‪.‬‬

‫‪73‬‬
‫اﺧﺘﺒﺎر ﺣﺪوث ﺧﻄﺄ ﻓﻰ ‪: Loops‬‬
‫ﻳﺴﺘﺨﺪم ‪ Status‬اﻟﻤﻮﺟﻮد ﻓﻰ ‪ Error Cluster‬ﻓﻰ اﺧﺘﺒﺎر ﺣﺪوث ﺧﻄﺄ ﻣﻦ ﻋﺪﻣﻪ ‪.‬‬
‫وذﻟﻚ ﺑﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪.Unbundle by Name‬‬

‫‪74‬‬
‫وﻳﺴﺘﺨﺪم ‪ Status‬ﻓﻰ داﺧﻞ ‪ Loops‬ﻻﻳﻘﺎف ﻋﻤﻠﻬﺎ ﻓﻰ ﺣﺎﻟﺔ ﺣﺪوث ﺧﻄﺄ‪.‬‬

‫‪75‬‬
‫ﺗﻢ ﺑﺤﻤﺪ اﷲ ﺗﻌﺎﻟﻰ اﻻﻧﺘﻬﺎء ﻣﻦ اﻟﺪرس‬
‫اﻟﻰ اﻟﻘﺎء ﺑﺎذن اﷲ ﺗﻌﺎﻟﻰ ﻣﻊ اﻟﺪرس اﻟﺴﺎﺑﻊ‬

‫‪photonlv@gmail.com‬‬
LabVIEW ‫دروس ﺗﻌﻠﻴﻢ‬

‫اﻟﺪرس اﻟﺴﺎﺑﻊ‬
Charts and Graphs
‫اﻟﻔﻬﺮس‬

iv ...................................................................................................... ‫هﺪف اﻟﺪرس‬


1............................................................................................................... ‫ﻣﻘﺪﻣﺔ‬
2......................................................................................... Waveform Charts
3.......................................................................... Chart ‫اﻧﻤﺎط ﺗﺤﺪﻳﺚ اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ‬
4............................................................................................. Strip Mode
5.......................................................................................... Scope Node
6......................................................................................... Sweep Mode
8.....................................................................Waveform Chart ‫آﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻰ‬
8...................................................... (Single-Plot) ‫ ﻳﺤﺘﻮى ﻋﻠﻰ رﺳﻢ واﺣﺪ‬Chart
9................................................. (Multiple-Plot) ‫ ﻳﺤﺘﻮى ﻋﻠﻰ اآﺜﺮ ﻣﻦ رﺳﻢ‬Chart
15........................................................................................... Chart ‫ﺧﺼﺎﺋﺺ‬
15..................................................................................... Digital Display
16..................................................... ( The X Scrollbar) X ‫ﺷﺮﻳﻂ اﻧﺰﻻق ﻣﺤﻮر‬
17.......................................................... (Clear Chart) Chart ‫ﺣﺬف ﺟﻤﻴﻊ ﻧﻘﻂ‬
19............................................. Block Diagram ‫ ﻣﻦ ﺧﻼل‬Chart ‫ﺣﺬف ﺟﻴﻤﻊ ﻧﻘﻂ‬
22........................................................................ Stack and Overly Plots
24........................................................... Y ‫( ﻟﻤﺤﻮر‬Scale) ‫اﺿﺎﻓﺔ اآﺜﺮ ﻣﻦ ﺗﺪرﻳﺞ‬
28.................................................................................. Chart History ‫ﺳﻌﺔ‬
30........................................................................................................Graphs
31...................................................................................... Waveform Graphs
31............................................................................ Waveform Graph ‫ادارج‬
32.................................................................................. Graph ‫آﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻰ‬
32...................................................... ‫ ﻳﺤﺘﻮى ﻋﻠﻰ رﺳﻢ واﺣﺪ‬Waveform Graph
35................................................... ‫ ﻳﺤﺘﻮى ﻋﻠﻰ اآﺜﺮ ﻣﻦ رﺳﻢ‬Waveform Graph

i
37.................................................................................................. XY Graphs
38............................................................................ XY Graph ‫آﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻰ‬
38................................................................. ‫ ﻳﺤﺘﻮى ﻋﻠﻰ رﺳﻢ واﺣﺪ‬XY Graph
40.............................................................. ‫ ﻳﺤﺘﻮى ﻋﻠﻰ آﺜﺮ ﻣﻦ رﺳﻢ‬XY Graph
40............................................... XY Graph ‫ ﻓﻰ‬Planes ‫اﺳﺘﺨﺪام اﻧﻮاع ﻣﺨﺘﻠﻔﺔ ﻣﻦ‬
43................................................................................. Graphs‫ و‬Charts ‫ﻣﻜﻮﻧﺎت‬
43............................................................................. (Scales) ‫ﺧﺼﺎﺋﺺ اﻟﺘﺪرﻳﺞ‬
45................................................................................... AutoScale ‫ﺧﺎﺻﻴﺔ‬
46..................................................................................... Loose Fit ‫ﺧﺎﺻﻴﺔ‬
47.......................................................................................... Formatting
54................................................................................... The Scale Legend
56...................................................................................... The Plot Legend
69......................................................................................... Graph Cursors
69................................................................................. The Cursor Legend
70........................................ Cursor Legend ‫ او‬Graph ‫ اﻟﻰ‬Cursor ‫آﻴﻔﻴﺔ اﺿﺎﻓﺔ‬
71.................................................................................... Cursor ‫اﻋﺎدة ﺗﺴﻤﻴﺔ‬
71.......................................................................................... Cursor ‫ﺗﺤﺮﻳﻚ‬
73....................................................................................... Cursor ‫ﺧﺼﺎﺋﺺ‬
77.................................................................................. Graph Annotations
78....................................................................Graph ‫ اﻟﻰ‬Annotation ‫اﺿﺎﻓﺔ‬
80..................................................................................... Annotation ‫ﺣﺬف‬
81....................................................................... Intensity Charts and Graphs
82....................................................... Intensity Graph and Charts ‫آﻴﻔﻴﺔ ادراج‬
82.......................................... Intensity Graph ‫ و‬Intensity Chart ‫آﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻰ‬
84.............................................................................................. Color Scale
84........................................................................................ ‫ﺗﺨﺼﻴﺺ ﻟﻮن ﻟﻠﻘﻴﻢ‬
88.................................................................................................. 3D Graphs

ii
90................................................................................... 3D Surface Graph
91............................................................. 3D Surface Graph ‫آﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻰ‬
95.............................................................................. 3D Parametric Graph
97...................................................................................... 3D Curve Graph
99..................................................................................... 3D Graph ‫ﺧﺼﺎﺋﺺ‬
102.............................................. Dynamic Data ‫و‬Waveforms‫ و‬Time Stamps
103......................................................................................... Time Stamps
103........................ Constant ‫ او‬Indicator ‫ او‬Time Stamp Control ‫آﻴﻔﻴﺔ ادراج‬
105............................................................................. Time Stamp ‫ﺗﻐﻴﻴﺮ ﻗﻴﻢ‬
108........................................................................ Time Stamp ‫اﻟﻌﻤﻠﻴﺎت ﻋﻠﻰ‬
111.......................................................... Numeric‫ و‬Time Stamp ‫اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ‬
113............................................................................................ Waveforms
116............................................................... ‫ واﻟﻤﺼﻔﻮﻓﺎت‬Waveform ‫ﻣﻘﺎرﻧﺔ ﺑﻴﻦ‬
117....................................................................... Waveform ‫اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑـ‬
127............................................................................................ Digital Data
131........................................................................ Digital Waveform Graph
133........................................................................................ Dynamic Data
136.................................................................................. Mixed Signal Graph
140....................................................................................Multi-Plot Cursor
142..........................................................Graphs ‫ او‬Charts ‫اﻟﺤﺼﻮل ﻋﻠﻰ ﺻﻮرة ﻣﻦ‬

iii
‫هﺪف اﻟﺪرس‬

‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Charts‬وﺧﺼﺎﺋﺼﻬﺎ وآﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻴﻬﺎ‪.‬‬


‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Waveform Graph‬وآﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻴﻬﺎ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ XY Graph‬وآﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻴﻬﺎ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ﻣﻜﻮﻧﺎت ‪ Charts‬و‪ Graphs‬وﺧﺼﺎﺋﺼﻬﺎ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Intensity Charts‬و‪ Intensity Graphs‬وآﻴﻔﻴﺔ ﺗﻤﺜﻴﻞ اﻟﺒﻴﺎﻧﺎت ﻋﻠﻴﻬﺎ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ 3D Surface)3D Graphs‬و ‪ 3D Parametric‬و‪(3D Curve‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ اﻧﻮاع ﺟﺪﻳﺪة ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻟﺘﻤﺜﻴﻞ وﺗﺨﺰﻳﻦ اﻻﺷﺎرات ﻣﺜﻞ ‪ Time Stamp‬و‬
‫‪ Waveforms‬و‪Digital Waveform‬و ‪ Digital Data‬و ‪. Dynamic Data‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Digital Waveform Graph‬وآﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻴﻪ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Mixed Signal Graph‬وآﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻴﻪ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ اﻟﺤﺼﻮل ﻋﻠﻰ ﺻﻮرة ﻣﻦ ‪ Chart‬و‪.Graphs‬‬

‫‪iv‬‬
‫ﻣﻘﺪﻣﺔ‬
‫ﻟﻠﺮﺳﻮﻣﺎت اهﻤﻴﺔ آﺒﻴﺮة ﻓﻰ ﺗﻤﺜﻴﻞ اﻟﺒﻴﺎﻧﺎت واﻟﺤﺼﻮل ﻣﻨﻬﺎ ﻋﻠﻰ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت‪.‬‬
‫و‪ LabVIEW‬ﻏﻨﻰ ﺑﻜﺜﻴﺮ ﻣﻦ اﻻدوات اﻟﺘﻰ ﺗﺘﻴﺢ رﺳﻢ و ﺗﻤﺜﻴﻞ اﻻﻧﻮاع اﻟﻤﺨﺘﻠﻔﻪ ﻣﻦ اﻟﺒﻴﺎﻧﺎت‬
‫ﻓﻰ اﻓﻀﻞ ﺻﻮرة‪ .‬وﺳﻨﺴﺘﻌﺮض ﻓﻰ هﺬا اﻟﺪرس ﺑﺎﻟﺘﻔﺼﻴﻞ هﺬة اﻻدوات و آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‬
‫وﺗﻬﻴﺌﺘﻬﺎ ﻻﻓﻀﻞ ﺷﻜﻞ ‪.‬‬

‫‪1‬‬
‫‪Waveform Charts‬‬
‫‪ Charts‬هﻰ ﻧﻮع ﺧﺎص ﻣﻦ ‪ Numeric Indicator‬ﻻﻇﻬﺎر رﺳﻢ ﺑﻴﺎﻧﻰ او اﺷﺎرة او اآﺜﺮ‪.‬‬
‫وآﻤﺎ ﻧﻌﻠﻢ ان اﻟﺮﺳﻢ اﻟﺒﻴﺎﻧﻰ هﻮ ﻋﺒﺎرة ﻋﻦ ﺗﻤﺜﻴﻞ ﺑﺎﻟﺮﺳﻢ ﻟﻌﻼﻗﺔ ﺑﻴﻦ ﻣﺘﻐﻴﺮﻳﻦ ‪ Y‬و ‪ . X‬وﻋﺎدة ﻣﺎ ﻳﻜﻮن ‪ Y‬هﻮ‬
‫اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﻧﺮﻳﺪ ﺗﻤﺜﻴﻠﻬﺎ ﻣﻊ اﻟﺰﻣﻦ ‪.X‬‬

‫وﻳﺘﻢ ادراج ‪ Chart‬ﻣﻦ‬


‫‪Controls Palette>>Modern>>Graph‬‬

‫‪2‬‬
‫وﻋﺎدة ﻣﺎ ﺗﺴﺘﺨﺪم ‪ Charts‬داﺧﻞ ‪ Loops‬آﻤﺎ ﺳﻨﺮى ‪.‬وﻣﻦ ﺧﺼﺎﺋﺺ ‪ Charts‬اﻧﻬﺎ ﺗﻈﻬﺮ اﻟﺒﻴﺎﻧﺎت اﻟﺠﺪﻳﺪة‬
‫اﻟﻰ ﺟﺎﻧﺐ اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺳﺒﻖ اﻇﻬﺎرهﺎ آﻤﺎ اﻧﻬﺎ ﺗﻘﻮم ﺑﺎﺳﺘﻤﺮار ﺑﺘﺤﺪﻳﺚ اﻟﺮﺳﻢ ﻋﻨﺪ وﺻﻮل ﺑﻴﺎﻧﺎت ﺟﺪﻳﺪة‪.‬‬
‫وﻳﻮﺟﺪ ﻟﻠـ ‪ Chart‬ﻋﺪة اﻧﻤﺎط ﻟﺘﺤﺪﻳﺚ اﻟﺒﻴﺎﻧﺎت ﻋﻠﻴﻪ‪.‬‬

‫اﻧﻤﺎط ﺗﺤﺪﻳﺚ اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ ‪: Chart‬‬


‫ﻳﻮﺟﺪ ﺛﻼث اﻧﻤﺎط ﻟﺘﺤﺪﻳﺚ اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ ‪ Chart‬هﻰ ‪ Strip mode‬و ‪ Scope Mode‬و ‪.Sweep Mode‬‬
‫وﻳﺘﻢ ﺗﺤﺪﻳﺪ ﻧﻤﻂ ﺗﺤﺪﻳﺚ اﻟﺒﻴﺎﻧﺎت ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Chart‬ﺛﻢ‬
‫‪Advanced>>Update Mode‬‬
‫ﺛﻢ ﻧﺨﺘﺎر اﻟﻨﻤﻂ اﻟﺬى ﻧﺮﻳﺪﻩ‬

‫آﻤﺎ ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ ﻧﻤﻂ اﻟﺘﺤﺪﻳﺚ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‬

‫‪3‬‬
‫‪: Strip Mode‬‬

‫ﻓﻰ هﺬا اﻟﻨﻤﻂ ﻋﻨﺪ اﺿﺎﻓﺔ ﻧﻘﻄﺔ ﺟﺪﻳﺪة ﺗﻈﻬﺮ ﻓﻰ اﻗﺼﻰ ﻳﻤﻴﻦ ‪ Chart‬وﻳﺘﻢ اﺧﻔﺎء اﻗﺪم ﻧﻘﻄﺔ اﻟﺘﻰ ﺗﻘﻊ اﻗﺼﻰ ﻳﺴﺎر‬
‫‪ Chart‬اى ﻳﺤﺪث ازاﺣﺔ ﻟﺠﻤﻴﻊ اﻟﻨﻘﻂ ﺟﻬﺔ اﻟﻴﺴﺎر‪.‬‬

‫‪4‬‬
‫‪: Scope Node‬‬

‫ﻳﺘﻢ ﻋﺮض اﻟﻨﻘﻂ ﺣﺘﻰ ﺗﺼﻞ اﻟﻨﻘﻂ اﻟﻰ اﻟﺤﺎﻓﺔ اﻟﻴﻤﻨﻰ ﻋﻨﺪﺋﺬ ﻳﺘﻢ ﺣﺬف ﺟﻤﻴﻊ اﻟﻨﻘﻂ ﻟﻴﺘﻢ ﻋﺮض اﻟﻨﻘﻂ اﻟﺠﺪﻳﺪة ﻣﻦ‬
‫اﻟﺒﺪاﻳﺔ )اﻟﺤﺎﻓﺔ اﻟﻴﺴﺮى( وهﻜﺬا ﻳﺘﻢ ﺗﻜﺮار هﺬة اﻟﻌﻤﻠﻴﺔ‪.‬‬

‫‪5‬‬
‫‪: Sweep Mode‬‬

‫هﺬة اﻟﻨﻤﻂ ﻳﺸﺒﺔ ‪ Scope Mode‬ﻓﻔﻴﻪ ﻳﺘﻢ ﻋﺮض اﻟﻨﻘﻂ ﺣﺘﻰ ﺗﺼﻞ اﻟﻨﻘﻂ اﻟﻰ اﻟﺤﺎﻓﺔ اﻟﻴﻤﻨﻰ وﻟﻜﻦ ﻻ ﻳﺘﻢ ﺣﺬف‬
‫اﻟﻨﻘﻂ واﻧﻤﺎ ﻳﺘﻢ ﻋﺮض اﻟﻨﻘﻂ اﻟﺤﺪﻳﺜﺔ ﻣﻦ اﻟﺒﺪاﻳﺔ )اﻟﺤﺎﻓﺔ اﻟﻴﺴﺮى( وﺗﺴﺘﺒﺪل آﻞ ﻧﻘﻄﺔ ﻗﺪﻳﻤﺔ ﺑﻨﻘﻄﺔ ﺣﺪﻳﺜﺔ وﻳﻈﻬﺮ ﺧﻂ‬
‫رأﺳﻰ ﻳﺒﻴﻦ اﻟﻔﺮق ﺑﻴﻦ اﻟﻨﻘﻂ اﻟﻘﺪﻳﻤﺔ واﻟﺤﺪﻳﺜﺔ )اﻟﻨﻘﻂ اﻟﻘﺪﻳﻤﺔ ﻋﻠﻰ ﻳﻤﻴﻦ اﻟﺨﻂ واﻟﻨﻘﻂ اﻟﺤﺪﻳﺜﺔ ﻋﻠﻰ ﻳﺴﺎر اﻟﺨﻂ( وهﻜﺬا‬
‫ﻳﺘﻢ ﺗﻜﺮار هﺬة اﻟﻌﻤﻠﻴﺔ‪.‬‬

‫‪6‬‬
‫اي اﻻﻧﻤﺎط اﺳﺮع ﻓﻰ اﻟﻌﺮض ؟‬
‫ﻧﻈﺮا ﻻﻧﻪ ﻓﻰ اﻟﻨﻤﻂ ‪ Strip‬ﻳﺘﻢ ازاﺣﺔ اﻟﻨﻘﻂ ﺑﺎﻋﺎدة رﺳﻤﻬﺎ وهﺬا ﻻﻳﺤﺪث ﻓﻰ اﻟﻨﻤﻄﻴﻦ اﻻﺧﺮﻳﻦ ﻓﺎن هﺬا اﻟﻨﻤﻂ‬
‫اﺑﻄﻰء ﻓﻰ ﻋﺮض اﻟﺒﻴﺎﻧﺎت ﻋﻦ اﻟﻨﻤﻄﻴﻦ اﻻﺧﺮﻳﻦ‪.‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬
‫اﻟﻘﻴﻢ اﻟﺘﻰ ﺗﻌﺮض ﻋﻠﻰ ‪ Chart‬هﻰ ﻗﻴﻢ اﻟﻤﺤﻮر ‪ Y‬اﻣﺎ اﻟﻤﺤﻮر ‪ X‬ﻓﻴﻌﺘﺒﺮ ﻋﺪاد ﻟﻬﺬة اﻟﻘﻴﻢ ﻓﻌﻨﺪ اﺿﺎﻓﺔ ﻗﻴﻤﺔ ﺟﺪﻳﺪة‬
‫ﻓﻰ ‪ Chart‬ﻳﻘﻮم ‪ LabVIEW‬ﺑﺰﻳﺎدة ﻗﻴﻤﺔ ‪ X‬ﺑﻮاﺣﺪ‪.‬‬
‫وﻻﻋﻄﺎء ﻣﺤﻮر ‪ X‬ﻗﻴﻢ ﻣﻌﻴﻨﺔ ﻧﺴﺘﺨﺪم ‪ Graph‬ﺑﺪﻻ ﻣﻦ ‪. Chart‬‬

‫‪7‬‬
‫آﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻰ ‪:Waveform Chart‬‬
‫ﻳﻤﻜﻦ ﻋﺮض رﺳﻢ واﺣﺪ ﻋﻠﻰ ‪ (Single Plot) Chart‬وﻳﻤﻜﻦ ﻋﺮض اآﺜﺮ ﻣﻦ رﺳﻢ )‪(Multiple-Plot‬‬
‫‪ Chart‬ﻳﺤﺘﻮى ﻋﻠﻰ رﺳﻢ واﺣﺪ )‪: (Single-Plot‬‬
‫ﺗﻮﺟﺪ ﻃﺮﻳﻘﻴﺘﻦ ﻟﻌﻤﻞ رﺳﻢ وﺣﻴﺪ ﻋﻠﻰ ‪: Chart‬‬
‫‪-1‬اﺑﺴﻂ اﻟﻄﺮق ﻟﻌﺮض ﺑﻴﺎﻧﺎت ﻋﻠﻰ ‪ Chart‬هﻰ ﺗﻮﺻﻴﻞ ﻗﻴﻤﺔ وﺣﻴﺪة )‪ (Scalar Value‬ﻟﻪ وﺗﻀﺎف هﺬة اﻟﻘﻴﻤﺔ‬
‫آﻨﻘﻄﺔ ﻓﻰ اﻟﺮﺳﻢ اﻟﻤﻮﺟﻮد ﻋﻠﻰ ‪.Chart‬‬

‫وﻳﻤﻜﻦ اﺳﺘﺨﺪام ‪ Loops‬ﻟﺤﺼﻮل ﻋﻠﻰ ﻋﺪة ﻧﻘﻂ ﻓﻰ اﻟﺮﺳﻢ‪.‬‬


‫ﻣﺜﺎل‬

‫‪ -2‬ﻳﻤﻜﻦ ان ﺗﻌﺮض ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻘﻴﻢ ﻋﻠﻰ ‪ Chart‬ﻣﺮة واﺣﺪة ﺑﺪﻻ ﻣﻦ ﻧﻘﻄﺔ ﻧﻘﻄﺔ وذﻟﻚ ﺑﺘﻮﺻﻴﻞ ‪ Chart‬ﺑـ‬
‫ﻣﺼﻔﻮﻓﺔ )‪ ( Array‬ﺑﻬﺎ اﻟﻘﻴﻢ اﻟﺘﻰ ﻧﺮﻳﺪ ﻋﺮﺿﻬﺎ‪.‬‬

‫‪8‬‬
‫وﻳﻤﻜﻦ ﺗﻜﻮﻳﻦ اﻟﻤﺼﻔﻮﻓﺔ ﺑﺎﺳﺘﺨﺪام ‪Loops‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪ Chart‬ﻳﺤﺘﻮى ﻋﻠﻰ اآﺜﺮ ﻣﻦ رﺳﻢ )‪:(Multiple-Plot‬‬


‫ﻳﻮﺟﺪ ﻋﺪة ﻃﺮق ﻟﻌﻤﻞ اآﺜﺮ ﻣﻦ رﺳﻢ ﻋﻠﻰ ‪: Chart‬‬

‫‪9‬‬
‫‪-1‬ﻳﻤﻜﻦ ﻋﺮض اآﺜﺮ ﻣﻦ رﺳﻢ ﻋﻠﻰ ‪ Chart‬وذﻟﻚ ﺑﺘﺠﻤﻴﻊ ﻗﻴﻢ وﺣﻴﺪة )‪ (Scalar Values‬ﺑﻮاﺳﻄﺔ داﻟﺔ‬
‫‪ Bundle‬اﻟﻤﻮﺟﻮدة ﻓﻰ‬
‫‪Function Palette>>Programming>> Cluster & Variant‬‬
‫وآﻞ ﻗﻴﻤﺔ ﺳﺘﻀﺎف آﻨﻘﻄﺔ ﻋﻠﻰ ‪ Chart‬ﻓﻰ رﺳﻢ ﻣﺴﺘﻘﻞ‪.‬‬

‫ﻣﺜﺎل ‪ :‬رﺳﻢ اآﺜﺮ ﻣﻦ رﺳﻢ ﻋﻠﻰ ‪ Chart‬ﺑﺎﺳﺘﺨﺪام ‪Loop‬‬

‫‪10‬‬
‫وﻟﻜﻰ ﻧﻀﻴﻒ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻨﻘﻂ ﻓﻰ آﻞ رﺳﻢ ﻣﺮة واﺣﺪة ﻳﻤﻜﻦ ان ﻧﻘﻮم ﺑﻌﻤﻞ ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Clusters‬وآﻞ‬
‫‪ Cluster‬ﻳﺤﺘﻮى ﻗﻴﻤﺔ ﻟﻨﻘﻄﺔ ﻓﻰ آﻞ رﺳﻢ‪.‬‬

‫وﻳﻤﻜﻦ ﻋﻤﻞ ‪ Cluster‬ﺑﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪ Bundle‬واﻳﻀﺎ ﻳﻤﻜﻦ ﺗﺠﻤﻴﻊ هﺬة ‪ Clusters‬ﻓﻰ ﻣﺼﻔﻮﻓﺔ ﺑﺎﺳﺘﺨﺪام‬
‫‪.Loops‬‬
‫ﻣﺜﺎل‪:‬‬

‫‪11‬‬
‫‪--2‬ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻤﺼﻔﻮﻓﺎت ذات اﻟﺒﻌﺪﻳﻦ ﻻﻇﻬﺎر اآﺜﺮ ﻣﻦ رﺳﻢ ﻋﻠﻰ ‪ Chart‬وذﻟﻚ ﺑﻮﺿﻊ ﻣﺠﻤﻮﻋﺔ ﻗﻴﻢ آﻞ‬
‫رﺳﻢ ﻓﻰ ﻋﻤﻮد ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ وﺳﻮف ﺗﻈﻬﺮ هﺬة اﻟﻨﻘﻂ ﻣﺮة واﺣﺪة ﻋﻠﻰ ‪.Chart‬‬

‫‪12‬‬
‫ﻣﺜﺎل‪:‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪:‬اذا اردﻧﺎ ﻋﻨﺪ ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺑـ ‪ Chart‬ان ﺗﺮﺳﻢ اﻟﺼﻔﻮف ﺑﺤﻴﺚ ﻳﻜﻮن آﻞ ﺻﻒ ﻓﻰ رﺳﻢ‬
‫ﻣﺴﺘﻘﻞ ﺑﺪﻻ ﻣﻦ اﻻﻋﻤﺪة ﻧﻠﻐﻰ اﺧﺘﻴﺎر ﺧﺎﺻﻴﺔ ‪ Transpose Array‬اﻟﺨﺎﺻﺔ ﺑـ ‪.Chart‬‬
‫وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Chart‬وﻧﻀﻐﻂ ﻋﻠﻰ ‪ Transpose Array‬ﻻزاﻟﺔ اﻟﺴﻬﻢ اﻟﻤﻮﺟﻮد‬
‫ﻋﻠﻰ اﻟﺨﺎﺻﻴﺔ وﻧﻌﻄﻞ اﻟﺨﺎﺻﻴﺔ‪.‬‬

‫‪13‬‬
‫ﻓﻔﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺳﻨﻠﻐﻰ ﺧﺎﺻﻴﺔ ‪ Transpose Array‬ﻟـ ‪ Chart‬وﻟﺬﻟﻚ ﺳﻨﺰﻳﻞ داﻟﺔ ‪Transpose 2D‬‬
‫‪ Array‬اﻟﺘﻰ ﺗﺤﻮل اﻟﺼﻔﻮف اﻟﻰ اﻋﻤﺪة‪.‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ وﻋﺮض ﻣﺠﻤﻮﻋﺔ ﻧﻘﻂ ﻋﻠﻰ ‪ Chart‬ﻓﺎﻧﻬﺎ ﻻ ﺗﻠﻐﻰ اﻟﻨﻘﻂ اﻟﻤﻮﺟﻮدة اﺻﻼ ﻋﻠﻰ‬
‫‪ Chart‬واﻧﻤﺎ ﺗﻀﺎف اﻟﻴﻬﺎ وهﻜﺬا‪ ...‬وﺳﻨﺮى ﺑﻌﺪ ﻗﻠﻴﻞ آﻴﻔﻴﺔ ﺣﺬف هﺬة اﻟﻨﻘﻂ‪.‬‬
‫وﻟﻠﺘﻮﺿﻴﺢ ﻓﻔﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻻول ﻣﺮة ﺗﻈﻬﺮ ﺛﻼث رﺳﻮﻣﺎت ﻓﻰ آﻞ رﺳﻢ ﺧﻤﺲ ﻧﻘﻂ وﻋﻨﺪ‬
‫ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻣﺮة اﺧﺮى ﺗﻀﺎف ﺧﻤﺲ ﻧﻘﻂ اﺧﺮى اﻟﻰ آﻞ رﺳﻢ وهﻜﺬا‪.‬‬

‫‪14‬‬
‫ﺧﺼﺎﺋﺺ ‪: Chart‬‬
‫ﻳﻮﺟﺪ ﻟـ ‪ Chart‬ﻋﺪة ﺧﺼﺎﺋﺺ و ﺳﻨﺴﺘﻌﺮض ﺑﻌﻀﻬﺎ‪.‬‬
‫‪: Digital Display‬‬
‫آﺄى ‪ Indicator‬رﻗﻤﻰ ﻳﻮﺟﺪ ﻟـ ‪ Digital Display - Chart‬ﻳﻌﺮض اﺧﺮ ﻗﻴﻤﺔ ﻇﻬﺮت ﻋﻠﻰ ‪. Chart‬‬

‫وﻳﻤﻜﻦ اﻇﻬﺎر او اﺧﻔﺎء ‪ Digital Display‬ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Chart‬واﻟﻀﻐﻂ ﻋﻠﻰ‬
‫‪Visible Items>>Digital Display‬‬

‫‪15‬‬
‫ﺷﺮﻳﻂ اﻧﺰﻻق ﻣﺤﻮر ‪: ( The X Scrollbar) X‬‬
‫ﻳﺤﺘﻮى ‪ Chart‬ﻋﻠﻰ ﺷﺮﻳﻂ اﻧﺰﻻق ﻋﻠﻰ ﻣﺤﻮر ‪ X‬ﻧﺴﺘﻄﻴﻊ ﺑﻪ اﺳﺘﻌﺮاض اﻟﻨﻘﻂ اﻟﻘﺪﻳﻤﺔ اﻟﺘﻰ ﻋﺮﺿﺖ ﻋﻠﻰ ‪Chart‬‬
‫وﻟﻴﺴﺖ ﻇﺎهﺮة‪.‬‬

‫وﻳﻤﻜﻦ اﻇﻬﺎر او اﺧﻔﺎء ﺷﺮﻳﻂ اﻻﻧﺰﻻق وذﻟﻚ ﻣﻦ ﺧﻼل اﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Chart‬واﺧﺘﻴﺎر او‬
‫اﻟﻐﺎء اﺧﺘﻴﺎر‬
‫‪Visible Items>>X Scrollbar‬‬

‫‪16‬‬
‫ﺣﺬف ﺟﻤﻴﻊ ﻧﻘﻂ ‪: (Clear Chart) Chart‬‬
‫آﻤﺎ ﻋﻠﻤﻨﺎ ان اى ﻧﻘﻂ ﻧﻌﺮﺿﻬﺎ ﻋﻠﻰ ‪ Chart‬ﺗﻀﺎف ﻋﻠﻰ اﻟﻨﻘﻂ اﻟﻘﺪﻳﻤﺔ اﻟﻤﻮﺟﻮدة ﻋﻠﻰ ‪.Chart‬‬
‫وﻟﺤﺬف ﺟﻴﻤﻊ اﻟﻨﻘﻂ ﻣﻦ ﻋﻠﻰ ‪) Chart‬اﻟﻘﺪﻳﻤﺔ واﻟﺤﺪﻳﺜﺔ(‪.‬‬
‫ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Chart‬وﻧﺨﺘﺎر‬
‫‪Data Operation >> Clear Chart‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬
‫آﻤﺎ ﻧﻌﻠﻢ اﻧﻪ ﻓﻰ اﺛﻨﺎء ﻋﺪم ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻬﻨﺎك ﺣﺎﻟﺘﻴﻦ او ﻧﻤﻄﻴﻦ ﻟﻠﻌﻤﻞ هﻤﺎ‬
‫‪ Run Mode‬و ‪Edit Mode‬‬
‫وﻓﻰ ‪ Edit Mode‬ﻧﺴﺘﻄﻴﻊ ان ﻧﻘﻮم ﺑﺠﻤﻴﻊ ﻋﻤﻠﻴﺎت ﺗﺤﺮﻳﺮ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﺿﺎﻓﺔ ‪ Controls‬ودوال و ﺗﻐﻴﻴﺮ اﺑﻌﺎد‬
‫وﻏﻴﺮهﺎ وذﻟﻚ ﻋﺎدة ﻳﻜﻮن اﺛﻨﺎء ﺗﺼﻤﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫وﻓﻰ ‪ Run Mode‬ﻻ ﻧﺴﺘﻄﻴﻊ ﻋﻤﻞ ﻣﻌﻈﻢ ﻋﻤﻠﻴﺎت اﻟﺘﺤﺮﻳﺮ وﻳﻜﻮن ‪ VI‬ﻓﻰ ﺣﺎﻟﺔ ﻣﺸﺎﺑﻬﺔ ﻟﺤﺎﻟﺘﻪ اﺛﻨﺎء اﻟﺘﻨﻔﻴﺬ وﻻ‬
‫ﻳﻤﻜﻦ اﻻﻧﺘﻘﺎل اﻟﻰ ﺣﺎﻟﺔ ‪ Run Mode‬اﻻ اذا آﺎﻧﺖ ‪ VI‬ﻗﺎﺑﻠﺔ ﻟﻠﺘﻨﻔﻴﺬ‪.‬‬
‫وﻳﻤﻜﻦ اﻻﻧﺘﻘﺎل ﻣﻦ ﺣﺎﻟﺔ ‪ Edit Mode‬اﻟﻰ ‪ Run Mode‬واﻟﻌﻜﺲ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪Ctrl+M‬‬
‫او ﻣﻦ اﻟﻘﺎﺋﻤﺔ‬
‫‪Operate>> Change to Run Mode‬‬

‫‪17‬‬
Edit Mode ‫اذا آﻨﺎ ﻓﻰ ﺣﺎﻟﺔ‬

‫او‬
Operate>> Change to Edit Mode
Run Mode ‫اذا آﻨﺎ ﻓﻰ ﺣﺎﻟﺔ‬

18
‫وﻳﻤﻜﻦ ﺣﺬف ﺟﻤﻴﻊ ﻧﻘﻂ ‪ Chart‬ﻓﻰ ‪ Run Mode‬وذﻟﻚ ﻣﻦ ﺧﻼل اﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس واﺧﺘﻴﺎر‬
‫‪ Clear Chart‬ﻣﺒﺎﺷﺮة‬

‫ﺣﺬف ﺟﻴﻤﻊ ﻧﻘﻂ ‪ Chart‬ﻣﻦ ﺧﻼل ‪: Block Diagram‬‬


‫آﻤﺎ ذآﺮﻧﺎ اﻧﻪ ﻋﻨﺪ اﻋﺎدة ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ وﻋﺮض ﻧﻘﻂ ﻋﻠﻰ ‪ Chart‬ﻓﺎﻧﻬﺎ ﺗﻀﺎف ﻋﻠﻰ اﻟﻨﻘﻂ اﻟﻘﺪﻳﻤﺔ‪.‬‬
‫وﻟﻜﻦ ﻓﻰ ﺑﻌﺾ اﻻﺣﻴﺎن ﺗﺤﺘﺎج ان ﺗﺠﻌﻞ ‪ Chart‬ﻓﺎرﻏﺔ ﻓﻰ آﻞ ﻣﺮة ﻳﺒﺪأ ﻓﻴﻬﺎ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ‪ .‬ﻟﺬﻟﻚ ﺗﺤﺘﺎج اﻟﻰ‬
‫ﻃﺮﻳﻘﺔ ﻟﺤﺬف ﺟﻤﻴﻊ ﻧﻘﻂ ‪ Chart‬ﻣﻦ ﺧﻼل ‪ Block Diagram‬ﻓﻰ ﺑﺪاﻳﺔ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬وﻳﻤﻜﻦ ﻋﻤﻞ ذﻟﻚ ﻣﻦ‬
‫ﺧﻼل ‪.Property Node‬‬
‫و‪ Property Node‬هﻰ ‪ Node‬ﺗﺘﻴﺢ ﻟﻨﺎ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺧﺼﺎﺋﺺ ﻣﻌﻴﻨﺔ ﻟﻠـ ‪ Controls‬او ‪ Indicators‬ﻓﻰ اى‬
‫ﺟﺰء ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ وذﻟﻚ ﺳﻮاء اﻟﻘﺮاءة ﻣﻦ هﺬة اﻟﺨﺼﺎﺋﺺ او اﻟﻜﺘﺎﺑﺔ ﻓﻴﻬﺎ‪.‬‬
‫وﻟﻠـ ‪ Chart‬ﺧﺎﺻﻴﺔ ‪ History Data‬وهﻰ ﺗﺤﺘﻮى ﻋﻠﻰ ﻣﺼﻔﻮﻓﺔ ﺟﻤﻴﻊ ﻗﻴﻢ اﻟﻨﻘﻂ اﻟﻤﻮﺟﻮدة ﻓﻰ ‪.Chart‬‬
‫وﻟﺠﻌﻞ ‪ Chart‬ﻓﺎرﻏﺔ وﺣﺬف ﺟﻴﻤﻊ اﻟﻨﻘﻂ اﻟﺘﻰ ﻋﻠﻴﻬﺎ ﻧﻘﻮم ﺑﺎدراج ‪ History Property Node‬وﻧﻘﻮم ﺑﺘﻮﺻﻴﻞ‬
‫ﻣﺼﻔﻮﻓﺔ ﻓﺎرﻏﺔ اﻟﻴﻬﺎ ‪.‬‬

‫‪19‬‬
‫وﻟﻌﻤﻞ ذﻟﻚ ﻧﺘﺒﻊ اﻟﺨﻄﻮات اﻻﺗﻴﺔ‬
‫‪ -1‬ﻧﻘﻮم ﺑﺎدراج ‪ History Property Node‬ﻟﻠـ ‪ Chart‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ ‪Terminal‬‬
‫اﻟﺨﺎص ﺑﺎﻟـ ‪ Chart‬ﻓﻰ ‪ Block Diagram‬واﺧﺘﻴﺎر‬
‫‪Crate>>Property Node>>History Data‬‬

‫‪20‬‬
‫‪ -2‬ﻧﺠﻌﻞ ‪ Property Node‬ﻟﻠﻜﺘﺎﺑﺔ ﺑﺪﻻ ﻣﻦ اﻟﻘﺮاءة وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس واﺧﺘﻴﺎر‬
‫‪Change to Write‬‬

‫‪ -3‬ﻧﻨﺸﺄ ﻣﺼﻔﻮﻓﺔ ﻓﺎرﻏﺔ وذﻟﻚ ﻣﻦ ﺧﻼل اﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪History Data Property‬‬
‫‪ Node‬واﺧﺘﻴﺎر‬
‫‪Create>>Constant‬‬

‫‪21‬‬
‫ﻣﺜﺎل ‪ :‬ﻳﻘﻮم هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﺑﺤﺬف ﺟﻤﻴﻊ اﻟﻨﻘﻂ اﻟﺘﻰ ﻋﻠﻰ ‪Chart‬ﻓﻰ ﺑﺪاﻳﺔ ﺗﻨﻔﻴﺬﻩ‬

‫‪: Stack and Overly Plots‬‬


‫ﻋﻨﺪ ﻋﺮض اآﺜﺮ رﺳﻢ ﻋﻠﻰ ‪ Chart‬ﻳﻤﻜﻦ ان ﻧﺠﻌﻞ اﻟﺮﺳﻮﻣﺎت ﻣﺸﺘﺮآﺔ ﻓﻰ ﻣﺤﻮر ‪ Y‬وﺗﺴﻤﻰ هﺬة اﻟﺤﺎﻟﺔ‬
‫‪.Overly Plots‬او ان ﻧﺠﻌﻞ ﻟﻜﻞ رﺳﻢ ﻣﺤﻮر ‪Y‬ﺧﺎص ﺑﻪ وﻣﺨﺘﻠﻒ ﻋﻦ اﻻﺧﺮﻳﻦ وﺗﺴﻤﻰ ﻓﻰ هﺬة اﻟﺤﺎﻟﺔ‬
‫‪.Stack Plots‬‬

‫واﻟﻮﺿﻊ اﻟﻄﺒﻴﻌﻰ او اﻻوﻟﻰ ﻟﻠﺮﺳﻮﻣﺎت اﻧﻬﻢ ﻣﺸﺘﺮآﻴﻦ ﻓﻰ ﻣﺤﻮر ‪.(Overlay Plots) Y‬‬
‫وﻳﻤﻜﻦ اﻟﺘﺒﺪﻳﻞ ﺑﻴﻨﻬﻢ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Chart‬و اﺧﺘﻴﺎر ‪ Stack plots‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ‬
‫‪ Overlay Plots‬اﻟﻰ ‪. Stack Plots‬‬

‫‪22‬‬
.Overlay Plots ‫ اﻟﻰ‬Stack Plots ‫ ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ‬Overlay Plots ‫او اﺧﺘﻴﺎر‬

23
‫اﺿﺎﻓﺔ اآﺜﺮ ﻣﻦ ﺗﺪرﻳﺞ )‪ (Scale‬ﻟﻤﺤﻮر ‪: Y‬‬
‫ﻓﻰ آﺜﻴﺮ ﻣﻦ اﻻﺣﻴﺎن ﻋﻨﺪ ﻋﺮض اآﺜﺮ ﻣﻦ رﺳﻢ ﻋﻠﻰ ‪ Chart‬ﺗﻜﻮن هﺬة اﻟﺮﺳﻮﻣﺎت ﺗﺨﺘﻠﻒ ﻓﻰ ﻣﺪى اﻻرﻗﺎم ﻣﻤﺎ‬
‫ﻳﺴﺘﺪﻋﻰ وﺿﻊ اآﺜﺮ ﻣﻦ ﺗﺪرﻳﺞ ﻟـ ‪.Y‬‬

‫وﻻﺿﺎﻓﺔ ﺗﺪرﻳﺞ ﻟﻤﺤﻮر ‪ Y‬ﻓﻰ ‪ Chart‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﺘﺪرﻳﺞ اﻟﻤﻮﺟﻮد ﻟﻤﺤﻮر ‪ Y‬وﻧﺨﺘﺎر‬
‫‪.Duplicate Scale‬‬

‫‪24‬‬
‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ ﻣﻜﺎن اﻟﺘﺪرﻳﺞ ﻣﻦ ﻳﺴﺎر ‪ Chart‬اﻟﻰ ﻳﻤﻴﻦ ‪ Chart‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﺘﺪرﻳﺞ‬
‫واﺧﺘﻴﺎر ‪.Swap Scale‬‬

‫‪25‬‬
‫وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻟﻜﻞ رﺳﻢ اﻟﺘﺪرﻳﺞ اﻟﺨﺎص ﺑﻪ وذﻟﻚ ﻣﻦ ﺧﻼل اﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Chart‬واﺧﺘﻴﺎر‬
‫‪) Properties‬ﻟﻔﺘﺢ ﺻﻔﺤﺔ ﺧﺼﺎﺋﺺ ‪ (Chart‬واﺧﺘﻴﺎر ﺻﻔﺤﺔ اﻟﺮﺳﻮﻣﺎت ‪.Plots‬‬

‫‪26‬‬
‫ﻣﻠﺤﻮﻇﺎت‪:‬‬
‫• اذا آﺎن ﻟﻤﺤﻮر ‪ Y‬اآﺜﺮ ﻣﻦ ﺗﺪرﻳﺞ ﻓﻴﻤﻜﻦ ﺣﺬف اى ﺗﺪرﻳﺞ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ‬
‫اﻟﺘﺪرﻳﺞ واﺧﺘﻴﺎر ‪.Delete‬‬

‫• ﻳﻤﻜﻦ ارﺟﺎع آﻞ اﻟﺘﺪرﻳﺠﺎت اﻟﻰ ﻳﺴﺎر ‪ Chart‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠـ ‪ Chart‬واﺧﺘﻴﺎر‬
‫‪Advanced>>Reset Scale Layout‬‬

‫‪27‬‬
‫• ﻻ ﻳﻤﻜﻦ اﺿﺎﻓﺔ اى ﺗﺪرﻳﺠﺎت اﺿﺎﻓﻴﺔ اﻟﻰ ﻣﺤﻮر ‪ X‬ﻓﻬﻮ ﺗﺪرﻳﺞ وﺣﻴﺪ ﻟﻤﺤﻮر ‪.X‬‬
‫ﺳﻌﺔ ‪: Chart History‬‬
‫ﻋﻨﺪ ادراج ‪ Chart‬ﻓﺎن ﺳﻌﺘﻪ هﻰ ‪ 1024‬ﻧﻘﻄﺔ اى ان ﻋﺪد اﻟﻨﻘﻂ اﻟﺘﻰ ﻳﻤﻜﻦ ان ﻳﺤﺘﻔﻆ ﺑﻘﻴﻤﻬﺎ وﻳﻤﻜﻦ ان‬
‫ﺗﺴﺘﻌﺮﺿﻬﺎ ﻋﻠﻰ ‪).Chart‬ﻣﻠﺤﻮﻇﺔ ﻟﻴﺲ ﻣﻌﻨﻰ ذﻟﻚ اﻧﻚ ﻟﻦ ﺗﺴﺘﻄﻴﻊ ان ﺗﻀﻴﻒ ﻧﻘﻂ ﺟﺪﻳﺪة وﻟﻜﻦ ﻋﻨﺪ اﺿﺎﻓﺔ ﻧﻘﻂ‬
‫ﺟﺪﻳﺪة ﺳﺘﺤﺬف اﻗﺪم اﻟﻨﻘﻂ ( ‪.‬‬
‫وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﺳﻌﺔ ‪ Chart‬ﺑﻘﻴﻤﺔ اﺧﺮى ﻣﻦ ‪ 10‬اﻟﻰ ‪ 2,147,483,647‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ Chart‬واﺧﺘﻴﺎر‬
‫‪ Chart History Length‬ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﻧﺤﺪد ﻓﻴﻬﺎ ﺳﻌﺔ ‪.Chart‬‬

‫‪28‬‬
‫ﻣﻠﺤﻮﻇﺔ‪ :‬ﻻ ﺗﺤﺪد ﺳﻌﺔ ‪ Chart‬ﻋﺪد اﻟﻨﻘﻂ اﻟﺘﻰ ﺗﻈﻬﺮ ﻋﻠﻰ ﺷﺎﺷﺔ ‪ Chart‬واﻧﻤﺎ آﻠﻤﺎ آﺒﺮت ﺳﻌﺔ ‪ Chart‬آﻠﻤﺎ آﺒﺮ‬
‫ﻋﺪد اﻟﻨﻘﻂ اﻟﻘﺪﻳﻤﺔ اﻟﺘﻰ ﻳﺤﺘﻔﻆ ﺑﻬﺎ ‪ Chart‬واﻟﺘﻰ ﻳﻤﻜﻦ اﺳﺘﻌﺮاﺿﻬﺎ ﺑﻮاﺳﻄﺔ ﺷﺮﻳﻂ اﻻﻧﺰﻻق‪.‬‬

‫‪29‬‬
‫‪Graphs‬‬
‫ﺗﺮﺳﻢ ‪ Graphs‬اﻟﺒﻴﺎﻧﺎت اﻟﺠﺎهﺰة ﻓﻰ ﻣﺼﻔﻮﻓﺔ وﺗﻘﻮم ﺑﺮﺳﻢ اﻟﺒﻴﺎﻧﺎت ﻣﺮة واﺣﺪ وﻻ ﻳﻤﻜﻦ اﺿﺎﻓﺔ اى ﺑﻴﺎﻧﺎت اﺧﺮى‬
‫اﻟﻰ اﻟﺮﺳﻢ اﻻ ﺑﺎﻋﺎدة اﻟﺮﺳﻢ وذﻟﻚ ﻋﻜﺲ ‪.Charts‬‬
‫وﺗﻮﺟﺪ اﻧﻮاﻋﻰ آﺜﻴﺮة ﻣﻦ ‪ Graphs‬ﻣﺜﻞ ‪ Waveform Graphs‬و ‪ XY Graphs‬و ‪Intensity‬‬
‫‪ Graphs‬و ‪ 3D Graphs‬و ‪ Digital Waveform Graphs‬واﻧﻮاع اﺧﺮى ﺧﺎﺻﺔ‪.‬‬
‫وﺳﻮف ﻧﺘﻌﺮف ﺑﺎﻟﺘﻔﺼﻴﻞ ‪ Waveform Graph‬و ‪ XY Graphs‬ﻓﻰ هﺬا اﻟﺠﺰء واﻳﻀﺎ ﺳﻨﺘﻌﺮف ﻋﻠﻰ‬
‫‪ Intensity Graphs‬و ‪ 3D Graphs‬و‪ Mixed Signal Graphs‬ﻓﻰ هﺬا اﻟﺪرس‪.‬‬

‫‪30‬‬
‫‪Waveform Graphs‬‬

‫ﺗﻘﻮم ‪ Waveform Graphs‬ﺑﺮﺳﻢ ﺑﻴﺎﻧﺎت ﻋﻠﻰ ﻣﺤﻮر ‪ Y‬وﻗﻴﻢ ‪ X‬ﻟﻬﺬة اﻟﺒﻴﺎﻧﺎت ﺗﺒﺪأ ﻣﻦ رﻗﻢ ﻣﻌﻴﻦ وﺗﺰداد‬
‫ﺑﻘﻴﻤﺔ ﺛﺎﺑﺘﻪ اى ان اﻟﻔﺮق ﺑﻴﻦ ﻗﻴﻢ ‪ X‬ﺛﺎﺑﺖ )ﻣﺜﻼ ‪ 4,3,2,1,0‬او ‪ (20,15,10,5,0‬اى ان اﻟﻤﺴﺎﻓﺔ ﺑﻴﻦ‬
‫اﻟﻨﻘﻂ اﻟﻤﺮﺳﻮﻣﺔ ﻋﻠﻰ ﻣﺤﻮر ‪ X‬ﺳﺘﻜﻮن ﻣﺘﺴﺎوﻳﺔ‪.‬‬
‫وﻓﻰ ‪ Graph‬ﻟﻜﻞ ﻗﻴﻤﺔ ‪ X‬ﻗﻴﻤﺔ واﺣﺪة ﻓﻘﻂ ‪.Y‬‬

‫ادارج ‪: Waveform Graph‬‬


‫ﻳﺘﻢ ادراج ‪ Waveform Graph‬ﻓﻰ ‪ Front Panel‬ﻣﻦ‬
‫‪Controls Palette>>Modern>>Graphs‬‬

‫‪31‬‬
‫وآﺄى ‪ Indicator‬ﺑﻤﺠﺮد ادراﺟﻪ ﻓﻰ ‪ Front Panel‬ﻳﻈﻬﺮ ﻟﻪ ‪ Terminal‬ﻓﻰ ‪.Block Diagram‬‬

‫آﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻰ ‪: Graph‬‬


‫‪ Waveform Graph‬ﻳﺤﺘﻮى ﻋﻠﻰ رﺳﻢ واﺣﺪ ‪:‬‬
‫‪ -1‬اﺑﺴﻂ اﻟﻄﺮق ﻟﻠﺮﺳﻢ ﻋﻠﻰ ‪ Waveform Graph‬هﻰ ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺔ اﻟﻰ ‪Waveform‬‬
‫‪ Graph Terminal‬ﻣﺒﺎﺷﺮة‪.‬وﻗﻴﻢ اﻟﻤﺼﻔﻮﻓﺔ ﺳﺘﻜﻮن هﻰ ﻗﻴﻢ ‪ Y‬اﻣﺎ ﻗﻴﻢ ‪ X‬ﻓﺴﺘﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ‬
‫وﺗﺰداد واﺣﺪ ﻟﻜﻞ ﻗﻴﻤﺔ ‪ Y‬ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬
‫اى ان ‪) X0‬اول ﻗﻴﻤﺔ ﻓﻰ ﻗﻴﻢ ‪ 0=(X‬و‪) dX‬ﻗﻴﻤﺔ اﻟﺰﻳﺎدة ﻓﻰ ﻗﻴﻢ ‪1= (X‬‬

‫‪32‬‬
‫ﻣﺜﺎل ‪:‬‬
‫ﺗﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺑﺎﺳﺘﺨﺪام ‪ For Loop‬ﺑﺎﺳﺘﺨﺪام ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ورﺳﻢ‬
‫اﻟﻤﺼﻔﻮﻓﺔ اﻟﻤﺘﻜﻮﻧﺔ ﻋﻠﻰ ‪.Waveform Graph‬‬

‫ﻓﻰ آﺜﻴﺮ ﻣﻦ اﻻﺣﻴﺎن ﻧﺤﺘﺎج ﻟﺘﻐﻴﻴﺮ اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺗﺒﺪأ ﺑﻬﺎ ‪ X‬وﻣﻘﺪار اﻟﺰﻳﺎدة ﻟﻘﻴﻢ ‪. X‬‬
‫اى ﻧﺠﻌﻞ ﻗﻴﻤﺔ ‪ X0‬ﺑﻘﻴﻤﺔ ﻏﻴﺮ اﻟﺼﻔﺮ واﻳﻀﺎ ان ﻧﺠﻌﻞ ‪ dX‬ﺑﻘﻴﻤﺔ ﻏﻴﺮ ‪.1‬‬
‫ﻳﻤﻜﻦ ﻋﻤﻞ ذﻟﻚ ﺑﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪ . Bundle‬وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﻧﺠﻌﻞ ﻟﺪاﻟﺔ ‪ Bundle‬ﺛﻼث ﻣﺪاﺧﻞ‬
‫اﻻول ‪ :‬ﻗﻴﻤﺔ ‪) X0‬اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺗﺒﺪأ ﺑﻬﺎ ﻗﻴﻢ ‪.(X‬‬
‫اﻟﺜﺎﻧﻰ ‪ :‬ﻗﻴﻤﺔ ‪) dX‬ﻣﻘﺪار اﻟﺰﻳﺎدة ﻓﻰ ﻗﻴﻤﺔ ‪ X‬ﻟﻜﻞ ﻗﻴﻤﺔ ‪.(Y‬‬
‫اﻟﺜﺎﻟﺚ ‪ :‬اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ اﻟﺘﻰ ﻧﺮﻳﺪ رﺳﻤﻬﺎ )ﻗﻴﻢ ‪.(Y‬‬

‫وﻣﺨﺮج اﻟﺪاﻟﺔ ﻳﻮﺻﻞ اﻟﻰ ‪.Waveform Graph Terminal‬‬


‫وﻳﺘﻢ ادراج داﻟﺔ ‪ Bundle‬ﻣﻦ‬
‫‪Function Palette>>Programming>>Cluster & Variant‬‬

‫‪33‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻟﻤﻌﻠﻮﻣﺎت اآﺜﺮ ﻋﻦ داﻟﺔ ‪ Bundle‬ﻋﻠﻴﻚ ﺑﺎﻻﻃﻼع ﻋﻠﻰ اﻟﺪرس اﻟﺴﺎﺑﻖ ‪Arrays and‬‬
‫‪Clusters‬‬
‫وهﺬا هﻮ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ وﻟﻜﻦ ﺑﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪.Bundle‬‬

‫‪34‬‬
‫وﻳﻤﻜﻨﻨﺎ ﺗﻐﻴﻴﺮ ﻗﻴﻤﺔ ‪ X0‬و‪dX‬‬
‫ﻣﺜﺎل ‪ 100=X0 :‬و ‪5=dX‬‬

‫وآﻤﺜﺎل ﻋﻤﻠﻰ ‪ :‬ﻟﻮ اﻧﻚ ﺗﻘﻴﺲ درﺟﺎت اﻟﺤﺮارة آﻞ ﺧﻤﺲ ﺛﻮاﻧﻰ ﻓﺎﻧﻚ ﺑﻌﺪ اﻧﺘﻬﺎء اﻟﻘﻴﺎس واﻟﺤﺼﻮل ﻋﻠﻰ‬
‫ﻣﺼﻔﻮﻓﺔ ﺑﻬﺎ ﻗﻴﻢ درﺟﺎت اﻟﺤﺮارة وﺗﺮﺳﻤﻬﺎ ﻋﻠﻰ ‪ Waveform Graph‬ﻓﺘﺠﻌﻞ ‪ 5= dX‬اى ﺑﻴﻦ آﻞ‬
‫ﻗﺮاءة واﺧﺮى ‪ 5‬ﺛﻮاﻧﻰ‪.‬‬
‫‪ Waveform Graph‬ﻳﺤﺘﻮى ﻋﻠﻰ اآﺜﺮ ﻣﻦ رﺳﻢ ‪:‬‬
‫ﻟﺮﺳﻢ اآﺜﺮﻣﻦ رﺳﻢ ﻣﺴﺘﻘﻞ ﻋﻠﻰ ‪ Waveform Graph‬ﻧﻘﻮم ﺑﺘﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ وآﻞ ﺻﻒ ﻓﻰ‬
‫هﺬة اﻟﻤﺼﻔﻮﻓﺔ ﻳﺘﻢ رﺳﻤﻪ ﻓﻰ رﺳﻢ ﻣﺴﺘﻘﻞ ‪.‬وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﺗﻜﻮن ‪ X0=0‬و ‪.dX=1‬‬

‫‪35‬‬
‫وﻳﻤﻜﻦ ﺗﺠﻤﻴﻊ اآﺜﺮ ﻣﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﻋﻠﻰ هﻴﺌﺔ ﺻﻔﻮف ﻓﻰ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺑﺎﺳﺘﺨﺪام داﻟﺔ‬
‫‪.Build Array‬‬

‫ﻟﺘﻐﻴﻴﺮ ﻗﻴﻤﺔ ‪) X0‬ﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺗﺒﺪأ ﺑﻬﺎ ﻗﻴﻢ ‪ (X‬و ‪) dX‬ﻗﻴﻤﺔ اﻟﺰﻳﺎدة ﻓﻰ ﻗﻴﻢ ‪ (X‬ﻟﻜﻞ رﺳﻢ‪.‬‬
‫ﻧﺴﺘﺨﺪم داﻟﺔ ‪ Bundle‬ﻣﻊ آﻞ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺛﻢ ﻧﻘﻮم ﺑﺘﺠﻤﻴﻌﻢ ﺑﺪاﻟﺔ ‪.Build Array‬‬

‫‪36‬‬
‫‪XY Graphs‬‬
‫ﺗﻘﻮم ‪ XY Graphs‬ﺑﺮﺳﻢ ﻋﻼﻗﺔ ﺑﻴﻦ ﻗﻴﻢ ‪ X‬و‪. Y‬ﻓﻠﺮﺳﻢ اى ﻧﻘﻄﺔ ﻳﺠﺐ ﺗﺤﺪﻳﺪ ﻟﻬﺎ ﻗﻴﻤﺔ ‪ X‬و ‪.Y‬‬
‫و‪ XY Graph‬ﻣﺜﻞ ‪ Waveform Graph‬ﻓﻰ اﻧﻪ ﻳﺘﻢ اﻟﺮﺳﻢ ﻣﺮة واﺣﺪة وﻻ ﻳﺘﻢ اﺿﺎﻓﺔ اى ﻧﻘﻂ اﻻ ﺑﺎﻋﺎدة اﻟﺮﺳﻢ‪.‬‬

‫وﻳﺘﻢ ادراج ‪ XY Graph‬ﻣﻦ‬


‫‪Controls Palette>>Modern>>Graphs‬‬

‫‪37‬‬
‫وﻣﺜﻞ ‪ Charts‬و‪ Waveform Graphs‬ﻳﻤﻜﻦ ان ﻳﺤﺘﻮى ‪ XY Graph‬ﻋﻠﻰ رﺳﻢ واﺣﺪ او اآﺜﺮ ﻣﻦ‬
‫رﺳﻢ‪.‬‬
‫آﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻰ ‪: XY Graph‬‬
‫‪ XY Graph -1‬ﻳﺤﺘﻮى ﻋﻠﻰ رﺳﻢ واﺣﺪ ‪:‬‬
‫‪ (a‬ﺑﺠﻤﻊ ﻣﺼﻔﻮﻓﺔ ﻗﻴﻢ ‪ X‬وﻣﺼﻔﻮﻓﺔ ﻗﻴﻢ ‪ Y‬ﺑﻮاﺳﻄﺔ اﻟﺪاﻟﺔ ‪.Bundle‬‬
‫وﻣﺼﻔﻮﻓﺔ ‪ X‬او ‪ Y‬ﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ذات ﺑﻌﺪ واﺣﺪ‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻳﺘﻢ ادراج داﻟﺔ ‪ Bundle‬ﻣﻦ‬
‫‪Function Palette>Programming>>Cluster & Variant‬‬

‫ﻣﺜﺎل ‪:‬‬

‫‪38‬‬
‫‪ (b‬ﺗﺠﻤﻴﻊ آﻞ ﻗﻴﻤﺔ ﻣﻦ ﻗﻴﻢ ‪ X‬ﻣﻊ اﻟﻘﻴﻤﺔ اﻟﻤﻘﺎﺑﻠﺔ ﻟﻬﺎ ﻣﻦ ‪ Y‬ﻓﻰ ‪ Cluster‬ﺑﻮاﺳﻄﺔ اﻟﺪاﻟﺔ ‪Bundle‬‬
‫ﺛﻢ ﻋﻤﻞ ﻣﺼﻔﻮﻓﺔ ﻣﻦ هﺬة ‪.Clusters‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪39‬‬
‫‪ XY Graph -2‬ﻳﺤﺘﻮى ﻋﻠﻰ آﺜﺮ ﻣﻦ رﺳﻢ ‪:‬‬
‫ﻟﻌﺮض اآﺜﺮ ﻣﻦ رﺳﻢ ﻋﻠﻰ ‪ XY Graph‬ﻧﻘﻮم ﺑﺘﺠﻤﻴﻊ ﻣﺼﻔﻮﻓﺔ ‪ X‬ﻣﻊ ﻣﺼﻔﻮﻓﺔ ‪ Y‬ﻟﻜﻞ رﺳﻢ ﺑﻮاﺳﻄﺔ اﻟﺪاﻟﺔ‬
‫‪ Bundle‬آﻤﺎ ﻓﻰ ﻃﺮﻳﻘﺔ ﻋﻤﻞ رﺳﻢ واﺣﺪ ﺛﻢ ﻧﻘﻮم ﺑﺘﺠﻤﻴﻊ ‪ Clusters‬اﻟﻨﺎﺗﺠﺔ )اﻟﺮﺳﻮﻣﺎت( ﺑﻮاﺳﻄﺔ اﻟﺪاﻟﺔ‬
‫‪.Build Array‬‬
‫ﻣﺜﺎل‪:‬‬

‫اﺳﺘﺨﺪام اﻧﻮاع ﻣﺨﺘﻠﻔﺔ ﻣﻦ ‪ Planes‬ﻓﻰ ‪: XY Graph‬‬


‫ﺗﻮﺟﺪ ﻓﻰ ‪ XY Graph‬ﺧﻄﻮط ﻃﻮﻟﻴﺔ وﻋﺮﺿﻴﺔ )‪(Grid Lines‬‬
‫وﺗﻮﺟﺪ ﻓﻰ ‪ XY Graph‬ﺧﻄﻮط اﺧﺮى ﺧﺎﺻﺔ ﺗﺴﻤﻰ ‪ Planes‬ﻣﺜﻞ ‪ Nyquist‬و‪S Plane‬‬
‫و ‪.Z Plane‬وهﺬة ‪ Planes‬ﻣﻔﻴﺪة ﺟﺪا ﻓﻰ ﺑﻌﺾ اﻟﻘﻴﺎﺳﺎت ﻣﺜﻞ ﻗﻴﺎﺳﺎت )‪Radio Frequency (RF‬‬
‫و اﻟﺼﻮﺗﻴﺎت و اﻟﻘﻴﺎﺳﺎت اﻟﺘﻰ ﺗﻌﺘﻤﺪ ﻋﻠﻰ اﻟﺘﺮدد وﻟﻴﺲ اﻟﺰﻣﻦ‪.‬‬

‫‪40‬‬
‫وﻳﺘﻢ ﺗﺤﺪﻳﺪ هﺬة ‪ Planes‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪ XY Graph‬ﺑﺎﻟﺰر اﻻﻳﻤﻦ واﺧﺘﻴﺎر ‪ Option Planes‬ﺛﻢ ﻧﺨﺘﺎر‬
‫او ﻧﻠﻐﻰ اﺧﺘﻴﺎر ‪ Plane‬اﻟﺬى ﻧﺮﻳﺪﻩ اﻇﻬﺎرﻩ او اﺧﻔﺎءﻩ‪.‬‬

‫‪41‬‬
42
‫ﻣﻜﻮﻧﺎت ‪ Charts‬و‪Graphs‬‬
‫ﺗﺤﺘﻮى ‪ Charts‬و‪ Graphs‬ﻋﻠﻰ ﻣﻜﻮﻧﺎت وﺧﺼﺎﺋﺺ آﺜﻴﺮة ‪ .‬وﺑﻮﺳﻄﺔ هﺬة اﻟﻤﻜﻮﻧﺎت ﻧﺴﺘﻄﻴﻊ ﺗﻬﻴﺌﺔ‬
‫‪ Charts‬و ‪ Graphs‬ﺑﺎﻟﺸﻜﻞ اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬
‫وﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻰ اهﻢ هﺬة اﻟﺨﺼﺎﺋﺺ واﻟﻤﻜﻮﻧﺎت‪.‬‬

‫ﺧﺼﺎﺋﺺ اﻟﺘﺪرﻳﺞ )‪: (Scales‬‬


‫ﺗﻮﺟﺪ ﻋﺪة ﺧﺼﺎﺋﺺ ﻟﺘﺪرﻳﺞ ﻣﺤﻮر ‪ X‬او ﻣﺤﻮر ‪.Y‬‬
‫وﻳﻤﻜﻦ اﻟﻮﺻﻮل ﻟﺘﻠﻚ اﻟﺨﺼﺎﺋﺺ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Chart‬او ‪ Graph‬وﻧﺨﺘﺎر‬
‫‪ X Scale‬او ‪ Y Scale‬ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻗﺎﺋﻤﺔ ﺧﺼﺎﺋﺺ ﺗﺪرﻳﺞ ﻣﺤﻮر ‪ X‬او ﻣﺤﻮر ‪.Y‬‬

‫‪43‬‬
‫وﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﺘﺪرﻳﺞ ﻣﺒﺎﺷﺮة ﺗﻈﻬﺮ ﻟﻨﺎ هﺬة اﻟﻘﺎﺋﻤﺔ ﻣﺒﺎﺷﺮة‪.‬‬

‫‪44‬‬
‫ﺧﺎﺻﻴﺔ ‪: AutoScale‬‬

‫ﺗﻔﻌﻴﻞ هﺬة اﻟﺨﺎﺻﻴﺔ ﺗﺠﻌﻞ اﻟﻘﻴﻤﺔ اﻟﺼﻐﺮى واﻟﻘﻴﻤﺔ اﻟﻜﺒﺮى ﻟﻠﺘﺪرﻳﺞ ﺗﺘﻐﻴﺮﺗﻠﻘﺎﺋﻴﺎ ﺑﺤﻴﺚ ﻳﻜﻮن ﻣﺪى اﻟﺘﺪرﻳﺞ‬
‫هﻮ ﻣﺪى ﻗﻴﻢ اﻟﻨﻘﻂ اﻟﻤﻮﺟﻮدة ﻓﻰ ‪ Chart‬او ‪ Graph‬ﺑﺤﻴﺚ ﻳﺘﻢ اﻇﻬﺎر اﻟﻨﻘﻂ آﻠﻬﺎ ﺑﺎﻓﻀﻞ دﻗﺔ‪.‬‬
‫وآﻤﺜﺎل ﻟﻮ ان ﻣﺪى ﻗﻴﻢ ‪ Y‬ﻟﺠﻤﻴﻊ اﻟﻨﻘﻂ ﻣﻦ ‪ 0‬اﻟﻰ ‪ 1‬ﻓﺎن ﺗﺪرﻳﺞ ﻣﺤﻮر ‪ Y‬ﻳﺎﺧﺬ اﻟﻘﻴﻢ ﻣﻦ ‪ 0‬اﻟﻰ ‪ 1‬ﻓﻰ‬
‫ﺣﺎﻟﺔ ﺗﻔﻌﻴﻞ ‪ AutoScale‬ﻟﻤﺤﻮر ‪.Y‬‬

‫‪45‬‬
‫وﺧﺎﺻﻴﺔ ‪ AutoScale‬ﻣﻔﻌﻠﺔ ﺗﻠﻘﺎﺋﻴﺎ ﻓﻰ ‪ Graphs‬وﻏﻴﺮ ﻣﻔﻌﻠﺔ ﺗﻠﻘﺎﺋﻴﺎ ﻓﻰ ‪.Chart‬‬
‫وﻳﻤﻜﻦ ان ﺗﺆدى ﺧﺎﺻﻴﺔ ‪ AutoScale‬اﻟﻰ ﺑﻄﻰء ﻓﻰ ﺗﺤﺪﻳﺚ اﻟﻨﻘﻂ ﻋﻠﻰ ‪ Chart‬او ‪ Graph‬وذﻟﻚ‬
‫ﻻﻧﻬﺎ ﺗﺤﺘﺎج اﻟﻰ اﻋﺎدة ﺣﺴﺎب اﻟﺘﺪرﻳﺞ وﺗﻌﺪﻳﻠﻪ ﺑﺤﻴﺚ ﻳﻨﺎﺳﺐ اﻟﺘﺤﺪﻳﺚ‪.‬‬
‫وﻋﻨﺪ ﻋﺪم ﺗﻔﻌﻴﻞ او ﺗﻌﻄﻴﻞ ﺧﺎﺻﻴﺔ ‪ AutoScale‬ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ اﻟﺘﺪرﻳﺞ ﻟﻤﺤﻮر ‪ X‬او ﻣﺤﻮر ‪ Y‬وذﻟﻚ‬
‫ﺑﺎﺳﺘﺨﺪام اﻻداة ‪ Operating‬او اﻻداة ‪ Labeling‬ﻟﻜﺘﺎﺑﺔ اﻟﻘﻴﻢ اﻟﺠﺪﻳﺪة ‪ .‬وﻋﺎدة ﻳﺘﻢ ذﻟﻚ ﺑﻜﺘﺎﺑﺔ اﻟﻘﻴﻤﺔ‬
‫اﻟﺼﻐﺮى ﻟﻠﺘﺪرﻳﺞ او اﻟﻘﻴﻤﺔ اﻟﻜﺒﺮى ﻟﻠﺘﺪرﻳﺞ‪.‬‬

‫ﺧﺎﺻﻴﺔ ‪: Loose Fit‬‬

‫‪46‬‬
‫ﺗﺆدى هﺬة اﻟﺨﺎﺻﻴﺔ اﻟﻰ ان اﻟﻘﻴﻢ اﻟﺼﻐﺮى واﻟﻜﺒﺮى ﻟﻠﺘﺪرﻳﺞ ﺗﺄﺧﺬ ﻣﻀﺎﻋﺎﻓﺎت اﻟﺰﻳﺎدة ﻓﻰ اﻟﺘﺪرﻳﺞ‪.‬‬
‫ﻓﻤﺜﻼ ﻟﻮ ان اﻟﺰﻳﺎدة ﻓﻰ اﻟﺘﺪرﻳﺞ ﺗﺴﺎوى ‪) 10‬اى ان اﻟﺘﺪرﻳﺞ آﻞ ‪ (10‬ﻓﺎن اﻟﻘﻴﻤﺔ اﻟﺼﻐﺮى و اﻟﻘﻴﻤﺔ‬
‫اﻟﻜﺒﺮى ﻟﻠﺘﺪرﻳﺞ ﺗﺴﺎوى ﻣﻀﺎﻋﻔﺎت ‪.10‬‬

‫اﻻﺧﺘﻴﺎر ‪: Formatting‬‬

‫‪47‬‬
‫ﻋﻨﺪ اﺧﺘﻴﺎر اﻻﺧﺘﻴﺎر ‪ Formatting‬ﺗﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﺧﺼﺎﺋﺺ ‪ Graph‬او ‪ Chart‬ﻋﻠﻰ ﺻﻔﺤﺔ‬
‫‪ Format and Precision‬وﻣﻦ ﺧﻼل هﺬة اﻟﺼﻔﺤﺔ ﻧﺴﺘﻄﻴﻊ ﺿﺒﻂ اﻻرﻗﺎم اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻰ اﻟﺘﺪرﻳﺞ‬
‫ﻣﻦ ﺣﻴﺚ اﻟﻨﻮع و ﻋﺪد اﻻرﻗﺎم اﻟﻌﺸﺮﻳﺔ‪.‬‬

‫وﺗﻮﺟﺪ ﺻﻔﺤﺔ اﺧﺮى ﺑﺘﻔﺲ اﻟﻨﺎﻓﺬة وهﻰ ﺻﻔﺤﺔ ‪.Scales‬‬

‫‪48‬‬
‫وهﺬة اﻟﺼﻔﺤﺔ ﺑﻬﺎ ﻋﺪة ﺧﺼﺎﺋﺺ ﻟﻠﺘﺪرﻳﺞ ﻳﻤﻜﻦ ﺗﻌﺪﻳﻠﻬﺎ وهﺬة اﻟﺨﺼﺎﺋﺺ هﻰ ‪:‬‬

‫‪ : Name‬اﻻﺳﻢ اﻟﺬى ﻳﻈﻬﺮ ﻋﻠﻰ اﻟﺘﺪرﻳﺞ )‪.(Scale Label‬‬

‫‪ :Show Scale Label‬ﻻﻇﻬﺎر او اﺧﻔﺎء اﻻﺳﻢ اﻟﺬى ﻳﻈﻬﺮ ﻋﻠﻰ اﻟﺘﺪرﻳﺞ ‪.Scale Label‬‬

‫‪49‬‬
‫‪ : Show Scale‬ﻻﻇﻬﺎر او اﺧﻔﺎء اﻟﺘﺪرﻳﺞ ‪.‬‬

‫‪ : Log‬ﻟﺠﻌﻞ اﻟﺘﺪرﻳﺞ ﻟﻮﻏﺎرﻳﺘﻤﻰ )‪. (Logarithmic‬‬

‫‪50‬‬
‫‪ : Inverted‬ﻟﻌﻜﺲ اﻟﺘﺪرﻳﺞ ﺑﺤﻴﺚ ﺗﻜﻮن اﻟﻘﻴﻤﺔ اﻟﻌﻈﻤﻰ ﻋﻠﻰ اﻟﻴﺴﺎر واﻟﻘﻴﻤﺔ اﻟﺼﻐﺮى ﻋﻠﻰ اﻟﻴﻤﻴﻦ‬
‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻤﺤﻮر ‪ X‬او ان ﺗﻜﻮن اﻟﻘﻴﻤﺔ اﻟﻌﻈﻤﻰ ﻻﺳﻔﻞ واﻟﻘﻴﻤﺔ اﻟﺼﻐﺮى ﻻﻋﻠﻰ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻤﺤﻮر ‪.Y‬‬

‫‪ : AutoScale‬ﻟﺘﻔﻌﻴﻞ او ﺗﻌﻄﻴﻞ ﺧﺎﺻﻴﺔ ‪ AutoScale‬ﻟﻠﺘﺪرﻳﺞ ‪.‬‬

‫‪:The Scale Style and Colors‬‬


‫ﻳﺘﻢ ﺗﺤﺪد ﺷﻜﻞ ‪ Major Ticks‬و ‪ Minor Ticks‬و اﻳﻀﺎ اﻟﻮان آﻞ ﻣﻦ ‪ Major Ticks‬و ‪Minor‬‬
‫‪ Ticks‬و ‪.Marker text‬‬

‫‪51‬‬
52
‫‪:The Grid Style and Colors‬‬
‫ﻟﺘﺤﺪﻳﺪ ﺷﻜﻞ واﻟﻮان ‪ . Grid Lines‬و‪ Gird Lines‬هﻰ اﻟﺨﻄﻮط اﻟﻄﻮﻟﻴﺔ واﻟﻌﺮﺿﻴﺔ اﻟﺘﻰ ﺗﻈﻬﺮ ﻓﻰ‬
‫‪ Chart‬وهﻰ ﻣﺜﻞ ﺧﻄﻮط اﻟﺮﺳﻢ اﻟﺒﻴﺎﻧﻰ وﺧﻄﻮط ‪ Grid Lines‬اﻟﺘﻰ ﺗﻈﻬﺮ ﻋﻨﺪ ‪Major Ticks‬‬
‫ﺗﺴﻤﻰ ‪ Major Grid‬و‪Grid Lines‬اﻟﺘﻰ ﺗﻈﻬﺮ ﻋﻨﺪ ‪ Minor Ticks‬ﺗﺴﻤﻰ ‪ .Minor Grid‬وﻳﻤﻜﻦ‬
‫اﺧﺘﻴﺎر اى ﻣﻦ هﺬة اﻟﺨﻄﻮط اﻟﺘﻰ ﺗﻈﻬﺮ او اﺧﻔﺎؤهﺎ ﺟﻤﻴﻌﺎ‪ .‬واﻳﻀﺎ ﻳﻤﻜﻦ اﺧﺘﻴﺎر ﻟﻮن هﺬة اﻟﺨﻄﻮط‪.‬‬

‫‪53‬‬
‫‪:Scaling Factors‬‬
‫ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﻳﺒﺪأ ﻋﻨﺪهﺎ ﺗﺪرﻳﺞ ﻣﺤﻮر ‪ ( X0) X‬وذﻟﻚ ﺑﺘﺤﺪﻳﺪ ﻗﻴﻤﺔ ‪. Offset‬‬
‫واﻳﻀﺎ ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻗﻴﻤﺔ اﻟﺰﻳﺎدة ﻓﻰ ﺗﺪرﻳﺞ ﻣﺤﻮر ‪ (dX) X‬وذﻟﻚ ﺑﺘﺤﺪﻳﺪ ﻗﻴﻤﺔ ‪.Multiplier‬‬

‫‪:The Scale Legend‬‬


‫هﻮ اﺣﺪ ﻣﻜﻮﻧﺎت ‪ Chart‬او ‪ Graph‬وﻳﺘﻴﺢ اﻟﻮﺻﻮل ﺑﺴﺮﻋﺔ اﻟﻰ ﺧﺼﺎﺋﺺ ‪ Scale‬اﻟﺘﻰ ﻋﺮﺿﻨﺎهﺎ‪.‬‬

‫وﻳﻈﻬﺮ ﺑﻪ اﺳﻤﺎء اﻟﺘﺪرﻳﺠﺎت اﻟﻤﻮﺟﻮدة ﺑـ ‪ Chart‬او ‪ Graph‬وﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ هﺬا اﻻﺳﻢ ﻣﻦ ﺧﻼﻟﻪ ‪.‬‬

‫‪54‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬اذا آﺎن هﻨﺎك اآﺜﺮ ﻣﻦ ﺗﺪرﻳﺠﻴﻦ ﻳﻤﻜﻦ ﻣﺪ ‪ Scale Legend‬ﺑﻮاﺳﻄﺔ اﻻداة ‪Positioning‬‬
‫ﻻﻇﻬﺎر اﻟﺘﺪرﻳﺠﺎت اﻻﺧﺮى ‪.‬‬

‫ﻟﻠﻮﺻﻮل اﻟﻰ ﺧﺼﺎﺋﺺ ﺗﺪرﻳﺞ ﻣﺤﻮر‬ ‫وﻟﻠﻮﺻﻮل اﻟﻰ ﻗﺎﺋﻤﺔ ﺧﺼﺎﺋﺼﺔ اﻟﺘﺪرﻳﺞ ﻧﻀﻐﻂ ﻋﻠﻰ اﻟﺰرار‬
‫ﻟﻠﻮﺻﻮل اﻟﻰ ﺧﺼﺎﺋﺺ ﺗﺪرﻳﺞ ﻣﺤﻮر ‪. Y‬‬ ‫‪ X‬او‬
‫وهﺬة اﻟﺨﺼﺎﺋﺺ هﻰ اﻟﺨﺼﺎﺋﺺ اﻟﺘﻰ ﻋﺮﺿﻨﺎهﺎ ﻣﻦ ﻗﺒﻞ وﻟﻜﻦ وﺿﻌﺖ هﻨﺎ ﻟﺴﺮﻋﺔ اﻟﻮﺻﻮل اﻟﻴﻬﺎ‪.‬‬

‫‪.‬‬ ‫وﻳﻤﻜﻦ ﺗﻔﻌﻴﻞ ﺧﺎﺻﻴﺔ ‪ AutoScale‬ﻟﻜﻞ ﺗﺪرﻳﺞ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺰرار‬

‫ﻓﺎن ﺧﺎﺻﻴﺔ ‪ AutoScale‬ﺗﻜﻮن ﻣﻔﻌﻠﺔ وﻳﻜﻮن اﻟﺰرار‬ ‫وﻋﻨﺪﻣﺎ ﻳﻜﻮن هﺬا اﻟﺮزار ﺑﻬﺬا اﻟﺸﻜﻞ‬
‫‪.‬‬ ‫اﻟﻤﺠﺎور ﺑﻬﺬا اﻟﺸﻜﻞ‬
‫ﻓﺎن ﺧﺎﺻﻴﺔ ‪ AutoScale‬ﺗﻜﻮن ﻏﻴﺮ ﻣﻔﻌﻠﺔ وﻳﻜﻮن اﻟﺰرار‬ ‫وﻋﻨﺪﻣﺎ ﻳﻜﻮن هﺬا اﻟﺮزار ﺑﻬﺬا اﻟﺸﻜﻞ‬
‫‪.‬‬ ‫اﻟﻤﺠﺎور ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫‪55‬‬
‫‪: The Plot Legend‬‬
‫ﻳﺴﺘﺨﺪم ﻓﻰ ﺗﺤﺪﻳﺪ ﺧﺼﺎﺋﺺ اﻟﺮﺳﻢ ﻣﺜﻞ اﺳﻢ اﻟﺮﺳﻢ و ﻟﻮﻧﻪ وﺷﻜﻞ اﻟﺨﻂ ﻓﻴﻪ وﺷﻜﻞ وﻟﻮن اﻟﻨﻘﻂ اﻟﻤﺴﺘﺨﺪﻣﺔ‬
‫ﻓﻴﻪ‪.‬‬

‫وﻋﻨﺪ ادراج ‪ Chart‬او ‪ Graph‬ﻳﻈﻬﺮ رﺳﻢ واﺣﺪ ﻓﻰ ‪ Plot Legend‬واذا آﺎن هﻨﺎك اآﺜﺮ ﻣﻦ رﺳﻢ‬
‫ﻋﻠﻰ ‪Chart‬او ‪ Graph‬ﻳﻤﻜﻦ ﻣﺪ ‪ Plot Legend‬ﺑﻮاﺳﻄﺔ اﻻداة ‪ Positioning‬ﺑﺤﻴﺚ ﺗﻈﻬﺮ ﺑﺎﻗﻰ‬
‫اﻟﺮﺳﻮﻣﺎت ﻓﻰ ‪.Plot Legend‬‬

‫ﻳﺴﻤﻰ اﻟﺮﺳﻢ ﻓﻰ ‪ Plot Legend‬ﺑﻜﻠﻤﺔ ‪ Plot‬ﺛﻢ رﻗﻢ ﻳﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ ﻟﻠﺮﺳﻢ ﻣﺜﻞ )‪ Plot 0‬و ‪(Plot 1‬‬
‫وﻳﻤﻜﻦ ﺗﻌﺪﻳﻞ هﺬا اﻻﺳﻢ ﺑﺎﺳﺘﺨﺪام اﻻداة ‪ Labeling‬ﻣﺜﻞ اى ‪ Label‬ﻓﻰ ‪.LabVIEW‬‬

‫ﻋﻨﺪ ﺗﻐﻴﻴﺮ اﻻﺳﻢ ﻓﺎن اﺑﻌﺎد ‪ Plot Legend‬ﺗﺘﻐﻴﺮ ﺑﺤﻴﺚ ﺗﺴﻊ اآﺒﺮ اﺳﻢ وهﺬة هﻰ ﺧﺎﺻﻴﺔ ‪Plot‬‬
‫‪.Legend Autosizing‬وﻳﻤﻜﻦ اﻟﻐﺎء هﺬة اﻟﺨﺎﺻﻴﺔ او ﺗﻔﻌﻠﻴﻬﺎ ﻣﻦ ﺧﻼل اﻟﻀﻐﻂ ﻋﻠﻰ ‪ Chart‬او‬
‫‪ Graph‬واﺧﺘﻴﺎر او اﻟﻐﺎء اﺧﺘﻴﺎر ‪.Plot Legend Autosizing‬‬

‫‪56‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻋﻨﺪ ﺗﺤﺮﻳﻚ ‪ Chart‬او ‪ Graph‬ﻳﺘﺤﺮك ﻣﻌﻬﺎ ‪ Plot Legend‬وﻟﻜﻦ ﻳﻤﻜﻦ اﺧﺘﻴﺎر ‪Plot‬‬
‫‪ Legend‬وﺗﺤﺮﻳﻜﻬﺎ ﻣﻨﻔﺮدا ﻓﻰ اﻟﻤﻜﺎن اﻟﺬى ﺗﺮﻳﺪﻩ‪.‬‬

‫وﻟﻠﻮﺻﻮل اﻟﻰ ﺧﺼﺎﺋﺺ اﻟﺮﺳﻢ او ﺗﻌﺪﻳﻠﻬﺎ ﻧﻀﻐﻂ ﻋﻠﻰ ‪ Plot Legend‬ﺑﻮاﺳﻄﺔ اﻻداة ‪Operating‬‬
‫ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻗﺎﺋﻤﺔ ﺑﺎﻟﺨﺼﺎﺋﺺ وﻳﻤﻜﻦ اﻳﻀﺎ اﻇﻬﺎر اﻟﻘﺎﺋﻤﺔ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻴﻪ‪.‬‬
‫وﺗﻮﺟﺪ ﻟﻜﻞ رﺳﻢ ﻓﻰ ‪ Plot Legend‬ﻗﺎﺋﻤﺔ ﺧﺎﺻﺔ ﺑﻪ‬

‫‪57‬‬
‫وﺳﻨﺘﻌﺮف ﻋﻠﻰ هﺬة اﻟﺨﺼﺎﺋﺺ ﺑﺎﻟﺘﻔﺼﻴﻞ‪.‬‬
‫اﻻﺧﺘﻴﺎر ‪: Common Plot‬‬

‫وﻳﺘﻴﺘﺢ هﺬا اﻻﺧﺘﻴﺎر ﺗﺤﺪﻳﺪ ﺷﻜﻞ اﻟﺮﺳﻢ ﻣﻦ ﺑﻴﻦ ‪ 6‬اﺷﻜﺎل وﻳﺘﻤﻴﺰ هﺬة اﻻﺧﺘﻴﺎر ﺑﺘﺤﺪﻳﺪ ﺷﻜﻞ اﻟﻨﻘﻂ و اﻟﺨﻂ‬
‫و آﻴﻔﻴﺔ رﺑﻂ اﻟﻨﻘﻂ ﺑﺒﻌﺾ ﻣﺮة واﺣﺪ ﻣﻦ ﺧﻼل اﺧﺘﻴﺎر اﻟﺸﻜﻞ ‪.‬‬

‫‪58‬‬
‫اﻻﺧﺘﻴﺎر ‪: Color‬‬

‫اﻻﺧﺘﻴﺎر ‪: Line Style‬‬


‫ﻟﺘﺤﺪﻳﺪ ﺷﻜﻞ اﻟﺨﻂ اﻟﻤﺴﺘﺨﺪم ﻓﻰ اﻟﺮﺳﻢ‪.‬‬

‫‪59‬‬
‫اﻻﺧﺘﻴﺎر ‪:Line Width‬‬
‫ﻟﺘﺤﺪﻳﺪ ﺳﻤﻚ اﻟﺨﻂ ﻓﻰ اﻟﺮﺳﻢ‪.‬‬

‫اﻻﺧﺘﻴﺎر ‪:Anti-Aliased‬‬

‫ﻳﺠﻌﻞ هﺬا اﻻﺧﺘﻴﺎر اﻟﺮﺳﻢ اآﺜﺮ اﻧﺴﻴﺎﺑﻴﺔ ‪ .‬وﻳﺤﺘﺎج هﺬا اﻻﺧﺘﻴﺎر ﺑﻌﺾ اﻟﺤﺴﺎﺑﺎت اﻻﺿﺎﻓﻴﺔ ﻟﺠﻌﻞ اﻟﺮﺳﻢ‬
‫اآﺜﺮ اﻧﺴﻴﺎﺑﻴﺔ ﻣﻤﺎ ﻗﺪ ﻳﺆدى اﻟﻰ ﺑﻌﺾ اﻟﺒﻄﻰء وﺗﻘﻠﻴﻞ اﻟﻜﻔﺎءة‪.‬‬

‫‪60‬‬
‫اﻻﺧﺘﻴﺎر ‪: Bar Plots‬‬
‫ﻳﻨﺸﻰء هﺬا اﻻﺧﺘﻴﺎر اﻋﻤﺪة ﻋﻨﺪ اﻟﻘﻴﻢ اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﺮﺳﻢ هﺬة اﻻﻋﻤﺪة ﻳﻤﻜﻦ ان ﺗﻜﻮن اﻓﻘﻴﺔ او رأﺳﻴﺔ‬
‫وﻳﻤﻜﻦ ان ﻳﻜﻮن ﻋﺮﺿﻬﺎ ‪ %100‬او ‪ %75‬او ‪ %1‬وهﺬة اﻻﻋﻤﺪة ﻳﻤﻜﻦ ان ﺗﻜﻮن ﻓﺎرﻏﺔ او ﻣﻈﻠﻠﺔ ‪.‬‬

‫اﻻﺧﺘﻴﺎر ‪: Fill Base Line‬‬


‫ﻟﻌﻤﻞ ﺗﻈﻠﻴﻞ وهﺬا اﻟﺘﻈﻠﻴﻞ ﻳﻜﻮن ﻣﺎ ﺑﻴﻦ اﻟﺮﺳﻢ و ﺻﻔﺮ او ﺳﺎﻟﺐ ﻣﺎ ﻧﻬﺎﻳﺔ او ﻻﻧﻬﺎﻳﺔ او اى رﺳﻢ اﺧﺮ‬
‫ﻣﻮﺟﻮد اذا آﺎن هﻨﺎك اآﺜﺮ ﻣﻦ رﺳﻢ ﻋﻠﻰ ‪Chart‬او ‪.Graph‬‬

‫‪61‬‬
62
‫اﻻﺧﺘﻴﺎر ‪:Interpolation‬‬
‫ﻳﺤﺪد هﺬا اﻻﺧﺘﻴﺎر آﻴﻔﻴﺔ اﻟﺘﻮﺻﻴﻞ ﺑﻴﻦ اﻟﻨﻘﻂ ﻓﻴﻤﻜﻦ ان ﺗﻜﻮن اﻟﻨﻘﻂ ﺑﺪون ﺗﻮﺻﻴﻞ او ﻳﺘﻢ اﻟﺘﻮﺻﻴﻞ ﺑﻴﻨﻬﺎ‬
‫ﺑﺨﻂ ﻣﺴﺘﻘﻴﻢ او اﻟﺘﻮﺻﻴﻞ ﺑﻴﻨﻬﺎ ﺑﺰاوﻳﺔ ﻗﺎﺋﻤﺔ ﺑﻄﺮق ﻣﺨﺘﻠﻔﺔ ﻣﻤﺎ ﻳﻔﻴﺪ ﻓﻰ ﻋﻤﻞ ﻣﺎ ﻳﺴﻤﻰ ‪.Histogram‬‬

‫اﻻﺧﺘﻴﺎر ‪:Point Style‬‬


‫ﻳﺤﺪد هﺬا اﻻﺧﺘﻴﺎر ﺷﻜﻞ اﻟﻨﻘﻂ اﻟﻤﻮﺟﻮدة ﺑﺎﻟﺮﺳﻢ ‪.‬‬

‫‪63‬‬
‫اﻻﺧﺘﻴﺎرﻳﻦ ‪ X Scale‬و ‪: Y Scale‬‬
‫اذا آﺎن هﻨﺎك اآﺜﺮ ﻣﻦ ﺗﺪرﻳﺞ ﻟﻠﻤﺤﻮر ‪ .‬ﻓﻴﺘﻢ ﺗﺤﺪﻳﺪ ﺑﻬﺬﻳﻦ اﻻﺧﺘﻴﺎرﻳﻦ اﻟﺘﺪرﻳﺞ اﻟﺨﺎص ﺑﺎﻟﺮﺳﻢ‪.‬‬

‫‪64‬‬
‫‪:The Graph Palette‬‬

‫ﺗﺴﺘﺨﺪم ‪ Graph Palette‬ﻟﺘﺤﺮﻳﻚ اﻟﺠﺰء اﻟﻤﺨﺼﺺ ﻟﻠﺮﺳﻢ ﻓﻰ ‪ Charts‬او ‪ Graphs‬او ﻋﻤﻞ‬


‫ﺗﻜﺒﻴﺮ ﻟﺠﺰء ﻣﻌﻴﻦ ﻣﻦ اﻟﺮﺳﻢ ‪.‬‬
‫وﻳﻮﺟﺪ ﺛﻼث زراﻳﺮ ﻓﻰ ‪ Graph Palette‬آﻞ واﺣﺪ ﻣﻨﻬﻢ ﺧﺎص ﺑﻨﻤﻂ ﻣﻌﻴﻦ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺠﺰء‬
‫اﻟﻤﺨﺼﺺ ﻟﻠﺮﺳﻢ‪.‬‬
‫زرار ‪: Standard Mode‬‬
‫وهﺬا ﻳﺠﻌﻞ ‪ Graph‬ﻋﻠﻰ اﻟﻨﻤﻂ اﻟﻌﺎدى وﻓﻴﻪ ﺗﺴﺘﻄﻴﻊ اﻟﻀﻐﻂ ﻋﻠﻰ ‪) Cursors‬ﺳﻴﺄﺗﻰ ﺷﺮﺣﻬﺎ‬
‫ﺑﺎﻟﺘﻔﺼﻴﻞ(ﻟﺘﺤﺮﻳﻜﻬﺎ ﻋﻠﻰ اﻟﺮﺳﻢ ‪.‬‬

‫زرار ‪: Pan‬‬
‫ﻓﻰ هﺬا اﻟﻨﻤﻂ ﻳﻤﻜﻦ ﺗﺤﺮﻳﻚ اﻟﺠﺰء اﻟﺨﺎص ﺑﺎﻟﺮﺳﻢ ﻻﻇﻬﺎر اى ﺟﺰء ﻣﻦ اﻟﺮﺳﻢ ﻏﻴﺮ ﻇﺎهﺮ ‪ .‬وذﻟﻚ‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺠﺰء اﻟﻈﺎهﺮ ﻣﻦ اﻟﺮﺳﻢ ﺛﻢ اﻟﺴﺤﺐ وﻳﺸﺒﻪ هﺬا اﻟﻨﻤﻂ اﺳﺘﺨﺪام ﺷﺮﻳﻂ اﻻﻧﺰﻻق‪.‬‬

‫‪65‬‬
‫زرار اﻟﺘﻜﺒﻴﺮاو اﻟﺘﺼﻐﻴﺮ )‪:(Zooming‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ هﺬا اﻟﺰرار ﺗﻈﻬﺮ ﻟﻨﺎ ﻗﺎﺋﻤﺔ ﺑﻬﺎ ﺧﻴﺎرات ﻟﻄﺮق ﻋﻤﻞ ﺗﻜﺒﻴﺮ ﺟﺰء ﻣﻦ اﻟﺮﺳﻢ ‪.‬‬

‫اﻟﺘﻜﺒﻴﺮ ﺑﻮاﺳﻄﺔ ﻣﺴﺘﻄﻴﻞ‪:‬‬


‫ﻳﺘﻢ رﺳﻢ ﻣﺴﺘﻄﻴﻞ ﺣﻮل ﺟﺰء ﻣﻦ اﻟﺮﺳﻢ ﺑﺎﻟﻀﻐﻂ ﺛﻢ اﻟﺴﺤﺐ وﻋﻨﺪ اﻟﺮﻓﻊ ﻣﻦ اﻟﻀﻐﻂ ﻳﺘﻐﻴﺮ ﺗﺪرﻳﺞ ‪ X‬و ‪Y‬‬
‫ﺑﺤﻴﺚ ﻳﻈﻬﺮ اﻟﺠﺰء اﻟﺬى ﺗﻢ اﺧﺘﻴﺎرﻩ ﺑﻮاﺳﻄﺔ اﻟﺮﺳﻢ ‪.‬‬

‫اﻟﺘﻜﺒﻴﺮ ﺑﻮاﺳﻄﺔ ﻣﺴﺘﻄﻴﻞ ﻋﻞ ﻣﺤﻮر ‪:X‬‬


‫ﻳﺘﻢ اﺧﺘﻴﺎر ﺟﺰء ﻣﻦ اﻟﺮﺳﻢ ﻟﻠﺘﻜﺒﻴﺮ ﺑﺮﺳﻢ ﻣﺴﺘﻄﻴﻞ ﺣﻮل ﻣﺤﻮر ‪ X‬ﻓﻘﻂ ﻓﺘﺪرﻳﺞ ﻣﺤﻮر ‪ Y‬ﻟﻦ ﻳﺘﻐﻴﺮ‪.‬‬

‫‪66‬‬
‫اﻟﺘﻜﺒﻴﺮ ﺑﻮاﺳﻄﺔ ﻣﺴﺘﻄﻴﻞ ﻋﻠﻰ ﻣﺤﻮر ‪:Y‬‬
‫ﻳﺘﻢ اﺧﺘﻴﺎر ﺟﺰء ﻣﻦ اﻟﺮﺳﻢ ﻟﻠﺘﻜﺒﻴﺮ ﺑﺮﺳﻢ ﻣﺴﺘﻄﻴﻞ ﺣﻮل ﻣﺤﻮر ‪ Y‬ﻓﻘﻂ ﻓﺘﺪرﻳﺞ ﻣﺤﻮر ‪ X‬ﻟﻦ ﻳﺘﻐﻴﺮ‪.‬‬

‫اﻟﺘﻜﺒﻴﺮ ﻻﻇﻬﺎر آﻞ اﻟﺮﺳﻢ ‪:‬‬


‫ﻳﺘﻐﻴﺮ ﺗﺪرﻳﺞ ﻣﺤﻮر ‪ X‬و ‪ Y‬ﺑﺤﻴﺚ ﻳﺘﻢ اﻇﻬﺎر آﻞ اﻟﺮﺳﻢ ‪.‬‬

‫‪67‬‬
‫اﻟﺘﻜﺒﻴﺮ ﺣﻮل ﻧﻘﻄﺔ ‪:‬‬
‫ﻳﺘﻢ اﻟﺘﻜﺒﻴﺮ ﺣﻮل ﻧﻘﻄﺔ ﻣﻌﻴﻨﺔ ﻓﻠﻮ ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﻰ اى ﻧﻘﻄﺔ ﺳﻴﺤﺪث ﺣﻮﻟﻬﺎ ﺗﻜﺒﻴﺮ وﺳﺘﺴﺘﻤﺮ ﻋﻤﻠﻴﺔ اﻟﺘﻜﺒﻴﺮ‬
‫ﺣﺘﻰ ﻳﺘﻢ اذاﻟﺔ اﻟﻀﻐﻂ‪.‬‬

‫اﻟﺘﺼﻐﻴﺮ ﺣﻮل ﻧﻘﻄﺔ ‪:‬‬


‫ﻳﺘﻢ اﻟﺘﺼﻐﻴﺮ ﺣﻮل ﻧﻘﻄﺔ ﻣﻌﻴﻨﺔ ﻓﻠﻮ ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﻰ اى ﻧﻘﻄﺔ ﺳﻴﺤﺪث ﺣﻮﻟﻬﺎ ﺗﺼﻐﻴﺮ وﺳﺘﺴﺘﻤﺮ ﻋﻤﻠﻴﺔ‬
‫اﻟﺘﺼﻐﻴﺮ ﺣﺘﻰ ﻳﺘﻢ اذاﻟﺔ اﻟﻀﻐﻂ‪.‬‬

‫‪68‬‬
‫‪: Graph Cursors‬‬
‫ﺗﺤﺘﻮى ‪ Graphs‬ﻋﻠﻰ ‪ Cursors‬ﻟﺘﺤﺪﻳﺪ ﺑﻴﺎﻧﺎت اﻟﻨﻘﻂ ﻋﻠﻰ ‪ Graph‬ﺑﻄﺮﻳﻘﺔ ﺗﻔﺎﻋﻠﻴﺔ ‪ .‬وﻳﺘﻜﻮن‬
‫‪ Cursor‬ﻣﻦ ﺗﻘﺎﻃﻊ ﺧﻂ رأﺳﻰ ﻟﻪ ﻗﻴﻤﺔ ﻋﻠﻰ ﻣﺤﻮر ‪ X‬وﺧﻂ اﻓﻘﻰ ﻟﻪ ﻗﻴﻤﺔ ﻋﻠﻰ ﻣﺤﻮر ‪.Y‬‬

‫‪:The Cursor Legend‬‬


‫ﻳﺤﺘﻮى ‪ Cursor Legend‬ﻋﻠﻰ ﺑﻴﺎﻧﺎت وﺧﺼﺎﺋﺺ ‪ Cursors‬اﻟﻤﻮﺟﻮدة ﻋﻠﻰ ‪.Graph‬‬
‫وﻳﻤﻜﻦ ان ﻳﺤﺘﻮى ‪Graph‬ﻋﻠﻰ اآﺜﺮ ﻣﻦ ‪.Cursor‬‬

‫‪69‬‬
‫آﻴﻔﻴﺔ اﺿﺎﻓﺔ ‪ Cursor‬اﻟﻰ ‪ Graph‬او ‪:Cursor Legend‬‬
‫ﻋﻨﺪ اﻇﻬﺎر ‪ Cursor Legend‬ﻻول ﻣﺮة ﻓﺎﻧﻪ ﻳﻜﻮن ﻓﺎرﻏﺎ ‪ .‬وﻻﺿﺎﻓﺔ ‪ Cursor‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ‬
‫ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Cursor Legend‬وﻧﺨﺘﺎر ‪ Create Cursor‬ﺛﻢ ﻧﺨﺘﺎر ﻧﻮع ‪. Cursor‬‬

‫‪70‬‬
‫وهﻨﺎك ﺛﻼث اﻧﻮاع ﻣﻦ ‪ Cursors‬هﻰ ‪:‬‬
‫¾ ‪ : Free‬وهﻰ ان ‪ Cursor‬ﻳﻤﻜﻦ ﺗﺤﺮﻳﻜﻪ اﻟﻰ اى ﻣﻜﺎن ﻋﻠﻰ ‪ Graph‬ﺑﺪون اﻻرﺗﺒﺎط ﺑﺎى ﻧﻘﻂ‪.‬‬
‫¾ ‪ : Single Plot‬وهﻰ ان ‪ Cursor‬ﻳﻜﻮن ﻣﺮﺗﺒﻂ ﺑﻨﻘﻂ رﺳﻢ واﺣﺪ وﻻ ﻳﻤﻜﻦ ﺗﺤﺮﻳﻜﻪ اﻻ اﻟﻰ‬
‫اﻣﻜﺎن ﻧﻘﻂ هﺬا اﻟﺮﺳﻢ‪.‬‬
‫¾ ‪ : Multi-Plot‬هﺬا اﻟﻨﻮع ﻏﻴﺮ ﻣﺘﺎح اﻻ ﻟـ ‪ Mixed Signal Graphs‬وﺳﻴﺄﺗﻰ ﺷﺮﺣﻬﺎ ﻓﻰ‬
‫ﻧﻬﺎﻳﺔ اﻟﺪرس‪.‬‬

‫ﻻ ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ ﻧﻮع ‪ Cursor‬ﺑﻌﺪ اﺿﺎﻓﺘﻪ وﻟﻌﻤﻞ ذﻟﻚ ﻳﺠﺐ اوﻻ ﺣﺬﻓﻪ ﺛﻢ اﺿﺎﻓﺘﻪ ﻣﻦ ﺟﺪﻳﺪ ﺑﺎﻟﻨﻮع اﻟﻤﺮاد‪.‬‬
‫اﻋﺎدة ﺗﺴﻤﻴﺔ ‪: Cursor‬‬
‫ﻳﻤﻜﻦ ﺗﻌﺪﻳﻞ اﺳﻢ ‪ Cursor‬ﺑﺎﺳﺘﺨﺪام اﻻداة ‪ Labeling‬ﻣﺜﻞ ﺗﻌﺪﻳﻞ اى ‪ Label‬ﻓﻰ ‪.LabVIEW‬‬

‫ﺗﺤﺮﻳﻚ ‪:Cursor‬‬
‫‪ -1‬ﺗﺤﺮﻳﻚ ‪ Cursor‬ﺑﺎﺳﺘﺨﺪام اداة اﻟﺘﺤﺮﻳﻚ‬

‫‪71‬‬
‫ﻧﺠﻌﻞ اوﻻ ‪ Cursor‬اﻟﺬى ﻧﺮﻳﺪ ﺗﺤﺮﻳﻜﻪ ﻧﺸﻄﺎ ﺑﺎن ﻧﻀﻐﻂ ﺑﺎﻻداة ‪ Operating‬ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﻤﻌﻴﻦ اﻟﺬى‬
‫ﺑﺠﻮار اﻻﺳﻢ ﺣﺘﻰ ﻳﻜﻮن ﻣﻈﻠﻼ‪.‬‬
‫ﻳﻤﻜﻦ ﺟﻌﻞ اآﺜﺮ ﻣﻦ ‪ Cursor‬ﻧﺸﻄﺎ‪.‬‬

‫ﺛﻢ ﻧﺴﺘﺨﺪم اداة اﻟﺘﺤﺮﻳﻚ ﻓﻰ ﺗﺤﺮﻳﻚ ‪ Cursors‬اﻟﻨﺸﻄﺔ ﻓﻰ اى اﺗﺠﺎﻩ ﻻﻋﻠﻰ او ﻻﺳﻔﻞ او ﻟﻠﻴﻤﻴﻦ او‬
‫اﻟﺸﻤﺎل ﻓﻬﻰ ﻣﻘﺴﻤﺔ اﻟﻰ ارﺑﻌﺔ زرارﻳﺮ آﻞ زرار ﻳﺘﻢ اﻟﻀﻐﻂ ﻋﻠﻴﻪ ﻟﻠﺘﺤﺮﻳﻚ ﻓﻰ اﺗﺠﺎﻩ ﻣﻌﻴﻦ‪.‬‬

‫‪72‬‬
‫‪ -2‬ﺑﺎﺳﺘﺨﺪام ﻣﺆﺷﺮ اﻟﻤﺎوس وذﻟﻚ ﺑﻮﺿﻊ اﻟﻤﺆﺷﺮ ﻋﻠﻰ ‪ Cursor‬ﺛﻢ اﻟﻀﻐﻂ وﺗﺤﺮﻳﻚ ‪ Cursor‬اﻟﻰ‬
‫اﻟﻤﻜﺎن اﻟﺬى ﺗﺮﻳﺪﻩ او ﺑﻮﺿﻊ ﻣﺆﺷﺮ اﻟﻤﺎوس ﻋﻠﻰ اﻟﺨﻂ اﻻﻓﻘﻰ او اﻟﺮأﺳﻰ ﺛﻢ اﻟﻀﻐﻂ وﺗﺤﺮﻳﻚ ‪Cursor‬‬
‫اﻣﺎ اﻓﻘﻴﺎ او رأﺳﻴﺎ وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﻟﻴﺲ ﺿﺮورﻳﺎ ان ﻳﻜﻮن ﻧﺸﻄﺎ‪.‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻳﺘﻐﻴﺮ ﺷﻜﻞ ﻣﺆﺷﺮ اﻟﻤﺎوس ﻋﻨﺪ وﺿﻌﻬﺎ ﻋﻠﻰ ‪ Cursor‬او اﺣﺪ اﻟﺨﻄﻮط ﻣﻤﺎ ﻳﺪل ﻋﻠﻰ اﻣﻜﺎﻧﻴﺔ‬
‫اﻟﺘﺤﺮﻳﻚ‪.‬‬
‫ﻻ ﻳﻤﻜﻦ ﺗﺤﺮﻳﻚ ‪ Cursor‬اﻟﻤﺮﺗﺒﻂ ﺑﻨﻘﻂ رﺳﻢ اﻻ اﻟﻰ اﻣﻜﺎن ﻧﻘﻂ هﺬا اﻟﺮﺳﻢ‪.‬‬

‫‪ -3‬ﻳﻤﻜﻦ وﺿﻊ ‪ Cursor‬ﻓﻰ اﻟﻤﻜﺎن اﻟﺬى ﻧﺮﻳﺪﻩ ﺑﺘﻐﻴﻴﺮ ﻗﻴﻤﺔ ‪ X‬و ‪ Y‬ﻟﻪ ﻓﻰ ‪ Cursor Legend‬وذﻟﻚ‬
‫ﺑﻮاﺳﻄﺔ اﻻداة ‪.Labeling‬‬

‫ﺧﺼﺎﺋﺺ ‪:Cursor‬‬
‫ﺗﻮﺟﺪ ﻟـ ‪ Cursor‬ﻋﺪة ﺧﺼﺎﺋﺺ آﺎﻟﻠﻮن وﺷﻜﻞ ‪ Cursor‬وﺳﻤﻚ اﻟﺨﻂ وﺷﻜﻠﻪ ‪.‬‬

‫‪73‬‬
‫وﻟﻠﻮﺻﻮل اﻟﻰ هﺬة اﻟﺨﺼﺎﺋﺺ ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﺳﻢ ‪ Cursor‬ﺛﻢ ‪.Attributes‬‬

‫‪74‬‬
75
‫آﻤﺎ ﻳﻤﻜﻦ اﻇﻬﺎر اﺳﻢ ‪ Cursor‬ﻋﻠﻰ ‪Graph‬‬

‫اذا آﺎن هﻨﺎك اآﺜﺮ ﻣﻦ رﺳﻢ ﻋﻠﻰ ‪ Graph‬وهﻨﺎك ‪ Cursor‬ﻣﺮﺗﺒﻂ ﺑﺮﺳﻢ ﻣﻌﻴﻦ ﻳﻤﻜﻦ ان ﻧﺠﻌﻞ اﻟﺮﺳﻢ‬
‫ﻳﺮﺗﺒﻂ ﺑﺮﺳﻢ اﺧﺮ ‪.‬‬

‫‪76‬‬
‫ﻳﻤﻜﻦ ﺣﺬف ‪ Cursor‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﺳﻤﻪ ﻓﻰ ‪ Cursor Legend‬ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس‬
‫واﺧﺘﻴﺎر ‪.Delete‬‬

‫‪: Graph Annotations‬‬


‫ﻳﻤﻜﻦ اﺿﺎﻓﺔ ﻋﻼﻣﺔ او ﺗﻌﻠﻴﻖ ﻋﻠﻰ اﻟﺮﺳﻮﻣﺎت ﻓﻰ ‪ Graphs‬وذﻟﻚ ﺑﺎﺳﺘﺨﺪام ‪.Graph Annotation‬‬
‫وهﺬة اﻟﻌﻼﻣﺎت ﻳﻤﻜﻦ ان ﺗﻜﻮن ﻟﻠﺘﻮﺿﻴﺢ او ﺗﺤﺪﻳﺪ ﻧﻘﻂ ﻣﻌﻴﻨﺔ ﻋﻠﻰ اﻟﺮﺳﻢ ﻣﺜﻞ اﻋﻠﻰ او اﻗﻞ ﻗﻴﻤﺔ ﻓﻰ اﻟﺮﺳﻢ‬
‫او اﻻﺷﺎرات‪.‬‬
‫وﻳﺘﻜﻮن ‪ Annotation‬ﻣﻦ ‪ Cursor‬و ﺳﻬﻢ و اﺳﻢ )‪.(Label‬‬

‫وﻣﺜﻞ ‪ Cursor‬ﻳﻮﺟﺪ ﺛﻼث اﻧﻮاع ﻣﻦ ‪:Annotation‬‬


‫¾ ‪ :Free‬اى ﻟﻴﺲ ﻣﺮﺗﺒﻂ ﺑﺎى رﺳﻢ وﻳﻤﻜﻦ ان ﻳﻮﺟﺪ ﻋﻠﻰ اى ﻣﻜﺎن ﻋﻠﻰ ‪.Graph‬‬
‫¾ ‪: Snap to All Plots‬اى ﻣﺮﺗﺒﻂ ﺑﺎﻟﺮﺳﻮﻣﺎت اﻟﻤﻮﺟﻮدة ﻋﻠﻰ ‪ Graph‬اى ﻻ ﻳﻤﻜﻦ ان ﻳﻮﺟﺪ‬
‫اﻻ ﻋﻠﻰ اى ﻧﻘﻄﺔ ﻋﻠﻰ ‪.Graph‬‬
‫¾ ‪ : Snap to One Plot‬اى ﻣﺮﺗﺒﻂ ﺑﺮﺳﻢ ﻣﻌﻴﻦ وﻻ ﻳﻤﻜﻦ ان ﻳﻮﺟﺪ اﻻ ﻋﻠﻰ ﻧﻘﻂ هﺬا اﻟﺮﺳﻢ‪.‬‬

‫‪77‬‬
‫اﺿﺎﻓﺔ ‪ Annotation‬اﻟﻰ ‪: Graph‬‬
‫اذا آﻨﺎ ‪ Edit Mode‬ﻧﻀﻐﻂ ﻋﻠﻰ ‪Graph‬ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس وﻧﺨﺘﺎر ‪ Data Operations‬ﺛﻢ‬
‫‪ Create Annotation‬ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﺻﻐﻴﺮة ﺑﻬﺎ ﺧﺼﺎﺋﺺ ‪ Annotation‬اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫واذا آﻨﺎ ﻓﻰ ‪ Run Mode‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Graph‬وﻧﺨﺘﺎر ‪Create Annotation‬‬
‫ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﺻﻐﻴﺮة ﺑﻬﺎ ﺧﺼﺎﺋﺺ ‪ Annotation‬اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫‪78‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ‪ Edit Mode‬اﻟﻰ ‪ Run Mode‬و اﻟﻌﻜﺲ ﻧﻀﻐﻂ ‪.Ctrl + M‬‬

‫ﻳﻤﻜﻦ ﺗﺤﺮﻳﻚ ‪ Cursor‬اﻟﺨﺎص ﺑـ ‪ Annotation‬ﺑﻮاﺳﻄﺔ اﻟﻤﺆﺷﺮ وذﻟﻚ ﺣﺴﺐ ﻧﻮﻋﻪ ﻓﺎذا آﺎن ‪Free‬‬
‫ﻓﻴﻤﻜﻦ ﺗﺤﺮﻳﻚ اﻟﻰ اى ﻣﻜﺎن ﻋﻠﻰ ‪ Graph‬واذا آﺎن ﻣﺘﺮﺑﻂ ﺑﺮﺳﻢ او اآﺜﺮ ﻓﻴﻤﻜﻦ ﺗﺤﺮﻳﻜﻪ ﻋﻠﻰ اﻟﻨﻘﻂ ﻓﻘﻂ‬
‫وﻋﻨﺪ ﺗﺤﺮﻳﻚ ‪ Cursor‬ﻳﺘﺤﺮك ﻣﻌﻪ اﻟﺴﻬﻢ واﻻﺳﻢ ﻣﻌﺎ‪.‬‬

‫وﻳﻤﻜﻦ ﺗﺤﺮﻳﻚ اﻻﺳﻢ ﻓﻘﻂ ﺑﻮاﺳﻄﺔ ﻣﺆﺷﺮ اﻟﻤﺎوس وﺳﻴﻈﻞ اﻟﺴﻬﻢ ﻳﺮﺑﻂ ﺑﻴﻦ اﻻﺳﻢ و ‪.Cursor‬‬

‫‪79‬‬
: Annotation ‫ﺣﺬف‬
‫ واﺧﺘﻴﺎر‬Graph ‫ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ‬Annotation ‫ﻳﻤﻜﻦ ﺣﺬف ﺟﻤﻴﻊ‬
Data Operations >> Delete All Annotations
Edit Mode ‫وذﻟﻚ ﻓﻰ ﺣﺎﻟﺔ‬

‫او ﻧﺨﺘﺎر ﻣﺒﺎﺷﺮة‬


Delete All Annotations
Run Mode ‫ﻓﻰ ﺣﺎﻟﺔ‬

80
‫‪Intensity Charts and Graphs‬‬

‫ﺷﺎهﺪﻧﺎ آﻴﻒ ﺗﺴﺘﺨﺪم ‪ Charts‬و‪ Graphs‬ﻓﻰ رﺳﻢ اﻟﺮﺳﻮﻣﺎت ﻓﻰ ﺑﻌﺪﻳﻦ ‪ X‬و ‪ .Y‬ﻓﻤﺎذا اذا اردﻧﺎ ان ﻧﻤﺜﻞ‬
‫او ﻧﺮﺳﻢ رﺳﻢ ﻓﻰ ﺛﻼث اﺑﻌﺎد ‪ X‬و‪ Y‬و‪Z‬؟‬
‫ﻳﺴﺘﺨﺪم ‪ Intensity Charts‬و ‪ Intensity Graphs‬ﻓﻰ ﺗﻤﺜﻴﻞ اﻟﺒﻌﺪ اﻟﺜﺎﻟﺚ ‪ Z‬ﻋﻠﻰ هﻴﺌﺔ اﻟﻮان ‪.‬‬
‫ﻓﻜﻞ ﻟﻮن ﻳﺤﺪد ﻟﻪ رﻗﻢ ﻣﻦ ‪ 0‬اﻟﻰ ‪ .255‬وﻳﻜﻮن اﻟﻠﻮن ﻓﻰ هﺬة اﻟﺤﺎﻟﺔ اﻟﺒﻌﺪ اﻟﺜﺎﻟﺚ ‪.Z‬‬
‫وﻳﻤﻜﻦ ان ﺗﺴﺘﺨﺪم هﺬة اﻟﻄﺮﻳﻘﺔ ﻓﻰ اﻳﻀﺎح اﻟﺘﻮزﻳﻌﺎت ﻣﺜﻞ ﺗﻮزﻳﻌﺎت درﺟﺎت اﻟﺤﺮارة‪.‬‬

‫ﻳﻮﺟﺪ ‪ Color Scale‬ﻣﻊ ‪ Charts‬و‪ Graphs‬ﻳﻮﺿﺢ ﻗﻴﻢ اﻻﻟﻮان وﻳﻌﺘﺒﺮ دﻟﻴﻼ ﻟﻘﻴﻢ اﻻﻟﻮان وﻳﻤﻜﻦ ﺗﻌﺪﻳﻞ‬
‫هﺬة اﻟﻘﻴﻢ آﻤﺎ ﺳﻨﺮى‪.‬‬

‫واﻟﻔﺮق ﺑﻴﻦ ‪ Intensity Chart‬و ‪ Intensity Graph‬آﻤﺎ هﻮ اﻟﻔﺮق ﺑﻴﻦ ‪ Charts‬و‪ Graphs‬اﻟﻌﺎدﻳﻴﻦ ‪.‬‬
‫ﻓـ ‪ Chart‬ﻳﻈﻬﺮ اﻟﻘﻴﻢ اﻟﺠﺪﻳﺪة اﻟﻤﻀﺎﻓﺔ ﻣﻊ اﻟﻘﻴﻢ اﻟﻘﺪﻳﻤﺔ اﻣﺎ ‪ Graphs‬ﺗﻈﻬﺮ اﻟﺮﺳﻮﻣﺎت ﻣﺮة واﺣﺪة‬
‫وﻋﻨﺪ اﻟﺮﺳﻢ ﻋﻠﻴﻬﺎ ﻳﺘﻢ ازاﻟﺔ اى رﺳﻮﻣﺎت ﻗﺪﻳﻤﺔ ﻋﻠﻴﻬﺎ‪.‬‬

‫‪81‬‬
:Intensity Graph and Charts ‫آﻴﻔﻴﺔ ادراج‬
‫ ﻣﻦ‬Intensity Graph and Charts ‫ﻳﺘﻢ ادراج‬
Controls Palette>>Modern>>Graphs

: Intensity Graph ‫ و‬Intensity Chart ‫آﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻰ‬


‫ اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ هﻴﺌﺔ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ آﻞ ﻗﻴﻤﺔ ﻓﻰ‬Intensity Graph ‫ و‬Intensity Chart ‫ﺗﺄﺧﺬ‬
.Y ‫ ورﻗﻢ اﻟﻌﻤﻮد هﻮ ﻗﻴﻤﺔ‬X ‫( ورﻗﻢ اﻟﺼﻒ هﻮ ﻗﻴﻤﺔ‬Z ‫اﻟﻤﺼﻔﻮﻓﺔ ﺗﻤﺜﻞ ﻗﻴﻤﺔ اﻟﻠﻮن )ﻗﻴﻤﺔ‬

82
83
‫‪:Color Scale‬‬
‫ﺗﻮﺟﺪ ‪Markers‬ﻋﻠﻰ ‪ Scale Colors‬وهﺬة ‪ Markers‬هﻰ اﻟﻘﻴﻢ اﻟﻤﻮﺟﻮدة ﻋﻠﻰ ‪.Scale Color‬‬
‫وﻳﻤﻜﻦ ﺗﻌﺪﻳﻞ هﺬة اﻟﻘﻴﻢ ﺑﻮاﺳﻄﺔ اﻻداة ‪. Labeling‬‬

‫وﻳﻤﻜﻦ اﺿﺎﻓﺔ ‪ Marker‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Color Scale‬واﺧﺘﻴﺎر‬
‫‪Add Marker‬‬

‫ﺗﺨﺼﻴﺺ ﻟﻮن ﻟﻠﻘﻴﻢ‪:‬‬


‫ﻳﻤﻜﻦ ان ﻧﺨﺼﺺ ﻟﻮن ﻷى ‪ Marker‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﺔ ﺑﺎﻻداة ‪Operation‬او ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس‬
‫وﻧﺨﺘﺎر ‪ Marker Color‬ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻟﻮﺣﺔ اﻻﻟﻮان وﻧﺨﺼﺺ اﻟﻠﻮن اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫‪84‬‬
‫ﻳﻮﺟﺪ ﻓﻰ ‪ Color Scale‬ﻗﻴﻤﺔ آﺒﺮى وﻗﻴﻤﺔ ﺻﻐﺮى‪ .‬ﻓﻤﺎذا اذا آﺎﻧﺖ اﻟﻘﻴﻤﺔ اﻟﻤﻮﺟﻮدة اآﺒﺮ ﻣﻦ اﻟﻘﻴﻤﺔ اﻟﻜﺒﺮى‬
‫او اﺻﻐﺮ ﻣﻦ اﻟﻘﻴﻤﺔ اﻟﺼﻐﺮى ﻓﻤﺎ هﻮ ﻟﻮن هﺬة اﻟﻘﻴﻤﺔ؟‬

‫‪85‬‬
‫ﻳﻮﺟﺪ ﻓﻰ ‪ Color Scale‬ﻣﺴﺘﻄﻴﻠﻴﻦ ﺻﻐﻴﺮﻳﻦ اﺣﺪهﻤﺎ اﺳﻔﻞ ‪ Color Scale‬واﻻﺧﺮ اﻋﻠﻰ ‪Color‬‬
‫‪.Scale‬هﺬان اﻟﻤﺴﺘﻄﻴﻠﻴﻦ ﻳﺤﺪدان ﻟﻮن اﻟﻘﻴﻢ اﻻآﺒﺮ ﻣﻦ اﻟﻘﻴﻤﺔ اﻟﻜﺒﺮى واﻟﻘﻴﻤﺔ اﻻﺻﻐﺮ ﻣﻦ اﻟﻘﻴﻤﺔ اﻟﺼﻐﺮى ‪.‬‬
‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ ﻟﻮﻧﻰ هﺬﻳﻦ اﻟﻤﺮﺑﻌﻴﻦ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻬﻢ واﺧﺘﻴﺎر اﻟﻠﻮن اﻟﺬى ﺗﺮﻳﺪﻩ‪.‬‬

‫ﺗﻜﻮن اﻻﻟﻮن ﻓﻰ ‪ Color Scale‬ﻣﺘﺪرﺟﺔ ﻳﻤﻜﻦ اﻟﻐﺎء هﺬا اﻟﺘﺪرج ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس و ﻧﻠﻐﻰ‬
‫اﺧﺘﻴﺎر ‪Interpolate Color‬‬

‫‪86‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻳﺘﻔﻖ ‪ Intensity Charts And Graphs‬ﻣﻊ ‪ Charts‬و‪ Graphs‬ﻓﻰ ﻣﻌﻈﻢ اﻟﺨﺼﺎﺋﺺ‬
‫ﺑﺎﻻﺿﺎﻓﺔ اﻟﻰ اﻟﺨﺼﺎﺋﺺ اﻟﺨﺎﺻﺔ ﺑﺎﻟﺒﻌﺪ ‪ Z‬وﺗﺨﺼﻴﺺ اﻻﻟﻮان‪.‬‬

‫ﻟﻤﺰﻳﺪ ﻣﻦ اﻻﻣﺜﻠﺔ ﻳﻤﻜﻦ اﻻﻃﻼع ﻋﻠﻰ اﻻﻣﺜﻠﺔ اﻟﻤﻮﺟﻮدة ﻣﻊ ﻧﺴﺨﺔ ‪ LabVIEW‬واﻟﻤﻮﺟﻮدة ﻓﻰ‬
‫‪Examples\general\graphs\intgraph.llb‬‬
‫واﻳﻀﺎ اﻟﻤﺜﺎﻟﻴﻴﻦ ‪ Simulation of Tomography‬و‪ Heat Equation‬اﻟﻤﻮﺟﻮدﻳﻦ ﻓﻰ‬
‫‪Examples\analysis\mathxmpl.llb‬‬

‫‪87‬‬
‫‪3D Graphs‬‬
‫ﻳﻤﻜﻦ ﻓﻰ ‪ LabVIEW‬رﺳﻢ رﺳﻮﻣﺎت ﻓﻰ ﺛﻼث اﺑﻌﺎد ﺣﻴﺚ ﻳﻮﺟﺪ ‪ 3D Surface Graph‬و ‪3D‬‬
‫‪ Parametric Graph‬و ‪ 3D Curve Graph‬ﻟﻌﻤﻞ رﺳﻮﻣﺎت ﻓﻰ ﺛﻼث اﺑﻌﺎد ‪ X‬و ‪ Y‬و ‪.Z‬‬
‫وهﺬة ‪ Graphs‬ﻻ ﺗﻮﺟﺪ ﻓﻰ اﻟﻨﺴﺨﺔ اﻻﺳﺎﺳﻴﺔ ﻟـ ‪ LabVIEW‬اﻧﻤﺎ ﺗﻮﺟﺪ ﻣﻊ ‪.LabVIEW Professional‬‬

‫وﻳﺘﻢ ادراج هﺬة ‪ 3D Graphs‬ﻣﻦ‬


‫‪Controls Palette>>Graphs‬‬

‫وهﺬة ‪ 3D Graphs‬ﻟﻴﺴﺖ آﺎ ‪ Graphs‬اﻟﻌﺎدﻳﺔ واﻧﻤﺎ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﺗﻘﻨﻴﺔ ‪. ActiveX‬‬

‫وﻋﻨﺪ اﺧﺘﻴﺎر ‪ 3D Graph‬ﻣﻦ ‪ Controls Palette‬ﻳﻘﻮم ‪ LabVIEW‬ﺑﺎدراج ﻣﺎ ﻳﺴﻤﻰ ﺑـ ‪ActiveX‬‬


‫‪ Container‬وﺑﺪاﺧﻠﻪ ‪ 3D Graph Control‬ﻓﻰ ‪ . Front Panel‬وﻳﻘﻮم اﻳﻀﺎ ﺑﺎدراج ﻣﺎ ﻳﺴﻤﻰ‬
‫‪ Reference‬ﻟـ ‪ 3D Control Graph‬و ‪ VI‬ﻣﻮﺻﻮل ﺑﻬﺎ هﺬا ‪ Reference‬وهﺬة ‪ VI‬هﻰ اﻟﻤﺴﺌﻮﻟﺔ‬
‫ﻋﻦ اﺧﺮاج اﻟﺮﺳﻢ ﻋﻠﻰ ‪.3D Graph‬‬

‫وﻟﻜﻞ ﻧﻮع ﻣﻦ اﻧﻮاع ‪ 3D Graphs‬اﻟﺜﻼﺛﺔ ‪ VI‬ﺧﺎﺻﺔ ﺑﻪ ﻻﺧﺮاج اﻟﺮﺳﻢ ﻋﻠﻰ ‪.3D Graph‬‬

‫‪88‬‬
89
‫‪3D Surface Graph‬‬
‫ﻳﻘﻮم هﺬا ‪ Graph‬ﺑﺮﺳﻢ اﺳﻄﺢ ﻓﻰ ﺛﻼث اﺑﻌﺎد ‪.‬‬

‫و‪ VI‬اﻟﺨﺎﺻﺔ ﺑﻬﺬا ‪ Graph‬هﻰ ‪3D Surface.vi‬‬

‫واهﻢ ﻣﺪاﺧﻞ هﺬة ‪:VI‬‬


‫• ‪ : 3D Graph‬وهﺬا هﻮ ﻣﺪﺧﻞ ‪ 3D Graph Control Reference‬وﻳﺘﻢ ادراج هﺬا ‪Reference‬‬
‫ﺑﻤﺠﺮد ادراج ‪ 3D Graph Control‬وﻳﻜﻮن ﻣﻮﺻﻮﻻ ﺑﻬﺬا اﻟﻤﺪﺧﻞ آﻤﺎ ﺳﺒﻖ ان اﺷﺮﻧﺎ‪.‬‬
‫• ‪ : X Vector‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺑﻬﺎ ﻗﻴﻢ اﺣﺪاﺛﻴﺎت ‪ X‬وهﺬا اﻟﻤﺪﺧﻞ اﺧﺘﻴﺎرى اى ﻳﻤﻜﻦ‬
‫ﻋﺪم اﻟﺘﻮﺻﻴﻞ ﻟﻪ آﻤﺎ ﺳﻨﺮى‪.‬‬
‫• ‪ : Y Vector‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺑﻬﺎ ﻗﻴﻢ اﺣﺪاﺛﻴﺎت ‪ Y‬وهﺬا اﻟﻤﺪﺧﻞ اﺧﺘﻴﺎرى اى ﻳﻤﻜﻦ‬
‫ﻋﺪم اﻟﺘﻮﺻﻴﻞ ﻟﻪ آﻤﺎ ﺳﻨﺮى‪.‬‬
‫• ‪ :Z matrix‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺑﻬﺎ ﻗﻴﻢ اﺣﺪاﺛﻴﺎت ‪. Z‬‬

‫وﻣﺨﺮج هﺬة ‪:VI‬‬


‫‪ : 3D Graph out‬هﺬا ﻣﺨﺮج ﻟـ ‪ 3D Graph Control Reference‬ﻻﺳﺘﺨﺪاﻣﻪ ﻣﻊ اى ‪VI‬‬
‫اﺧﺮى‪.‬‬

‫‪90‬‬
‫آﻴﻔﻴﺔ اﻟﺮﺳﻢ ﻋﻠﻰ ‪: 3D Surface Graph‬‬
‫‪ -1‬ﻳﻤﻜﻦ ﻋﺪم اﻟﺘﻮﺻﻴﻞ اﻟﻰ اﻟﻤﺪﺧﻠﻴﻦ ‪ X Vector‬و ‪ Y Vector‬واﻻآﺘﻔﺎء ﺑﺘﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ‬
‫اﻟﻰ اﻟﻤﺪﺧﻞ ‪.Z Matrix‬‬
‫وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﺗﻜﻮن ﻗﻴﻢ ‪ X‬هﻰ رﻗﻢ اﻟﺼﻒ و ﻗﻴﻢ ‪ Y‬هﻰ رﻗﻢ اﻟﻌﻤﻮد ﻟﻠﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪﻳﻦ ‪.Z Matrix‬‬
‫ﻣﺜﺎل‪:‬‬

‫‪91‬‬
‫ﻣﺜﺎل اﺧﺮ‪:‬‬

‫‪92‬‬
‫‪ -2‬ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ اﻟﻰ اﻟﻤﺪﺧﻞ ‪ X Vector‬و اﺧﺮى اﻟﻰ اﻟﻤﺪﺧﻞ ‪ Y Vector‬و ﻣﺼﻔﻮﻓﺔ‬
‫ذات ﺑﻌﺪﻳﻦ اﻟﻰ اﻟﻤﺪﺧﻞ ‪ Z Matrix‬وﻟﻜﻦ ﻳﺠﺐ ان ﻳﻜﻮن ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ‪ X‬ﻳﺴﺎوى ﻋﺪد ﺻﻔﻮف‬
‫اﻟﻤﺼﻔﻮﻓﺔ ‪ Z‬واﻳﻀﺎ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ‪ Y‬ﻳﺴﺎوى ﻋﺪد اﻋﻤﺪة اﻟﻤﺼﻔﻮﻓﺔ ‪ Z‬واذا ﻟﻢ ﻳﺘﺤﻘﻖ هﺬا اﻟﺸﺮط‬
‫ﺳﻴﺘﻢ ﺗﺠﺎهﻞ اﻟﻤﺼﻔﻮﻓﺘﻴﻦ ‪ X‬و‪.Y‬‬
‫وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ اى ﻗﻴﻤﺔ ﻓﻰ ﻣﺼﻔﻮﻓﺔ ‪ Z‬ﻟﻬﺎ رﻗﻢ ﺻﻒ ﻣﺜﻼ ‪ n‬و رﻗﻢ ﻋﻤﻮد ﻣﺜﻼ ‪ m‬ﻓﺎن اﺣﺪاﺛﻴﺎت ‪ X‬و‪Y‬‬
‫هﻰ )‪) X(n‬اﻟﻌﻨﺼﺮ رﻗﻢ ‪ n‬ﻓﻰ ﻣﺼﻔﻮﻓﺔ ‪ ( X‬و )‪) Y(m‬اﻟﻌﻨﺼﺮ رﻗﻢ ‪ m‬ﻓﻰ ﻣﺼﻔﻮﻓﺔ ‪.(Y‬‬

‫ﻣﺜﺎل ‪ :‬ﺳﻨﺤﺪد ﻗﻴﻢ ‪ X‬و‪ Y‬ﻓﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ‪.‬‬

‫‪93‬‬
94
‫‪3D Parametric Graph‬‬
‫ﺗﻘﻮم هﺬا ‪ Graph‬ﺑﺮﺳﻢ ﺳﻄﻮح ‪ Parametric‬ﻓﻰ ﺛﻼث اﺑﻌﺎد ‪.‬‬

‫و‪ VI‬اﻟﺨﺎﺻﺔ ﺑﻬﺬا ‪ Graph‬هﻰ ‪3D Parametric Surface.vi‬‬

‫واهﻢ ﻣﺪاﺧﻞ هﺬة ‪:VI‬‬


‫• ‪ : 3D Graph‬وهﺬا هﻮ ﻣﺪﺧﻞ ‪ 3D Graph Control Reference‬وﻳﺘﻢ ادراج هﺬا‬
‫‪ Reference‬ﺑﻤﺠﺮد ادراج ‪ 3D Graph Control‬وﻳﻜﻮن ﻣﻮﺻﻼ ﺑﻬﺬا اﻟﻤﺪﺧﻞ آﻤﺎ ﺳﺒﻖ ان اﺷﺮﻧﺎ‪.‬‬
‫• ‪ : X Matrix‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺗﺤﺪد ﺷﻜﻞ اﻟﺴﻄﺢ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺴﺘﻮى ‪.X‬‬
‫• ‪ : Y Matrix‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺗﺤﺪد ﺷﻜﻞ اﻟﺴﻄﺢ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺴﺘﻮى ‪.Y‬‬
‫• ‪ :Z Matrix‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺗﺤﺪد ﺷﻜﻞ اﻟﺴﻄﺢ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺴﺘﻮى ‪.Z‬‬

‫وﻣﺨﺮج هﺬة ‪:VI‬‬


‫‪ : 3D Graph out‬هﺬا ﻣﺨﺮج ﻟـ ‪ 3D Graph Control Reference‬ﻻﺳﺘﺨﺪاﻣﻪ ﻣﻊ اى ‪VI‬‬
‫اﺧﺮى‪.‬‬

‫‪95‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪96‬‬
‫‪3D Curve Graph‬‬

‫ﻳﻘﻮم هﺬا ‪ Graph‬ﺑﺮﺳﻢ ﺧﻂ او ﻣﻨﺤﻨﻰ )‪ (Curve‬ﻓﻰ ﺛﻼث اﺑﻌﺎد‪.‬‬

‫و‪ VI‬اﻟﺨﺎﺻﺔ ﺑﻬﺬا ‪ Graph‬هﻰ ‪3D Curve.vi‬‬


‫واهﻢ ﻣﺪاﺧﻞ هﺬة ‪:VI‬‬
‫• ‪ : 3D Graph‬وهﺬا هﻮ ﻣﺪﺧﻞ ‪ 3D Graph Control Reference‬وﻳﺘﻢ ادراج هﺬا‬
‫‪ Reference‬ﺑﻤﺠﺮد ادراج ‪ 3D Graph Control‬وﻳﻜﻮن ﻣﻮﺻﻼ ﺑﻬﺬا اﻟﻤﺪﺧﻞ آﻤﺎ ﺳﺒﻖ ان‬
‫اﺷﺮﻧﺎ‪.‬‬
‫• ‪ : X Vector‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺗﺤﺘﻮى ﻋﻠﻰ اﺣﺪاﺛﻴﺎت ‪ X‬ﻟﻠﻨﻘﻂ‪.‬‬
‫• ‪ : Y Vector‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺗﺤﺘﻮى ﻋﻠﻰ اﺣﺪاﺛﻴﺎت ‪ Y‬ﻟﻠﻨﻘﻂ‪.‬‬
‫• ‪ : Z Vector‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺗﺤﺘﻮى ﻋﻠﻰ اﺣﺪاﺛﻴﺎت ‪ Z‬ﻟﻠﻨﻘﻂ‪.‬‬
‫وﻣﺨﺮج هﺬة ‪:VI‬‬
‫‪ : 3D Graph out‬هﺬا ﻣﺨﺮج ﻟـ ‪ 3D Graph Control Reference‬ﻻﺳﺘﺨﺪاﻣﻪ ﻣﻊ اى ‪VI‬‬
‫اﺧﺮى‪.‬‬

‫‪97‬‬
‫آﻞ ﻧﻘﻄﺔ ﻓﻰ اﻟﺮﺳﻢ ﻟﻬﺎ اﺣﺪاﺛﻲ ‪ X‬ﻓﻰ ﻣﺼﻔﻮﻓﺔ ‪ X‬و اﺣﺪاﺛﻲ ‪ Y‬ﻓﻰ ﻣﺼﻔﻮﻓﺔ ‪ Y‬و اﺣﺪاﺛﻲ ‪ Z‬ﻓﻰ ﻣﺼﻔﻮﻓﺔ ‪.Z‬‬
‫ﻓﻤﺜﻼ ‪ :‬اﻟﻨﻘﻄﺔ رﻗﻢ ‪ m‬اﺣﺪاﺛﻴﺎﺗﻬﺎ )‪ X(m‬و )‪ Y(m‬و )‪.Z(m‬‬

‫ﻣﺜﺎل ‪:‬‬

‫‪98‬‬
‫ﺧﺼﺎﺋﺺ ‪3D Graph‬‬
‫ﻳﻤﻜﻦ اﻇﻬﺎر ﺧﺼﺎﺋﺺ ‪ 3D Graph‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Graph‬واﺧﺘﻴﺎر‬
‫‪CWGraph3D>> Properties‬‬
‫ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة اﻟﺨﺼﺎﺋﺺ‬

‫‪99‬‬
‫آﻤﺎ ﺗﻈﻬﺮ ﻣﻊ ﻧﺎﻓﺬة ﺧﺼﺎﺋﺺ ‪ Graph‬ﻧﺎﻓﺬة ﺗﻈﻬﺮ ﺷﻜﻞ ‪ Graph‬ﻣﻊ آﻞ ﺗﻐﻴﻴﺮ ﻓﻰ اﻟﺨﺼﺎﺋﺺ‪.‬‬

‫وﻣﻦ اﻣﺜﻠﺔ اﻟﺨﺼﺎﺋﺺ ﺧﺎﺻﻴﺔ اﻻﺳﻢ اﻟﺬى ﻳﻈﻬﺮ ﻋﻠﻰ آﻞ ﻣﺤﻮر‪.‬‬

‫‪100‬‬
‫ﺗﺘﻴﺢ هﺬة ‪ Graphs‬ﺗﺤﺮﻳﻚ اﻟﺮﺳﻮﻣﺎت و دوراﻧﻬﺎ ﻓﻰ ﺛﻼث اﺑﻌﺎد ﺑﻄﺮﻳﻘﺔ ﺗﻔﺎﻋﻠﻴﺔ ﻣﻊ اﻟﻤﺆﺷﺮ‪.‬‬
‫ﻓﺎﻟﺒﻀﻐﻂ ﻋﻠﻰ اﻟﺮﺳﻢ وﺗﺤﺮﻳﻚ اﻟﻤﺆﺷﺮ ﻓﻰ اى اﺗﺠﺎﻩ ﻣﻊ اﺳﺘﻤﺮار اﻟﻀﻐﻂ ﻳﺪور اﻟﺮﺳﻢ ﻣﻊ ﺣﺮآﺔ اﻟﻤﺆﺷﺮ‪.‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﺗﺪوﻳﺮ اﻟﺮﺳﻮﻣﺎت ﻣﺮﺗﺒﻂ ﺑﺨﺎﺻﻴﺔ ‪ Track Mode‬ﻟـ ‪.Graph‬‬

‫‪101‬‬
‫‪ Time Stamps‬و‪Waveforms‬و ‪Dynamic Data‬‬

‫ﻏﺎﻟﺒﺎ ﻣﺎ ﺗﻜﻮن اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﻳﺘﻢ ﺗﺤﻠﻴﻠﻬﺎ ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ ﻣﺮﺗﺒﻄﺔ ﺑﺎﻟﺰﻣﻦ ﻣﺜﻞ اﻻﺷﺎرات و ﺗﻐﻴﺮ درﺟﺔ اﻟﺤﺮارة‬
‫او اى ﻗﻴﻤﺔ ﻓﻴﺰﻳﺎﺋﻴﺔ اﺧﺮى ﻣﻊ اﻟﺰﻣﻦ‪.‬وﻳﻮﺟﺪ ﻓﻰ ‪ LabVIEW‬اﻧﻮاع ﻣﻦ اﻟﺒﻴﺎﻧﺎت اﻟﺨﺎﺻﺔ )‪(Data Type‬‬
‫ﻟﺘﺴﻬﻴﻞ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﻴﺎﻧﺎت اﻟﻤﺮﺗﺒﻄﺔ ﺑﺎﻟﺰﻣﻦ ‪.‬وهﺬة اﻟﺒﻴﺎﻧﺎت اﻟﺨﺎﺻﺔ ﻣﺜﻞ ‪Time Stamps‬‬
‫و‪ Waveforms‬و‪ Digital Data‬و ‪.Dynamic Data‬وﺳﻮف ﻧﺸﺮح هﺬة اﻻﻧﻮاع ﻣﻦ اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫‪102‬‬
Time Stamps
.(‫ﻳﻘﻮم هﺬة اﻟﻨﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﺑﺘﺨﺰﻳﻦ وﻋﺮض اﻟﺘﺎرﻳﺦ و اﻟﻮﻗﺖ ﺑﺪﻗﺔ ﻋﺎﻟﻴﺔ )اﻟﻮﻗﺖ ﻳﺤﺘﻮى ﻋﻠﻰ ﺟﺰء ﻣﻦ اﻟﺜﺎﻧﻴﺔ‬
‫ ﻻدﺧﺎل او ﻋﺮض هﺬا اﻟﻨﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت وهﻤﺎ‬Indicator‫ و‬Control ‫وﻳﻮﺟﺪ‬
.Time Stamp Indicator ‫ و‬Time Stamp Control

:Constant ‫ او‬Indicator ‫ او‬Time Stamp Control ‫آﻴﻔﻴﺔ ادراج‬


‫ ﻣﻦ‬Time Stamp Control or Indicator ‫ﻳﺘﻢ ادراج‬
Controls Palette>>Modern>>Numeric

103
‫آﻤﺎ ﻳﺘﻢ ادراج ‪ Time Stamp Constant‬ﻓﻰ ‪Block Diagram‬‬
‫ﻣﻦ‬
‫‪Function Palette>>Programming>>Timing‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻳﻤﻜﻦ ان ﻳﺤﺘﻮى ‪ Numeric Control‬ﻋﻠﻰ ﻧﻮع اﻟﺒﻴﺎﻧﺎت ‪) Time Stamp‬اى ﻳﺤﺘﻮى ﻋﻠﻰ‬
‫اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ( وذﻟﻚ ﺑﺘﺤﻮﻳﻞ ﻓﻮرﻣﺎت اﻟﺮﻗﻢ اﻟﻰ ‪. Date\Time‬‬

‫‪104‬‬
‫ﺗﻐﻴﻴﺮ ﻗﻴﻢ ‪:Time Stamp‬‬
‫ﻋﻨﺪ ادراج ‪ Time Stamp Control‬او ‪ Indicator‬او ‪ Constant‬ﻳﻜﻮن ﻏﻴﺮ ﻣﺤﺪد اﻟﻮﻗﺖ و ﻻ‬
‫اﻟﺘﺎرﻳﺦ‪.‬‬

‫‪105‬‬
‫وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ او ﺗﻐﻴﻴﺮهﻢ ﺑﻌﺪة ﻃﺮق‪:‬‬
‫‪ -1‬ﺗﺤﺪﻳﺪ وﻗﺖ وﺗﺎرﻳﺦ ‪ Time Stamp‬ﺑﺎﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ اﻟﺤﺎﻟﻴﻴﻦ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس‬
‫ﻋﻠﻰ ‪ Control‬واﺧﺘﻴﺎر‬
‫‪Data Operations>>Set Time to Now‬‬

‫‪-2‬اﺳﺘﺨﺪام زرار ‪.Data/Time Browse‬‬

‫‪ Data/Time Browse‬وﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻪ ﺗﻈﻬﺮ ﻟﻨﺎ‬ ‫ﻳﻮﺟﺪ ﻣﻊ ‪ Time Stamp Control‬زرار‬


‫ﻧﺎﻓﺬة ﺗﺤﺪﻳﺪ اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ وهﻰ ﺗﺸﺒﻪ اﻟﻨﺘﻴﺠﺔ و اﻟﺘﻰ ﻣﻦ ﺧﻼﻟﻬﺎ ﻧﺤﺪد اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ اﻟﺬﻳﻦ ﻧﺮﻳﺪهﻤﺎ‪.‬‬

‫‪106‬‬
‫ﻳﻤﻜﻦ اﻇﻬﺎر ﻧﺎﻓﺬة ﺗﺤﺪﻳﺪ اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Time Stamp‬واﺧﺘﻴﺎر‬
‫‪Data Operations>>Set Time and Date‬‬

‫‪Data and Time‬‬ ‫وذﻟﻚ ﻣﻬﻢ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠـ ‪ Indicator‬و ‪ Constant‬ﺣﻴﺚ ﻟﻴﺲ ﻟﺪﻳﻬﻢ زرار‬
‫‪.Browse‬‬

‫‪107‬‬
‫‪-3‬ﻧﻈﻠﻞ اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪ ﺗﻐﻴﻴﺮﻩ ﻓﻰ ‪ Time Stamp‬ﺑﻮاﺳﻄﺔ اﻻداة ‪ Labeling‬ﺛﻢ ﻧﻜﺘﺐ اﻟﻘﻴﻤﺔ اﻟﺠﺪﻳﺪة او‬
‫ﻧﺴﺘﺨﺪم اﻻﺳﻬﻢ اﻟﻤﻮﺟﻮدة ﻓﻰ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ ‪ Up‬و ‪ Down‬ﻟﺰﻳﺎدة اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﻇﻠﻠﻨﺎهﺎ ﺑﻮاﺣﺪ او ﺗﻘﻠﻴﻠﻬﺎ‬
‫ﺑﻮاﺣﺪ‪.‬او ﻧﺴﺘﺨﺪم اﻟﺴﻬﻤﻴﻦ اﻟﻤﻮﺟﻮدﻳﻦ ﻣﻊ ‪.Control‬‬

‫اﻟﻌﻤﻠﻴﺎت ﻋﻠﻰ ‪:Time Stamp‬‬


‫ﻳﻤﻜﻦ اﻟﻘﻴﺎم ﺑﻌﻤﻞ ﻋﻤﻠﻴﺔ اﻟﻄﺮح ﺑﻴﻦ اﺛﻨﻴﻦ ‪ Time Stamp‬ﻟﻠﺤﺼﻮل ﻋﻠﻰ اﻟﻮﻗﺖ اﻟﻤﺴﺘﻐﺮق ﻓﻰ ﺣﺪث ﻣﻌﻴﻦ‪.‬‬
‫واﻟﻘﻴﻤﺔ اﻟﻨﺎﺗﺠﺔ ﻣﻦ ﻋﻤﻠﻴﺔ اﻟﻄﺮح هﻰ ﻗﻴﻤﺔ رﻗﻤﻴﺔ ﺗﻌﺒﺮ ﻋﻦ اﻟﻮﻗﺖ ﺑﺎﻟﺘﻮاﻧﻰ‪.‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻳﻤﻜﻦ ﺟﻌﻞ ‪ Numeric‬ﻋﻠﻰ هﻴﺌﺔ وﻗﺖ ﻓﻴﻪ ﻗﻴﻢ اﻟﺜﺎﻧﻴﺔ واﻟﺪﻗﺎﺋﻖ واﻟﺴﺎﻋﺎت ﺑﺪﻻ ﻣﻦ اﻟﺜﻮاﻧﻰ ﻓﻘﻂ‬
‫وذﻟﻚ ﺑﺎن ﻧﺠﻌﻞ ﻧﻮع اﻟﻔﻮرﻣﺎت ‪ Relative Format‬وذﻟﻚ ﻣﻦ ﻧﺎﻓﺬة ‪.Format and Precision‬‬

‫‪108‬‬
: ‫ﻣﺜﺎل‬
‫ اﻟﻤﻮﺟﻮدة ﻓﻰ‬Get Date/Time In Seconds ‫ﺳﻨﺴﺘﺨﺪم داﻟﺔ‬
Function Palette >>Programming >> Timing

109
‫ﻟﻠﺤﺼﻮل ﻋﻠﻰ اﻟﻮﻗﺖ ﻗﺒﻞ وﺑﻌﺪ ﺗﻨﻔﻴﺬ ﺟﺰء ﻣﻌﻴﻦ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ ﺛﻢ ﻧﺤﺴﺐ اﻟﻮﻗﺖ اﻟﻤﺴﺘﻐﺮق ﻓﻰ ﺗﻨﻔﻴﺬ هﺬا‬
‫اﻟﺠﺰء‪.‬وﺳﻨﺴﺘﺨﺪم اﻳﻀﺎ ‪.Flat Sequence Structure‬‬

‫آﻤﺎ ﻳﻤﻜﻦ اﺿﺎﻓﺔ وﻗﺖ ﺑﺎﻟﺜﺎﻧﻴﺔ اﻟﻰ ‪ Time Stamp‬ﺑﻮاﺳﻄﺔ اﻟﺪاﻟﺔ ‪.Add‬‬

‫‪110‬‬
‫اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ ‪ Time Stamp‬و‪: Numeric‬‬
‫ﻟﻘﺪ رأﻳﻨﺎ ان هﻨﺎك ﻋﻼﻗﺔ ﺑﻴﻦ ‪ Numeric‬و ‪.Time Stamp‬‬
‫وﺗﻮﺟﺪ دوال ﻟﻠﺘﺤﻮﻳﻞ ﺑﻴﻨﻬﻢ ﻣﺜﻞ‬
‫داﻟﺔ ‪ To Double Precision Float‬ﻟﻠﺘﺤﻮﻳﻞ اﻟﻰ رﻗﻢ ﻣﻦ ﻧﻮع ‪. DBL‬و ﻳﻤﻜﻦ اﺳﺘﺨﺪام هﺬة اﻟﺪاﻟﺔ‬
‫ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ‪ Time Stamp‬اﻟﻰ ‪.DBL‬‬

‫او داﻟﺔ ‪ To Time Stamp‬ﻟﻠﺘﺤﻮﻳﻞ ﻣﻦ ‪ Numeric‬اﻟﻰ ‪.Time Stamp‬‬

‫‪.‬وﻳﻤﻜﻦ ادراج هﺬة اﻟﺪوال ﻣﻦ‬


‫‪Function Palette>> Programming >>Numeric >> Conversion‬‬

‫‪111‬‬
‫او‬
Function Palette >> Programming >> Timing

112
‫‪Waveforms‬‬
‫ﻣﻦ اآﺜﺮ اﻟﺒﻴﺎﻧﺎت اهﻤﻴﺔ وﻳﻜﺜﺮ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ هﻰ اﻻﺷﺎرات او اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺗﺘﻐﻴﺮ ﻣﻊ اﻟﺰﻣﻦ ﻣﺜﻞ ﺗﻐﻴﻴﺮ‬
‫اﻟﺼﻮت او اﻟﻀﻐﻂ او اﻟﺤﺮارة ﻣﻊ اﻟﺰﻣﻦ‪.‬واﻳﻀﺎ اﻻﺷﺎرات اﻟﺮﻗﻤﻴﺔ )‪ (Digital‬اﻟﺘﻰ ﺗﺴﺘﺨﺪم ﻓﻰ اﻻﺗﺼﺎﻻت‬
‫وﺑﻮاﺳﻄﺔ اﻟﻜﻤﺒﻴﻮﺗﺮ‪.‬‬
‫ﻟﺴﻬﻮﻟﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ هﺬة اﻟﺒﻴﺎﻧﺎت ﻳﻮﺟﺪ ﻓﻰ ‪ LabVIEW‬ﻧﻮع ﺧﺎص ﻣﻦ اﻟﺒﻴﺎﻧﺎت )‪ ( Data Type‬ﻟﻠﺘﻌﺎﻣﻞ‬
‫ﻣﻊ اﻻﺷﺎرات او اﻟﺒﻴﺎﻧﺎت اﻟﻤﺮﺗﺒﻄﺔ ﺑﺎﻟﺰﻣﻦ وهﻮ ‪.Waveforms‬‬

‫وﻳﺤﺘﻮى ‪ Waveform‬ﻋﻠﻰ ‪:‬‬


‫¾ ‪ Time Stamp‬ﻳﺤﺘﻮى ﻋﻠﻰ زﻣﻦ ﺑﺪاﻳﺔ ﺗﺴﺠﻴﻞ اﻟﺒﻴﺎﻧﺎت او زﻣﻦ اول ﻗﻴﻤﺔ ﻓﻰ اﻟﺒﻴﺎﻧﺎت )‪(t0‬‬
‫¾ ‪ Numeric‬ﻳﺤﺘﻮى ﻋﻠﻰ ﻗﻴﻤﺔ اﻟﻔﺮق اﻟﺰﻣﻨﻰ ﺑﻴﻦ آﻞ ﻗﻴﻤﺔ واﻟﺘﻰ ﺗﻠﻴﻬﺎ )‪.(dt‬‬
‫¾ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺗﺤﺘﻮى ﻋﻠﻰ ﻗﻴﻢ اﻟﺒﻴﺎﻧﺎت )‪.(Y‬‬

‫ﻻﺣﻆ اﻧﻪ ﺑﻤﻌﺮﻓﺔ زﻣﻦ اول ﻗﻴﻤﺔ ﻓﻰ اﻟﺒﻴﺎﻧﺎت واﻟﺰﻣﻦ ﺑﻴﻦ آﻞ ﻗﻴﻤﺔ واﻟﺘﻰ ﺗﻠﻴﻬﺎ ﻳﻤﻜﻦ ﺣﺴﺎب زﻣﻦ اى ﻗﻴﻤﺔ ﻣﻦ‬
‫ﻗﻴﻢ اﻻﺷﺎرة او اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬
‫وآﺄى ‪ Data Type‬ﻓﻰ ‪ LabVIEW‬ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت و ‪ Clusters‬ﻳﻤﻜﻦ اﻟﻘﻴﺎم ﺑﻜﺜﻴﺮ ﻣﻦ اﻟﻌﻤﻠﻴﺎت ﻋﻠﻰ‬
‫‪ Waveforms‬ﻣﺜﻞ اﻟﺠﻤﻊ و اﻟﻄﺮح‪.‬‬
‫وﻳﻮﺟﺪ ﻧﻮﻋﺎن ﻣﻦ ‪ Waveform‬هﻤﺎ ‪:‬‬
‫‪ Analog Waveform -1‬وهﻮ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺷﺎرات اﻟﺘﻤﺎﺛﻠﻴﺔ ‪.‬‬

‫‪113‬‬
‫وﻋﻨﺪ ذآﺮ آﻠﻤﻪ ‪ Waveform‬ﻓﻘﻂ ﻓﺎﻧﻨﺎ ﻧﻘﺼﺪ ‪.Analog Waveform‬‬

‫‪ Digital Waveform -2‬ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺷﺎرات اﻟﺮﻗﻤﻴﺔ ‪.‬‬

‫)ﺷﻜﻞ ﻣﺼﻐﺮ ﻟﺪاﻟﺔ ‪(Sin‬وان ﻟﻮﻧﻪ ﺑﺮﺗﻘﺎﻟﻰ‪.‬‬ ‫ﻻﺣﻆ ان رﻣﺰ ‪ Analog Waveform‬هﻮ‬
‫)ﺷﻜﻞ ﻣﺼﻐﺮ ﻟـ ‪ (Square Wave‬وان ﻟﻮﻧﻪ اﺧﻀﺮ‪.‬‬ ‫اﻣﺎ رﻣﺰ ‪ Digital Waveform‬هﻮ‬
‫واﻟﻠﻮن واﻟﺸﻜﻞ ﻣﻬﻤﻴﻦ ﻓﻰ اﻟﺘﻌﺮف ﻋﻠﻰ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑﻬﻤﺎ‪.‬‬
‫وﻳﺘﻢ ادراج ‪ Controls‬و‪ Indicators‬اﻟﺨﺎﺻﺔ ﺑـ ‪ Waveform‬و ‪ Digital Waveform‬ﻣﻦ‬
‫‪Controls Palette>>Modern>>I/O‬‬

‫‪114‬‬
‫ذآﺮﻧﺎ ان ‪ Waveform‬ﻳﺤﺘﻮى ﻋﻠﻰ ﻣﺼﻔﻮﻓﺔ ‪Y‬ذات ﺑﻌﺪ واﺣﺪ و ‪ t0‬و ‪ dt‬وﺗﺤﺘﻮى اﻳﻀﺎ ﻋﻠﻰ ‪.Attribute‬‬
‫وﻧﺘﻌﺮف ﻋﻠﻰ هﺬة اﻟﻤﻜﻮﻧﺎت ﺑﺎﻟﻨﺴﺒﺔ ﻟـ ‪ Analog Waveform‬و‪:Digital Waveform‬‬

‫اﻟﻤﺼﻔﻮﻓﺔ ‪ :Y‬ﻓﺎﻧﻬﺎ ﻓﻰ ﺣﺎﻟﺔ ‪ Analog Waveform‬ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﻣﻦ ﻗﻴﻢ ﺗﺘﻐﻴﺮ‬
‫ﻣﻊ اﻟﺰﻣﻦ)ﻗﻴﻢ اﻻﺷﺎرة( وﻋﺎدة ﺗﻜﻮن هﺬة اﻟﻘﻴﻢ ﻣﻦ اﻟﻨﻮع ‪. DBL‬‬
‫وﻓﻰ ﺣﺎﻟﺔ اذا آﺎﻧﺖ اﻻﺷﺎرة ﻋﺒﺎرة ﻋﻦ ﺣﺎﻟﺘﻴﻦ ‪ 0‬و ‪ 5‬ﻓﻮﻟﺖ ﻣﺜﻼ اى اﺷﺎرة رﻗﻤﻴﺔ ﻓﺎﻧﻨﺎ ﻧﺴﺘﺨﺪم ‪Digital‬‬
‫‪ Waveform‬ﻟﺘﺨﺰﻳﻦ اﻻﺷﺎرة و ﻣﻌﺎﻟﺠﺘﻬﺎ‪.‬‬
‫و‪ Y‬ﻓﻰ ﺣﺎﻟﺔ ‪ Digital Waveform‬ﻋﺒﺎرة ﻋﻦ ﻧﻮع اﺧﺮ ﻣﻦ اﻟﺒﻴﺎﻧﺎت هﻮ ‪ Digital Data‬ﺳﻮف ﻧﺸﺮﺣﻪ‬
‫ﺑﺎﻟﺘﻔﺼﻴﻞ ﻓﻰ هﺬة اﻟﺪرس‪.‬و ﺑﺎﺧﺘﺼﺎر ‪ Digital Data‬ﻋﺒﺎرة ﺟﺪول ﻣﻦ اﻻرﻗﺎم اﻟﺜﻨﺎﺋﻴﺔ )‪0‬و‪(1‬هﺬا اﻟﺠﺪول‬
‫ﻳﻤﺜﻞ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻻﺷﺎرات اﻟﺮﻗﻤﻴﺔ آﻤﺎ ﺳﻨﺮى‪.‬‬

‫‪ : t0‬آﻤﺎ ذآﺮﻧﺎ ﻓﺎﻧﻬﺎ ‪ Time Stamp‬ﻓﻴﻬﺎ زﻣﻦ اول ﻗﻴﻤﺔ ﻓﻰ ‪ Y‬او ﺑﺪاﻳﺔ ﺗﺴﺠﻴﻞ اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫‪ : dt‬وهﻰ ﻗﻴﻤﺔ وﺣﻴﺪة ﺗﻤﺜﻞ اﻟﻔﺮق اﻟﺰﻣﻨﻰ ﺑﻴﻦ آﻞ ﻗﻴﻤﺔ واﻟﺘﻰ ﺗﻠﻴﻬﺎ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ‪.Y‬‬

‫‪ :Attribute‬وهﺬا اﻟﻤﻜﻮن ﻟﻴﺲ ﻇﺎهﺮا ﺣﻴﻦ ادراج ‪ Waveform‬وﻻﻇﻬﺎرﻩ ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس‬
‫ﻋﻠﻰ ‪ Waveform‬وﻧﺨﺘﺎر‬

‫‪Visible Items>>Attribute‬‬

‫‪115‬‬
‫و‪ Attribute‬ﻣﻦ اﻟﻨﻮع ‪ Variant‬وهﺬا اﻟﻨﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻳﻤﻜﻦ ﺗﺨﺰﻳﻦ ﻓﻴﻪ اى ﻧﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت اﻟﻤﺴﺘﺨﺪﻣﺔ‬
‫ﻓﻰ ‪. LabVIEW‬وﻳﺤﺘﻮى ‪ Attribute‬ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت اﺿﺎﻓﻴﺔ ﻋﻦ ‪ Waveform‬ﻣﺜﻞ رﻗﻢ ‪ Channel‬او‬
‫رﻗﻢ ﺟﻬﺎز‪.‬و ‪ Attribute‬ﻣﻜﻮن اﺧﺘﻴﺎرى ﻟﺘﺨﺰﻳﻦ اى ﻣﻌﻠﻮﻣﺎت اﺿﺎﻓﻴﺔ‪.‬‬

‫ﻣﻘﺎرﻧﺔ ﺑﻴﻦ ‪ Waveform‬واﻟﻤﺼﻔﻮﻓﺎت‪:‬‬

‫ﺗﺘﺸﺎﺑﺔ ‪ Waveform‬ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت اﻻ ان ‪ Waveform‬ﻟﻬﺎ ﻣﻤﻴﺰات ﻋﻦ اﻟﻤﺼﻔﻮﻓﺎت ﻣﻨﻬﺎ‪:‬‬

‫‪116‬‬
‫‪ Waveform -1‬ﺑﻬﺎ ﻣﻌﻠﻮﻣﺎت ﻋﻦ زﻣﻦ اﻻﺷﺎرة ﻓـ ‪ t0‬ﺗﺴﺠﻞ ﺑﺪاﻳﺔ ﻗﻴﺎس اﻻﺷﺎرة اﻟﺘﺎرﻳﺦ و اﻟﻮﻗﺖ ‪.‬ﻟﺬﻟﻚ‬
‫هﻰ ﻣﻨﺎﺳﺒﺔ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺷﺎرات اﻟﻤﻜﺘﺴﺒﺔ ﻣﻦ آﺮوت ‪.Data Acquisition‬‬

‫‪ -2‬ﺳﻬﻮﻟﺔ اﻟﺮﺳﻢ ﻋﻠﻰ ‪ Graphs‬ﺑﺎﺳﺘﺨﺪام ‪ Waveform‬ﺣﻴﺚ ﻳﺘﻢ ﺗﻮﺻﻴﻞ ‪Waveform‬ﻣﺒﺎﺷﺮة ﻣﻊ‬


‫‪ Graphs‬ﻋﻜﺲ اﻟﻤﺼﻔﻮﻓﺎت اﻟﺘﻰ ﺗﺤﺘﺎج اﻟﻰ اﺳﺘﺨﺪام ‪ Bundle‬ﻟﺘﺤﺪﻳﺪ ‪ x0‬و ‪ dx‬راﺟﻊ اﻟﺠﺰء اﻟﺨﺎص ﺑـ‬
‫‪.Graphs‬‬

‫‪ -3‬ﺳﻬﻮﻟﺔ رﺳﻢ اآﺜﺮ ﻣﻦ رﺳﻢ ﻋﻠﻰ ‪Graphs‬‬

‫اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑـ ‪:Waveform‬‬


‫ﺗﻮﺟﺪ دوال آﺜﻴﺮة ﻻﻧﺸﺎء ‪ Waveform‬وﻟﻠﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‪.‬‬
‫وﻳﺘﻢ ادراج هﺬة اﻟﺪوال ﻣﻦ‬
‫‪Functions Palette>> Programming>>Waveform‬‬

‫‪117‬‬
‫وﻣﻦ اهﻢ هﺬة اﻟﺪوال ‪ Get Waveform Components‬وداﻟﺔ ‪.Build Waveform‬‬
‫داﻟﺔ ‪: Get Waveform Components‬‬

‫وﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻓﻰ اﻟﺤﺼﻮل ﻋﻠﻰ ﻣﻜﻮﻧﺎت ‪ Waveform‬ﻣﻦ ‪ t0‬او ‪ dt‬او ‪.Y‬‬
‫وﺗﺸﺒﻪ هﺬة اﻟﺪاﻟﺔ داﻟﺔ ‪ Unbundle‬اﻟﺘﻰ ﺗﺴﺘﺨﺪم ﻣﻊ ‪.Cluster‬‬
‫وﻣﺪﺧﻞ هﺬة اﻟﺪاﻟﺔ ‪ Waveform:‬اﻟﺬى ﻧﺮﻳﺪ اﻟﺤﺼﻮل ﻋﻠﻰ اﺣﺪ ﻣﻜﻮﻧﺎﺗﻪ‪.‬‬
‫وﻣﺨﺎرﺟﻬﺎ ‪:‬اى ﻣﻦ ﻣﻜﻮﻧﺎت ‪.Waveform‬‬

‫وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد اﻟﻤﺪاﺧﻞ ﺑﻤﺪ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻻﺳﻔﻞ‪.‬‬


‫وﻻﺧﺘﻴﺎر ﻧﻮع اﻟﻤﺨﺮج ﻧﻀﻐﻂ ﻋﻠﻰ اﻟﻤﺨﺮج ﺑﻮاﺳﻄﺔ اﻻداة ‪ Operating‬وﻧﺨﺘﺎر ﻧﻮع اﻟﻤﺨﺮج اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫‪118‬‬
‫ اى ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻣﻊ‬Polymorphism ‫ ﺧﺎﺻﻴﺔ‬Get Waveform Components ‫ﻟﺪاﻟﺔ‬
‫آﻤﺎ ﺳﻴﺘﻐﻴﺮ رﻣﺰ اﻟﻤﺪﺧﻞ‬Digital Waveform ‫ وﺳﺘﺘﻐﻴﺮ اﻟﻤﺨﺎرج اﻟﻰ ﻣﻜﻮﻧﺎت‬Digital Waveform
. Digital Waveform ‫ اﻟﻰ رﻣﺰ‬Analog Waveform ‫ﻣﻦ رﻣﺰ‬

119
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻳﻤﻜﻦ اﺿﺎﻓﺔ ﻣﺨﺮج او ﺗﺤﺪﻳﺪ ﻧﻮﻋﻪ او ﺣﺬﻓﺔ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻤﺨﺮج ‪.‬‬

‫داﻟﺔ ‪:Build Waveform‬‬


‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺈﻧﺸﺎء ‪Waveform‬ﺟﺪﻳﺪة او ﺑﺘﻌﺪﻳﻞ ﻣﻜﻮﻧﺎت ‪ Waveform‬ﻣﻮﺟﻮدة‪.‬‬

‫و ﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ‬


‫¾ ﻣﺪﺧﻞ ‪ Waveform‬اﻟﺬى ﻧﺮﻳﺪ ﺗﻌﺪﻳﻞ ﻣﻜﻮﻧﺎﺗﻪ‪.‬‬
‫¾ ﻣﺪاﺧﻞ ﻻى ﻣﻦ ﻣﻜﻮﻧﺎت ‪ Y) Waveform‬او ‪ to‬او ‪ dt‬او‪ ( Attribute‬وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد هﺬة اﻟﻤﺪاﺧﻞ ‪.‬‬

‫وﻣﺨﺮج هﺬة اﻟﺪاﻟﺔ‬


‫¾ ﻣﺨﺮج ‪ Waveform‬اﻟﺠﺪﻳﺪة او اﻟﻤﻌﺪﻟﺔ‬

‫‪120‬‬
‫ﻳﻤﻜﻦ ﻣﺪ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻻﺳﻔﻞ ﻟﺰﻳﺎدة ﻋﺪد اﻟﻤﺪاﺧﻞ وﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﻤﺪﺧﻞ ﺑﺎﻻداة ‪ Operating‬ﺗﻈﻬﺮ ﻟﻨﺎ‬
‫ﻗﺎﺋﻤﺔ ﻧﺨﺘﺎر ﻣﻨﻬﺎ ﻧﻮع اﻟﻤﺪﺧﻞ‬

‫اذا ﻟﻢ ﻳﺘﻢ ﺗﻮﺻﻴﻞ ﻣﺪﺧﻞ ‪ Waveform‬ﻳﺘﻢ اﻧﺸﺎء ‪Waveform‬ﺟﺪﻳﺪة ﺑﺎﻟﻤﻜﻮﻧﺎت اﻟﺘﻰ ﻋﻠﻰ اﻟﻤﺪاﺧﻞ‬

‫‪121‬‬
‫اذا ﺗﻢ ﺗﻮﺻﻴﻞ ‪ Waveform‬ﻓﻰ اﻟﻤﺪﺧﻞ ﻓﺎﻧﻪ ﻳﺘﻢ اﺳﺘﺒﺪال ﻣﻜﻮﻧﺎﺗﻬﺎ ﺑﺎﻟﻤﻜﻮﻧﺎت اﻟﻤﻮﺟﻮدة ﻋﻠﻰ ﻣﺪاﺧﻞ اﻟﺪاﻟﺔ‪.‬‬

‫ﻟﺪاﻟﺔ ‪ Build Waveform‬اﻳﻀﺎ ﺧﺎﺻﻴﺔ ‪ Polymorphism‬اى ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻣﻊ ‪Digital‬‬


‫‪ Waveform‬وﺳﺘﺘﻐﻴﺮ اﻟﻤﺪاﺧﻞ اﻟﻰ ﻣﻜﻮﻧﺎت ‪Digital Waveform‬آﻤﺎ ﺳﻴﺘﻐﻴﺮ رﻣﺰ اﻟﻤﺪﺧﻞ واﻟﻤﺨﺮج‬
‫‪.Digital Waveform‬‬ ‫‪ Analog Waveform‬اﻟﻰ رﻣﺰ‬ ‫ﻣﻦ رﻣﺰ‬

‫‪122‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻳﻤﻜﻦ اﺿﺎﻓﺔ ﻣﺪﺧﻞ او ﺗﺤﺪﻳﺪ ﻧﻮﻋﻪ او ﺣﺬﻓﺔ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻤﺪﺧﻞ‪.‬‬

‫ﺗﻮﺟﺪ ﻣﺠﻤﻮﻋﺎت اﺧﺮى ﻣﻦ اﻟﺪوال ﺧﺎﺻﺔ ﺑـ ‪.Waveform‬‬


‫ﻣﺜﻞ ﻣﺠﻤﻮﻋﺔ دوال ‪ Analog Waveform‬اﻟﻤﻮﺟﻮدة ﻓﻰ‬
‫‪Function Palette>>Programming>>Waveform>>Analog Waveform‬‬

‫وﺗﻘﻮم هﺬة اﻟﺪوال ﺑﺎﻟﻌﻤﻠﻴﺎت ﻋﻠﻰ ‪ Analog Waveforms‬ﻣﻦ ﺟﻤﻊ وﻃﺮح وﺿﺮب واﻟﺤﺼﻮل ﻋﻠﻰ‬
‫اﻋﻠﻰ واﺻﻐﺮ ﻧﻘﻄﺔ ‪.‬‬

‫‪123‬‬
Waveforms ‫ ﻳﺠﺐ ان ﺗﻜﻮن‬Waveform ‫ اﻟﺪوال اﻟﺘﻰ ﺗﻘﻮم ﺑﻌﻤﻠﻴﺎت ﻋﻠﻰ اآﺜﺮ ﻣﻦ‬: ‫ﻣﻠﺤﻮﻇﺔ‬
.dt ‫اﻟﺪاﺧﻠﺔ اﻟﻴﻬﺎ ﻟﻬﺎ ﻧﻔﺲ‬

‫ اﻟﻤﻮﺟﻮدة ﻓﻰ‬Waveform Generation ‫ﻣﺠﻤﻮﻋﺔ‬


Function Palette>>Programming>>Waveform>>Analog Waveform
>>Waveform Generation

Sine ‫ و‬Noise‫ و‬Single and Multitone ‫وﺗﻘﻮم هﺬة اﻟﺪوال ﺑﺎﺧﺮاج اﻧﻮاع ﻣﺨﺘﻠﻔﺔ ﻣﻦ اﻻﺷﺎرات ﻣﺜﻞ‬
...‫ واﺧﺮى‬Sawtooth ‫و‬Triangle Wave‫ و‬Square Wave‫ و‬Wave

‫ اﻟﻤﻮﺟﻮدة ﻓﻰ‬Waveform Measurements ‫ﻣﺠﻤﻮﻋﺔ اﻟﺪوال‬


Function Palette>>Programming>>Waveform>>Analog Waveform
>>Waveform Measurements

124
Frequency Domain ‫ و‬Time Domain ‫ ﻓﻰ‬Waveform ‫وﺗﻘﻮم هﺬة اﻟﺪوال ﺑﻌﻤﻞ ﻗﻴﺎﺳﺎت ﻋﻠﻰ‬
‫ وﻗﻴﺎﺳﺎت‬FFT ‫و اﻳﻀﺎ‬Phase ‫ و‬Amplitude ‫ و‬Tone Frequency ‫ و‬RMS ‫ و‬DC ‫ﻣﺜﻞ‬
...‫اﺧﺮى‬
‫ اﻟﻤﻮﺟﻮدة ﻓﻰ‬Digital Waveform ‫ﻣﺠﻤﻮﻋﺔ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑﺎﻟﻌﻤﻠﻴﺎت ﻋﻠﻰ‬
Function Palette>>Programming>>Waveform>>Digital Waveform

125
‫ ﻣﺜﻞ اﻟﺒﺤﺚ ﻓﻰ اﻻﺷﺎرة او ﺿﻐﻂ او ﻓﻚ‬Digital Waveform‫وﺗﻘﻮم هﺬة اﻟﺪوال ﺑﺎﻟﻌﻤﻠﻴﺎت اﻟﺨﺎﺻﺔ ﺑـ‬
.‫ وﻏﻴﺮهﺎ‬Waveform ‫ﺿﻐﻂ‬
‫ اﻟﻤﻮﺟﻮدة ﻓﻰ‬Digital Conversion ‫ﻣﺠﻤﻮﻋﺔ اﻟﺪوال‬
Function Palette>>Programming>>Waveform>>Digital Waveform
>> Digital Conversion

.‫ اﻟﻰ ﺻﻮر اﺧﺮى واﻟﻌﻜﺲ‬Digital Data ‫وﺗﻘﻮم هﺬة اﻟﺪوال ﺑﺘﺤﻮﻳﻞ‬


‫ اﻟﻤﻮﺟﻮدة ﻓﻰ‬Waveform File I/O ‫ﻣﺠﻤﻮﻋﺔ اﻟﺪوال‬
Function Palette>>Programming>>Waveform>> Waveform File I/O

.‫ ﻣﻦ ﻣﻠﻔﺎت‬Waveforms ‫ ﻓﻰ ﻣﻠﻔﺎت واﻳﻀﺎ ﺗﺴﺘﺪﻋﻰ‬Waveforms ‫وﺗﻘﻮم هﺬة اﻟﺪوال ﺑﺘﺨﺰﻳﻦ‬

126
‫‪Digital Data‬‬

‫ﻋﻠﻤﻨﺎ ان )‪ Digital Data (Y‬هﻰ اﺣﺪ ﻣﻜﻮﻧﺎت ‪.Digital Waveform‬‬


‫وﻓﻰ ‪ Digital Data‬ﻳﺘﻢ ﺗﻤﺜﻴﻞ اﻻرﻗﺎم ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻰ ﺑﺤﻴﺚ ﻳﺘﻜﻮن ﺟﺪول ﻳﺘﻜﻮن ﻣﻦ اﻋﻤﺪة ‪،‬هﺬة اﻻﻋﻤﺪة‬
‫ﺗﻤﺜﻞ ‪) Signals‬اى اﺷﺎرة رﻗﻤﻴﺔ ﺗﻜﻮن ﻓﻴﻬﺎ اﻟﻘﻴﻤﺔ ‪ 0‬او ‪ (1‬واﻟﺼﻔﻮف هﻰ اﻟﻘﻴﻢ اﻟﻤﺘﻌﺎﻗﺒﺔ ﻓﻰ هﺬة اﻻﺷﺎرة‪.‬‬

‫ﻳﻤﻜﻦ ادراج ‪ Digital Data Control‬ﻣﻦ‬


‫‪Controls Palette>>Modern>>I/O‬‬

‫‪127‬‬
‫ﻳﻤﻜﻦ ﺗﻌﺪﻳﻞ اﻟﻘﻴﻢ اﻟﻤﻮﺟﻮدة ﻓﻰ ‪ Digital Data‬ﺑﺘﻈﻠﻴﻞ اﻟﻘﻴﻤﺔ وآﺘﺎﺑﺔ اﻟﻘﻴﻤﺔ اﻟﺠﺪﻳﺪة‪.‬‬

‫آﻤﺎ ﻳﻤﻜﻦ اﺿﺎﻓﺔ ﺻﻒ او ﻋﻤﻮد او ﺣﺬف ﺻﻒ او ﻋﻤﻮد وذﻟﻚ ﻣﻦ اﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ اﻟﻤﺎوس ﻋﻠﻰ‬
‫‪.Digital Data‬‬

‫‪128‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻋﻨﺪ ادراج ‪ Digital Data‬اول ﻣﺮة ﺗﻜﻮن ﻓﺎرﻏﺔ وﻳﻤﻜﻦ ادﺧﺎل اﻟﻘﻴﻢ اﻟﻴﻬﺎ ﻣﺒﺎﺷﺮة او اﺳﺘﺨﺪام‬
‫دوال اﻟﺘﺤﻮﻳﻞ آﻤﺎ ﺳﻨﺮى ‪.‬‬
‫وهﺬا اﻟﺮﻣﺰ ﻣﻬﻢ ﻓﻰ اﻟﺘﻌﺮف ﻋﻠﻰ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑﻪ‪.‬‬ ‫ﻣﻠﺤﻮﻇﺔ ‪ :‬رﻣﺰ ‪ Digital Data‬هﻮ‬
‫ﻳﻤﻜﻦ ﺗﺤﻮﻳﻞ ‪ Digital Data‬اﻟﻰ اﻧﻮاع اﺧﺮى ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻣﺜﻞ ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻻرﻗﺎم اﻟﺜﻨﺎﺋﻴﺔ او ﻣﺼﻔﻮﻓﺔ‬
‫ﻣﻦ اﻻرﻗﺎم اﻟﺼﺤﻴﺤﺔ واﻳﻀﺎ ﻳﻤﻜﻦ اﻟﻌﻜﺲ وذﻟﻚ ﻣﻦ ﺧﻼل دوال اﻟﺘﺤﻮﻳﻞ‬
‫‪ Digital Conversion‬اﻟﻤﻮﺟﻮدة ﻓﻰ‬
‫‪Function Palette>>Programming>>Waveform>>Digital Waveform‬‬
‫‪>> Digital Conversion‬‬

‫اﻣﺜﻠﺔ‪:‬‬
‫‪ -1‬اﻟﺘﺤﻮﻳﻞ ﻣﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﻟﻘﻴﻢ ﺛﻨﺎﺋﻴﺔ اﻟﻰ ‪Digital Data‬‬

‫‪ -2‬ﺗﺤﻮﻳﻞ ﻣﺼﻔﻮﻓﺔ ﺑﻬﺎ ارﻗﺎم ﺻﺤﻴﺤﺔ ﻣﻦ اﻟﻨﻮع ‪ Unsigned Integer ) U8‬ﻣﻜﻮن ﻣﻦ ‪ 8‬ﺑﺖ( اﻟﻰ‬
‫‪.Digital Data‬‬

‫‪129‬‬
‫ﻣﻠﺤﻮﻇﺔ‪ :‬هﺬة اﻟﺪوال ‪ Polymorphic‬اى اﻧﻬﺎ ﺗﻌﻤﻞ ﻣﻊ اآﺜﺮ ﻣﻦ ﻧﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻣﺜﻞ ‪Digital Data‬‬
‫و‪ Digital Waveform‬ﻟﺬﻟﻚ ﻳﻮﺟﺪ ﻣﻌﻬﺎ ‪ Polymorphic VI Selector‬ﻻﺧﺘﻴﺎر ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺬى‬
‫ﻧﺮﻳﺪ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪. Polymorphic VI Selector‬‬

‫‪130‬‬
Digital Waveform Graph
.Digital Waveform ‫ او‬Digital Data ‫ ﺑﺮﺳﻢ اﻟﻘﻴﻢ اﻟﺮﻗﻤﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻰ‬Graph ‫ﻳﻘﻮم هﺬا‬

‫ ﻣﻦ‬Digital Waveform Graph ‫ﻳﺘﻢ ادراج‬


Controls Palette>>Modern>>Graphs

Digital Waveform ‫ او‬Digital Data ‫ ﺑﺘﻮﺻﻴﻞ‬Digital Waveform Graph ‫ﻳﺘﻢ اﻟﺮﺳﻢ ﻋﻠﻰ‬
.Graph ‫اﻟﻰ‬

131
Digital Waveform Graph ‫ ﺑـ‬Digital Data ‫ ﻣﺜﺎل ﺑﺴﻴﻂ ﻳﻮﺿﺢ ﺗﻮﺻﻴﻞ‬-1:‫اﻣﺜﻠﺔ‬

.Digital Waveform Graph ‫ اﻟﻰ‬Digital Waveform ‫ ﺗﻮﺻﻴﻞ‬-2

132
‫‪Dynamic Data‬‬
‫ﺗﻘﺮﻳﺒﺎ آﻞ ‪ Express VI‬اﻟﺘﻰ ﺗﻘﻴﺲ اﻻﺷﺎرات او ﺗﻘﻮم ﺑﺘﺤﻠﻴﻠﻬﺎ او اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﺗﺴﺘﺨﺪم ﻧﻮع ﺧﺎص ﻣﻦ‬
‫اﻟﺒﻴﺎﻧﺎت وهﻮ ‪.Dynamic Data‬‬
‫و‪ Dynamic Data‬ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ‪ Waveforms‬وﻳﻤﻜﻦ اﻋﺘﺒﺎرهﺎ آﺎ ﻣﺼﻔﻮﻓﺔ ﻣﻦ‬
‫‪. Waveforms‬وﻟﻜﻦ ‪ Dynamic Data‬اآﺜﺮ ﻣﺮوﻧﺔ و دﻳﻨﺎﻣﻴﻜﻴﻪ‪.‬‬
‫و‪ Dynamic Data‬ﺗﺠﻌﻞ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺷﺎرات ﺳﻬﻞ ﻓﻤﻦ اﻟﺴﻬﻞ ﺟﻤﻊ ﻋﺪة اﺷﺎرات ﻣﺨﺘﻠﻔﻪ ﻓﻰ ﻣﺴﺎر‬
‫واﺣﺪ وﻣﻦ اﻟﺴﻬﻞ ﻓﺼﻞ و رﺳﻢ هﺬة اﻻﺷﺎرات ‪.‬وﺗﻈﻬﺮ اهﻤﻴﺘﻬﺎ ﻋﻨﺪ اﻟﺘﻌﺎﻣﻞ ﻣﻊ آﺮوت ‪Data‬‬
‫‪.Acquisition‬‬
‫وﻟﺮﺳﻢ ‪ Dynamic Data‬ﻳﺘﻢ ﺗﻮﺻﻴﻠﻬﺎ ﻣﺒﺎﺷﺮة ﺑـ ‪.Graph‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ Express VI Simulate :‬ﻣﻮﺟﻮدة ﻓﻰ‬


‫‪Functions Palette>>Express>>Signal Analysis‬‬
‫ﻳﻤﻜﻦ ﺗﻮﺻﻴﻞ اآﺜﺮ ﻣﻦ ﺧﺮج ﻟـ ‪ Dynamic Data‬ﻣﻊ ﺑﻌﺾ وﺳﻴﻘﻮم ‪ LabVIEW‬ﺑﻌﻤﻠﻴﺔ اﻟﺪﻣﺞ ﺑﻴﻨﻬﻢ ‪.‬‬

‫‪133‬‬
‫ﺗﻮﺟﺪ دوال ﺧﺎﺻﺔ ﺑﺎﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺷﺎرات او ‪ Dynamic Data‬وهﺬة اﻟﺪوال ﻣﻮﺟﻮدة ﻓﻰ‬

‫‪134‬‬
‫‪Function Palette>>Express>>Signal Manipulation‬‬

‫وﺗﻘﻮم هﺬة ‪ Express VIs‬ﺑﺘﺠﻤﻴﻊ اآﺜﺮ ﻣﻦ اﺷﺎرة او ﻓﺼﻠﻬﻢ او اﺧﺘﻴﺎر اﺷﺎرة ﻣﻌﻴﻨﺔ واﻳﻀﺎ اﻟﺘﺤﻮﻳﻞ ﻣﻦ‬
‫اﻧﻮاع اﻟﺒﻴﺎﻧﺎت اﻻﺳﺎﺳﻴﺔ ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت و ‪ Waveforms‬واﻟﻘﻴﻢ اﻟﻮﺣﻴﺪة )‪ (Scaler Values‬اﻟﻰ‬
‫‪ Dynamic Data‬واﻟﻌﻜﺲ اﻳﻀﺎ‪.‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻋﻨﺪ ادراج ‪ Convert from Dynamic Data‬او ‪ Convert to Dynamic Data‬ﻷول‬
‫ﻣﺮة ﺗﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﻧﺤﺪد ﻓﻴﻬﺎ ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺳﻨﺤﻮل اﻟﻴﻬﺎ او ﻣﻨﻬﺎ‪.‬‬

‫‪135‬‬
‫‪Mixed Signal Graph‬‬
‫ﻋﻨﺪﻣﺎ ﻳﻜﻮن ﻟﺪﻳﻨﺎ اﺷﺎرة ‪ Analog‬واﺷﺎرة ‪ Digital‬وﻧﺮﻳﺪ رﺳﻤﻬﻢ ﻣﻊ ﺑﻌﺾ ﻟﻨﺮى ﻋﻼﻗﺔ هﺬة اﻻﺷﺎرات ﻣﻊ‬
‫ﺑﻌﻀﻬﺎ ﻓﺎﻧﻨﺎ ﻧﺴﺘﺨﺪم ‪.Mixed Signal Graph‬‬

‫وﻳﺘﻢ ادراج ‪Mixed Signal Graph‬‬


‫‪Controls Palette>>Modern>>Graphs‬‬
‫وﻟﻠﺮﺳﻢ ﻋﻠﻰ ‪ Mixed Signal Graph‬ﻧﺴﺘﺨﺪم داﻟﺔ ‪ Bundle‬ﻟﺘﺠﻤﻴﻊ اى ﺑﻴﺎﻧﺎت ﻗﺎﺑﻠﺔ ﻟﻠﺮﺳﻢ ﻣﺜﻞ‬
‫ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ او ﺑﻌﺪﻳﻦ او ‪Waveform‬او ‪. Digital Waveform‬‬
‫ﻓﻜﻞ ﺑﻴﺎﻧﺎت اﻟﺮﺳﻢ اﻟﺘﻰ ذآﺮﻧﺎهﺎ ﻣﻊ ‪ Charts‬و‪ Graphs‬ﻳﻤﻜﻦ ادﺧﺎﻟﻬﺎ آﻤﺪﺧﻞ اﻟﻰ داﻟﺔ ‪ Bundle‬ﻟﺮﺳﻤﻬﺎ‬
‫ﻋﻠﻰ ‪.Mixed Signal Graph‬‬

‫‪136‬‬
‫وﻓﻰ ‪ Mixed Signal Graph‬ﻳﻜﻮن ﺗﺪرﻳﺞ ‪ X‬ﻟﺠﻤﻴﻊ اﻟﺮﺳﻮﻣﺎت واﺣﺪ ﻓﻴﺠﺐ ان ﺗﻜﻮن آﻞ اﻟﺮﺳﻮﻣﺎت ﻟﻬﺎ‬
‫ﻧﻔﺲ ﺗﺪرﻳﺞ ‪ X‬ﺗﻘﺮﻳﺒﺎ‪.‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬
‫ﻳﺘﻢ ادراج داﻟﺔ ‪ Bundle‬ﻣﻦ‬
‫‪Function Palette>> Programming >>Cluster & Variant‬‬
‫ﻋﻨﺪ اﻟﺮﺳﻢ ﻋﻠﻰ ‪ Mixed Signal Graph‬ﻳﺘﻢ ﺗﻘﺴﻴﻢ اﻟﺮﺳﻮﻣﺎت اﻟﻰ ﻣﺠﻤﻮﻋﺎت )‪ (Groups‬آﻞ ﻣﺠﻤﻮﻋﺔ‬
‫ﺗﺮﺳﻢ ﻋﻠﻰ ﻣﻨﻄﻘﺔ رﺳﻢ )‪ (Plot Area‬ﻣﺴﺘﻘﻠﺔ ‪.‬‬
‫وﻋﺎدة ﻋﻨﺪ وﺟﻮد اﺷﺎرات ﺗﻤﺎﺛﻠﻴﺔ )‪ ( Analog‬واﺧﺮى رﻗﻤﻴﺔ )‪ (Digital‬ﻳﺘﻢ ﺗﻘﺴﻢ اﻟﺮﺳﻮﻣﺎت اﻟﻰ‬
‫ﻣﺠﻤﻮﻋﺘﻴﻦ ‪ Group 0‬و‪ Group 1‬اﺣﺪاهﻤﺎ ﻟﻼﺷﺎرات اﻟﺘﻤﺎﺛﻠﻴﺔ واﻻﺧﺮى ﻟﻠﺮﻗﻤﻴﺔ ‪ .‬وﺗﺮﺳﻢ ‪Group 0‬‬
‫ﻋﻠﻰ ‪ Plot area 0‬وﺗﺮﺳﻢ ‪ Group 1‬ﻋﻠﻰ ‪.Plot area 1‬‬
‫ﻓﺎﻟﻤﺠﻤﻮﻋﺔ ﻻ ﻳﻤﻜﻦ ان ﺗﺤﺘﻮى ﻋﻠﻰ اﺷﺎرات ﺗﻤﺎﺛﻠﻴﺔ واﺧﺮى رﻗﻤﻴﺔ ﻣﻌﺎ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪137‬‬
‫ ﻣﻮﺟﻮد ﻓﻰ‬Mixed Signal Graph ‫ اﻟﻤﺜﺎل ﻋﻠﻰ‬: ‫ﻣﻠﺤﻮﻇﺔ‬
Examples\general\Graphs\Mixed Signal Graph.vi
Graph ‫ ﺟﺪﻳﺪة وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ‬Group ‫ﺟﺪﻳﺪ وﻣﻌﻪ‬Plot Area ‫ﻳﻤﻜﻦ اﺿﺎﻓﺔ‬
Add Plot Area ‫واﺧﺘﻴﺎر‬

138
‫وﻳﻤﻜﻦ ﺳﺤﺐ اى ﻣﻦ اﻟﺮﺳﻮﻣﺎت ﻣﻦ ‪ Groups‬اﻻﺧﺮى وادراﺟﻬﺎ ﻓﻰ ‪ Group‬اﻟﺠﺪﻳﺪة ﻟﻴﺘﻢ رﺳﻤﻬﺎ ﻓﻰ‬
‫‪ Plot Area‬اﻟﺠﺪﻳﺪة ‪.‬وﻟﻜﻦ ﺗﺬآﺮ ان ‪ Group‬ﻗﺪ ﺗﺤﺘﻮى ﻋﻠﻰ اﺷﺎرات ﺗﻤﺎﺛﻠﻴﺔ او رﻗﻤﻴﺔ ﻟﻜﻦ ﻟﻴﺲ اﻟﻨﻮﻋﻴﻦ‬
‫ﻓﻰ ﻧﻔﺲ اﻟﻮﻗﺖ‪.‬‬

‫‪139‬‬
‫‪Multi-Plot Cursor‬‬
‫ذآﺮﻧﺎ اﻧﻪ ﻳﻮﺟﺪ ﺛﻼث اﻧﻮاع ﻣﻦ ‪ Cursors‬ﻣﻨﻬﺎ اﻟﻨﻮع ‪ Multi-Plot Cursor‬وهﺬا اﻟﻨﻮع ﻏﻴﺮ ﻣﺘﺎح اﻻ ﻣﻊ‬
‫‪ .Mixed Signal Graph‬وهﺬا ‪ Cursor‬ﻳﻤﻜﻦ ان ﻳﻌﻄﻰ اآﺜﺮ ﻣﻦ ﻗﻴﻤﺔ ﻟـ ‪ Y‬ﻋﻨﺪ ﻗﻴﻤﺔ ﻣﻌﻴﻨﺔ ﻟـ ‪. X‬‬
‫هﺬة اﻟﻘﻴﻢ ﻟـ ‪Y‬ﺗﻜﻮن ﻟﺮﺳﻮﻣﺎت ﻣﺨﺘﻠﻔﺔ ﺗﻜﻮن ﻓﻰ ‪ Plot area‬ﻣﺨﺘﻠﻔﺔ‪.‬‬
‫وآﻤﺎ ﻋﻠﻤﻨﺎ ﻻﺿﺎﻓﺔ ‪ Cursor‬ﻧﻀﻐﻂ ﻋﻠﻰ ‪ Cursor Legend‬وﻧﺨﺘﺎر ‪ Add Cursor‬ﺛﻢ ﻧﺨﺘﺎر ﻧﻮع‬
‫‪.(Mutli-Plot) Cursor‬‬

‫‪140‬‬
‫ﺑﻌﺪ اﺿﺎﻓﺔ ‪ Multi-Plot Cursor‬ﻧﺤﺪد ‪ Plots‬اﻟﺘﻰ ﺳﻴﻌﻄﻰ ﻗﻴﻤﺔ ‪ Y‬ﻟﻬﺎ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ‪Cursor‬‬
‫واﺧﺘﻴﺎر ‪ Watch‬ﺛﻢ ‪ Plot‬اﻟﺬى ﻧﺮﻳﺪﻩ ‪ .‬ﻻﺣﻆ اﻧﻨﺎ ﻳﻤﻜﻦ ان ﻧﺨﺘﺎر ‪ All Plots‬او ﻧﺤﺪد اآﺜﺮ ﻣﻦ ‪.Plot‬‬

‫‪141‬‬
‫اﻟﺤﺼﻮل ﻋﻠﻰ ﺻﻮرة ﻣﻦ ‪ Charts‬او ‪Graphs‬‬
‫ﻓﻰ آﺜﻴﺮ ﻣﻦ اﻻﺣﻴﺎن ﻧﺤﺘﺎج اﻟﻰ ﺻﻮرة ﻟﻠﺮﺳﻮﻣﺎت اﻟﺘﻰ ﻋﻠﻰ ‪ Charts‬او ‪ Graphs‬ﻟﻮﺿﻌﻬﺎ ﻓﻰ ﺗﻘﺮﻳﺮ او‬
‫ﻋﺮض‪.‬وﻳﺘﻴﺢ ‪ LabVIEW‬اﻟﺤﺼﻮل ﻋﻠﻰ ﺻﻮرة ﻟـ ‪Chart‬او ‪ Graph‬ﻓﻰ هﺌﻴﺔ ﻣﻠﻒ ‪.‬‬
‫وﻟﻌﻤﻞ ذﻟﻚ ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪Chart‬او ‪ Graph‬وﻧﺨﺘﺎر‬
‫‪Export Simplified Image‬‬
‫اذا آﻨﺎ ﻓﻰ ‪Run Mode‬‬
‫او‬
‫‪Data Operation >> Export Simplified Image‬‬
‫اذا آﻨﺎ ﻓﻰ ‪Edit Mode‬‬
‫ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﻧﺤﺪد ﻓﻴﻬﺎ ﻧﻮع ﻣﻠﻒ اﻟﺬى ﻧﺮﻳﺪﻩ وﻣﺴﺎرﻩ‪.‬‬

‫‪142‬‬
143
‫ وﻻ‬Plot Legend ‫ و‬Digital Display ‫ ﻳﻈﻬﺮ ﻓﻴﻬﺎ ﻣﻨﻄﻘﺔ اﻟﺮﺳﻢ و‬Graph ‫ او‬Chart ‫وﺻﻮرة‬
.Cursor Palette ‫ او‬Graph Palette ‫او‬Scale Legend ‫ﻳﻈﻬﺮ ﺑﻬﺎ ﺷﺮﻳﻂ اﻻﻧﺰﻻق او‬

Intensity ‫ او‬Intensity Charts ‫ ﺧﺎﺻﻴﺔ اﻟﺤﺼﻮل ﻋﻠﻰ ﺻﻮرة اﻟﺮﺳﻢ ﻟﻴﺲ ﻣﺘﺎﺣﺔ ﻟـ‬: ‫ﻣﻠﺤﻮﻇﺔ‬
.Graph

144
Œ…‚Ö]<àÚ<ð^ãjÞ÷]<±^Ãi<]<‚Û<<
< <Ý^ÏÖ]<Œ…‚Ö]<îÊ<±^Ãi<]<áƒ^e<ð^ÏÖ]<±]

photonlv@gmail.com
LabVIEW ‫دروس ﺗﻌﻠﻴﻢ‬

‫اﻟﺪرس اﻟﺜﺎﻣﻦ‬
Strings and Files
‫اﻟﻔﻬﺮس‬

iii .................................................................................................. ‫هﺪف اﻟﺪرس‬


1........................................................................................................... ‫ﻣﻘﺪﻣﺔ‬
2...................................................................................................... Strings
2........................................................... String Indicator ‫ و‬String Control
3........................................................................... String Controls ‫ﺧﺼﺎﺋﺺ‬
3................................................................................ ‫ﻃﺮﻳﻘﺔ اﻇﻬﺎر اﻟﻨﺼﻮص‬
6........................................................................ Limit Single Line ‫ﺧﺎﺻﻴﺔ‬
7.......................................................... Update Value while Type ‫ﺧﺎﺻﻴﺔ‬
9....................................................................The Scrollbar ‫ﺷﺮﻳﻂ اﻻﻧﺰﻻق‬
11........................................................................................ (‫ )اﻟﺠﺪاول‬Tables
15.................................................................................................. Listboxs
16..................................................................(Selection Mode) ‫ﻧﻤﻂ اﻻﺧﺘﻴﺎر‬
22................................................................................ Strings ‫اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑـ‬
22................................................................................ String Length ‫اﻟﺪاﻟﺔ‬
23..................................................................... Concatenate Strings ‫اﻟﺪاﻟﺔ‬
24......................................................................... Format Into String ‫اﻟﺪاﻟﺔ‬
25...................................................................... Format String ‫آﻴﻔﻴﺔ ﺗﺤﺪﻳﺪ‬
31.................................................................... Get Date/Time String ‫اﻟﺪاﻟﺔ‬
34.............................................................. Format Date/Time String ‫اﻟﺪاﻟﺔ‬
36................................................................................. Parsing Factions
36............................................................................. String Subset ‫اﻟﺪاﻟﺔ‬
37........................................................................ Scan from String ‫اﻟﺪاﻟﺔ‬
40............................................................................ Match Pattern ‫اﻟﺪاﻟﺔ‬
50....................................................................................File Input /Output
51......................................................................... High Level File I/O ‫اوﻻ‬
51............................................ Write to Measurement File Express VI
56........................................ Read from Measurement File Express VI

i
61............................................................ Write to Spreadsheet File VI
65........................................................ Read from Spreadsheet File VI
69................. Text Spreadsheet ‫ وﻣﻠﻔﺎت‬Excel Spreadsheet ‫اﻟﻔﺮق ﺑﻴﻦ ﻣﻠﻔﺎت‬
71.......................................................................... Low Level File I/O ‫ﺛﺎﻧﻴﺎ‬
71...................................................................... Text Files ‫آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ‬
71...................................................... Open/Create/Replace File ‫اﻟﺪاﻟﺔ‬
72............................................................................... Close File ‫اﻟﺪاﻟﺔ‬
73.................................................................... Write to Text File ‫اﻟﺪاﻟﺔ‬
77................................................................ Read from Text File ‫اﻟﺪاﻟﺔ‬
81.......................................................... Binary ‫آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ﻣﻦ اﻟﻨﻮع‬
81.................................................................... Write to Binary File ‫اﻟﺪاﻟﺔ‬
84................................................................ Read from Binary File ‫اﻟﺪاﻟﺔ‬

ii
‫هﺪف اﻟﺪرس‬

‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Strings‬وﺧﺼﺎﺋﺼﻬﺎ‪.‬‬


‫• اﻟﺘﻌﺮف ﻋﻠﻰ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑﺎﻟﺘﻌﺎﻣﻞ ﻣﻊ ‪.Strings‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ ﺗﺤﻮﻳﻞ اﻻرﻗﺎم اﻟﻰ ‪ Strings‬واﻟﻌﻜﺲ‪.‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ اﻟﻌﻨﺎﺻﺮ ‪ ListBox‬و‪.Table‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪.File Path‬‬
‫• اﻟﺘﻌﺮف ﻋﻠﻰ اﻧﻮاع ﻣﺨﺘﻠﻔﺔ ﻣﻦ اﻟﻤﻠﻔﺎت وآﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻓﻰ ‪.LabVIEW‬‬

‫‪iii‬‬
‫ﻣﻘﺪﻣﺔ‬
‫ﻓﻰ هﺬا اﻟﺪرس ﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻰ ﻋﻨﺼﺮ هﺎم ﺟﺪا ﻓﻰ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ وهﻮ ‪) String‬اﻟﻨﺺ( وﺳﻮف‬
‫ﻧﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ‪ Strings‬واﻟﺪوال اﻟﺨﺎﺻﺔ ﺑﻬﺎ ﻓﻰ ‪ LabVIEW‬وآﻴﻔﻴﺔ ﻣﻌﺎﻟﺠﺘﻬﺎ‬
‫ووﺿﻌﻬﺎ ﻓﻰ اﻟﺸﻜﻞ اﻟﻤﻨﺎﺳﺐ ﻻرﺳﺎﻟﻬﺎ او اﺳﺘﻘﺒﺎﻟﻬﺎ ﻣﻦ اﺟﻬﺰة اﻟﻘﻴﺎس او ﻻى اﺳﺘﺨﺪاﻣﺎت اﺧﺮى‪.‬آﻤﺎ‬
‫ﺳﻨﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ ﺗﺨﺰﻳﻨﻬﺎ واﺳﺘﺮﺟﺎﻋﻬﺎ ﻣﻦ اﻧﻮاع ﻣﺨﺘﻠﻔﺔ ﻣﻦ اﻟﻤﻠﻔﺎت ﻣﺜﻞ ﻣﻠﻔﺎت ‪ Text‬وﻣﻠﻔﺎت‬
‫‪ . Binary‬آﻤﺎ ﺳﻨﺘﻌﺮف ﻋﻠﻰ ﻧﻮﻋﻴﻦ ﺟﺪﻳﺪﻳﻦ ﻣﻦ اﻟﻤﻠﻔﺎت ﻟﺘﺨﺰﻳﻦ ﺑﻴﺎﻧﺎت اﻟﻘﻴﺎس وهﻤﺎ ‪ LVM‬و‪.TDM‬‬

‫‪1‬‬
‫‪Strings‬‬
‫اﻟﻨﺺ او ‪ String‬هﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺤﺮوف )‪ (Characters‬وﻳﻄﻠﻖ ﻋﻠﻴﻬﺎ ‪ASCII‬‬
‫‪. Characters‬وﻳﻮﺟﺪ ﻟﻜﻞ ﺣﺮف آﻮد )رﻗﻢ ﺧﺎص ﺑﻜﻞ ﺣﺮف( ﻳﺴﻤﻰ ‪ ، ASCII Code‬ﻓﻜﻤﺎ ﻧﻌﻠﻢ ان‬
‫آﻞ اﻟﺒﻴﺎﻧﺎت داﺧﻞ اﻟﺤﺎﺳﺐ اﻻﻟﻰ ﺗﻜﻮن ﻋﻠﻰ هﻴﺌﺔ ارﻗﺎم ‪.‬‬
‫وهﺬة اﻟﺤﺮوف ﺗﺸﻤﻞ اﻟﺤﺮوف اﻻﺑﺠﺪﻳﺔ اﻟﺼﻐﻴﺮة و اﻟﻜﺒﻴﺮة و اﻻرﻗﺎم ﻣﻦ ‪ 0‬اﻟﻰ ‪ 9‬و اﻟﺮﻣﻮز واﻳﻀﺎ ﺣﺮف‬
‫ﻏﻴﺮ ﻗﺎﺑﻠﻪ ﻟﻼﻇﻬﺎر او اﻟﻄﺒﺎﻋﺔ ﻣﺜﻞ ‪) Space‬اﻟﻤﺴﺎﻓﺔ( او‪)New Line‬ﺳﻄﺮ ﺟﺪﻳﺪ( او‪Carriage Return‬‬
‫و اﻟﺤﺮوف اﻟﻐﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﻄﺒﺎﻋﺔ ﻳﻜﻮن ﻟﻬﺎ ﺗﺄﺛﻴﺮ ﻋﻠﻰ ﺷﻜﻞ اﻟﻄﺒﺎﻋﺔ او اﻇﻬﺎر اﻟﻨﺺ ‪.‬‬

‫وﻳﻮﺟﺪ ‪ String Control‬و ‪ String Indicator‬و ‪ String Constant‬ﻓﻰ ‪ LabVIEW‬ﻻﻇﻬﺎر‬


‫و ادﺧﺎل و اﻟﺘﻌﺎﻣﻞ ﻣﻊ ‪ Strings‬آﻤﺎ ﻳﻮﺟﺪ دوال آﺜﻴﺮة ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ‪ Strings‬وﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻰ‬
‫اهﻤﻬﺎ ﻓﻰ هﺬا اﻟﺪرس ‪.‬‬
‫‪ String Control‬و ‪String Indicator‬‬

‫ﻳﺘﻢ ادراج ‪ String Control‬او ‪ String Indicator‬ﻓﻰ ‪ Front Panel‬ﻣﻦ‬


‫‪Controls Palette>>Modern>>Strings & Path‬‬

‫‪2‬‬
‫وﻳﺘﻢ ادراج ‪ String Constant‬ﻓﻰ ‪ Block Diagram‬ﻣﻦ‬
‫‪Functions Palette>>Programming>>String‬‬

‫ﺧﺼﺎﺋﺺ ‪String Controls‬‬


‫ﺗﻮﺟﺪ ﻟـ ‪ Strings‬ﻋﺪة ﺧﺼﺎﺋﺺ ﻣﻨﻬﺎ ‪:‬‬
‫ﻃﺮﻳﻘﺔ اﻇﻬﺎر اﻟﻨﺼﻮص‬
‫ﻳﻤﻜﻦ اﻇﻬﺎر اﻟﻨﺼﻮص ﻓﻰ ‪ String Control‬ﺑﺎآﺜﺮ ﻣﻦ ﻃﺮﻳﻘﺔ ‪.‬‬
‫وﻟﺘﻐﻴﻴﺮ ﻃﺮﻳﻘﺔ اﻇﻬﺎر اﻟﻨﺺ ﻓﻰ ‪ String Control‬ﻧﻀﻐﻂ ﻋﻠﻴﻪ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس و ﻧﺨﺘﺎر‬
‫اﻟﻄﺮﻳﻘﺔ اﻟﺘﻰ ﻧﺮﻳﺪهﺎ‪.‬‬

‫‪3‬‬
‫وهﺬة اﻟﻄﺮق هﻰ‪:‬‬
‫‪Normal Display‬‬
‫وﻓﻴﻬﺎ ﻳﻈﻬﺮ اﻟﻨﺺ ﺑﺎﻟﺼﻮرة اﻟﻄﺒﻴﻌﻴﺔ اﻟﺘﻰ ﻧﻌﺘﺎد ﻋﻠﻴﻬﺎ وهﺬة اﻟﻄﺮﻳﻘﺔ هﻰ اﻟﻄﺮﻳﻘﺔ اﻻﺳﺎﺳﻴﺔ‪.‬‬

‫‪‘’\” Code Display‬‬


‫وﻓﻴﻪ ﺗﻈﻬﺮ اﻟﺤﺮوف اﻟﻐﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﻄﺎﺑﻌﺔ ﻋﻠﻰ هﻴﺌﺔ اﻟﻌﻼﻣﺔ \ ﻳﻠﻴﻬﺎ رﻗﻢ ‪ ASCII Code‬ﺑﺎﻟﻨﻈﺎم‬
‫اﻟﺴﺪاﺳﻰ ﻋﺸﺮ )‪ (Hex‬ﻟﻜﻞ ﺣﺮف ‪.‬‬
‫ﻣﺜﺎل ‪ \20‬ﻳﻤﺜﻞ اﻟﻤﺴﺎﻓﺔ )‪ (Space‬ﺣﻴﺚ ان ‪ ASCII Code‬ﻟﻠﻤﺴﺎﻓﺔ هﻰ ‪ 20‬ﺑﺎﻟﻨﻈﺎم اﻟﺴﺪاﺳﻰ ﻋﺸﺮ‪.‬‬
‫وﺗﻮﺟﺪ ﺣﺮوف ﻏﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﻄﺒﺎﻋﺔ آﺜﻴﺮة اﻻﺳﺘﺨﺪام ﺗﻈﻬﺮ ﻓﻰ ﺻﻮرة اﻟﻌﻼﻣﺔ \ ﻳﻠﻴﻬﺎ ﺣﺮف ‪.‬‬
‫ﻣﺜﺎل اﻟﻤﺴﺎﻓﺔ ﺑﺪﻻ ﻣﻦ ان ﺗﻈﻬﺮ ﺑﺎﻟﺼﻮرة ‪ \20‬ﺗﻈﻬﺮ ﺑﺎﻟﺼﻮرة ‪.\s‬‬
‫وهﺬا اﻟﺠﺪول ﻳﻮﺿﺢ آﻴﻒ ﺗﻈﻬﺮ اﻟﺤﺮوف اﻟﻐﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﻄﺒﺎﻋﺔ ﻓﻰ هﺬا اﻟﻨﻤﻂ‬
‫اﻟﻌﻼﻣﺔ \ وﺑﻌﺪهﺎ ‪ ASCII Code‬ﻟﻠﺤﺮف ﺑﺎﻟﻨﻈﺎم اﻟﺴﺪاﺳﻰ ﻋﺸﺮ‬ ‫‪ \00‬اﻟﻰ ‪\FF‬‬
‫واﻟﺤﺮوف اﻟﻤﻜﻮﻧﺔ ﻟـ ‪ ASCII Code‬ﺣﺮوف آﺒﻴﺮة ﻣﺜﺎل )‪ (\0C‬او )‪(\FF‬‬
‫‪ (BS) Backspace‬ﻳﻜﺎﻓﻰء ‪(\08) ASCII Code‬‬ ‫‪\b‬‬
‫‪ (FF) Form feed‬ﻳﻜﺎﻓﻰء ‪(\0C) ASCII Code‬‬ ‫‪\f‬‬
‫‪ (LF) New Line‬ﻳﻜﺎﻓﻰء ‪(\0A) ASCII Code‬‬ ‫‪\n‬‬
‫‪ (Cr) Carriage Return‬ﻳﻜﺎﻓﻰء ‪(\0D) ASCII Code‬‬ ‫‪\r‬‬
‫‪ (HT) Tab‬ﻳﻜﺎﻓﻰء ‪(\09) ASCII Code‬‬ ‫‪\t‬‬
‫‪ Space‬ﻳﻜﺎﻓﻰء ‪(\20) ASCII Code‬‬ ‫‪\s‬‬
‫‪ (\) Backslash‬ﻳﻜﺎﻓﻰء ‪(\5C) ASCII Code‬‬ ‫\\‬
‫ﻣﻠﺤﻮﻇﺎت ‪:‬‬
‫‪ -1‬اﻟﺤﺮوف اﻟﺨﺎﺻﺔ ﻣﺜﻞ ﺣﺮف ‪ s‬ﻓﻰ ‪ \s‬وﺣﺮف ‪ t‬ﻓﻰ ‪ \t‬ﺗﻜﻮن ﺣﺮف ﺻﻐﻴﺮة‪.‬‬
‫واذا آﺘﺒﺖ آﺤﺮوف آﺒﻴﺮة ﻟﻦ ﻳﺘﻢ ﺗﻔﺴﻴﺮهﺎ آﺤﺮوف ﺧﺎﺻﺔ ‪.‬‬
‫ﻣﺜﺎل ‪ \b‬ﺗﻌﻨﻰ ‪ Backspace‬اﻣﺎ ‪ \B‬ﻓﻬﻰ ﻻ ﺗﻌﻨﻰ ‪ Backspace‬و‪ \B‬ﻳﻌﺘﺒﺮهﺎ ‪ LabIVEW‬ﻋﻠﻰ‬
‫اﻧﻬﺎ ‪.\0B ASCII Code‬‬

‫‪4‬‬
‫‪ -2‬ﺣﺮوف اﻟﻨﻈﺎم اﻟﺴﺪاﺳﻰ ﻋﺸﺮ ﺗﻜﻮن ﺣﺮوف آﺒﻴﺮة ﻣﺜﻞ ‪ \FF‬او ‪.\0A‬‬
‫ﻣﺜﺎل‬

‫ﻣﻠﺤﻮﻇﺎت ‪:‬‬
‫‪ -1‬ﺗﻐﻴﻴﺮ ﻧﻤﻂ اﻻﻇﻬﺎر ﻻ ﻳﺆﺛﺮ ﻋﻠﻰ ﻣﺤﺘﻮى ‪.String‬‬
‫‪ -2‬ﻳﺴﺘﺨﺪم هﺬا اﻟﻨﻤﻂ ﻓﻰ اﺧﺘﺒﺎر اﻟﻨﺼﻮص اﻟﺘﻰ ﻳﺘﻢ ارﺳﺎﻟﻬﺎ او اﺳﺘﻘﺒﺎﻟﻬﺎ ﻣﻦ اﺟﻬﺰة اﻟﻘﻴﺎس ﻋﻦ ﻃﺮﻳﻖ‬
‫‪ Serial Port‬ﻣﺜﻼ ‪ ،‬ﺣﻴﺚ ﻳﺘﻢ اﺳﺘﺨﺪام ﺣﺮوف ﻏﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﻄﺒﺎﻋﺔ ﻣﺜﻞ ‪ \n New line‬او‬
‫‪ \r Carriage Return‬ﻻﻧﻬﺎء اﻻواﻣﺮ و اﻟﺒﻴﺎﻧﺎت اﻟﻤﺮﺳﻠﺔ ﻋﻨﺪ ﻣﺨﺎﻃﺒﺔ اﺟﻬﺰة اﻟﻘﻴﺎس‪.‬‬

‫‪Password Display‬‬
‫وﻓﻰ هﺬا اﻟﻨﻤﻂ ﻻ ﺗﻈﻬﺮ اﻟﺤﺮوف اﻧﻤﺎ ﺗﻈﻬﺮ ﺑﺪﻻ ﻣﻨﻬﺎ اﻟﺮﻣﺰ * ‪.‬‬
‫ﻓﻌﻨﺪ ادﺧﺎل ﺣﺮوف ﻓﻰ ‪ String Control‬ﻓﻰ هﺬا اﻟﻨﻤﻂ ﻻ ﺗﻈﻬﺮ اﻟﺤﺮوف اﻟﺘﻰ ﺗﻜﺘﺒﻬﺎ واﻧﻤﺎ ﻳﻈﻬﺮ ﺑﺪﻻ‬
‫ﻣﻨﻬﺎ اﻟﺮﻣﺰ * وﻟﻜﻦ اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﻳﺘﻢ ﻗﺮاءﺗﻬﺎ ﻣﻦ ﺧﻼل ‪ String Control Terminal‬ﻓﻰ ‪Block‬‬
‫‪ Diagram‬هﻰ ﻣﺠﻤﻮﻋﺔ اﻟﺤﺮوف اﻟﺘﻰ ادﺧﻠﺘﻬﺎ‪.‬‬
‫وﻳﺴﺘﺨﺪم هﺬا اﻟﻨﻤﻂ ﻋﻨﺪﻣﺎ ﻳﺴﺘﺨﺪم ‪ String Control‬ﻓﻰ ادﺧﺎل آﻠﻤﺎت اﻟﺴﺮ‪.‬‬

‫‪5‬‬
‫‪Hex Display‬‬
‫ﻓﻰ هﺬا اﻟﻨﻤﻂ ﻳﺘﻢ اﻇﻬﺎر ‪ ASCII Code‬ﻟﻜﻞ اﻟﺤﺮوف اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻨﺺ ﺑﺎﻟﻨﻈﺎم اﻟﺴﺪاﺳﻰ ﻋﺸﺮ ﺑﺪﻻ‬
‫ﻣﻦ اﻟﺤﺮوف‪.‬‬

‫ﺧﺎﺻﻴﺔ ‪Limit Single Line‬‬


‫ﺗﺤﺪد هﺬة اﻟﺨﺎﺻﻴﺔ ﻋﺪد اﻟﺴﻄﻮر اﻟﻤﻤﻜﻨﺔ ﻓﻰ ‪ String Control‬ﺑﺴﻄﺮ واﺣﺪ وﻋﻨﺪ ادﺧﺎل اﻟﺤﺮوف‬
‫وﺿﻐﻂ ‪ Enter‬ﻓﻬﺬا ﻳﻌﻨﻰ اﻧﻪ ﺗﻢ اﻻﻧﺘﻬﺎء ﻣﻦ ادﺧﺎل اﻟﺴﻄﺮ‪.‬‬
‫اﻣﺎ ﻋﻨﺪ ﻋﺪم اﺧﺘﻴﺎر هﺬة اﻟﺨﺎﺻﻴﺔ –وهﺬة هﻰ اﻟﺤﺎﻟﺔ اﻟﻌﺎدﻳﺔ – و اﻟﻀﻐﻂ ‪ Enter‬اﺛﻨﺎء ادﺧﺎل اﻟﺤﺮوف‬
‫اﻟﻰ ‪ String Control‬ﻓﺎﻧﻪ ﻳﺘﻢ اﻻﻧﺘﻘﺎل اﻟﻰ ﺳﻄﺮ ﺟﺪﻳﺪ ﻓﻰ ‪.Control‬‬

‫وﻟﺘﻔﻌﻴﻞ هﺬة اﻟﺨﺎﺻﻴﺔ ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ String Control‬وﻧﺨﺘﺎر‬
‫‪Limit to Single Line‬‬

‫‪6‬‬
‫ﺧﺎﺻﻴﺔ ‪Update Value while Type‬‬

‫ﻋﻨﺪ اﻟﻜﺘﺎﺑﺔ ﻋﻠﻰ ‪ String Control‬ﻻ ﻳﺘﻢ ﺗﻐﻴﻴﺮ ﻗﻴﻤﺔ ‪ Terminals‬اﻟﺨﺎﺻﺔ ﺑﻬﻢ ﻓﻰ ‪Block‬‬

‫‪ Diagram‬اﻻ ﺑﻌﺪ اﻧﺘﻬﺎء ﻋﻤﻠﻴﺔ اﻟﻜﺘﺎﺑﺔ وذﻟﻚ ﺳﻮاء ﺑﺎﻟﻀﻐﻂ ‪ Enter‬او ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﻤﺎوس ﻋﻠﻰ اى‬

‫اﻟﻤﻮﺟﻮد ﻓﻰ ﺷﺮﻳﻂ اﻻدوات‪.‬‬ ‫ﻣﻜﺎن اﺧﺮ ﺧﺎرج ‪ Control‬او ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺰرار‬

‫وذﻟﻚ ﺣﺘﻰ ﻻ ﻳﺘﻢ ﻗﺮاءة اﻟﻨﺺ ﻏﻴﺮ آﺎﻣﻞ ﻗﺒﻞ اﻻﻧﺘﻬﺎء ﻣﻦ آﺘﺎﺑﺘﻪ ‪.‬‬

‫وﻟﻜﻦ اذا اردت ان ﻳﺘﻢ ﺗﺤﺪﻳﺚ ﻗﻴﻤﺔ ‪ Terminal‬اﺛﻨﺎء اﻟﻜﺘﺎﺑﺔ ﻓﺎﻧﻨﺎ ﻧﻔﻌﻞ اﻟﺨﺎﺻﻴﺔ ‪Update Value‬‬

‫‪while Type‬‬

‫‪7‬‬
8
‫وﻳﺘﻢ ﺗﻔﻌﻴﻞ ﺧﺎﺻﻴﺔ ‪ Update Value while Typing‬ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪String‬‬

‫‪ Control‬واﺧﺘﻴﺎر‪Update Value while Typing‬‬

‫ﺷﺮﻳﻂ اﻻﻧﺰﻻق ‪The Scrollbar‬‬


‫ﻳﺴﺘﺨﺪم ﺷﺮﻳﻂ اﻻﻧﺰﻻق ﻟﻌﺮض اﻟﻨﺼﻮص اﻟﻜﺒﻴﺮة ﻓﻰ اﻗﻞ ﻣﺴﺎﺣﺔ ﻣﻦ ‪.Front Panel‬‬
‫وﻳﻤﻜﻦ اﻇﻬﺎر ﺷﺮﻳﻂ اﻻﻧﺰﻻق داﺧﻞ ‪ String Control‬او ‪ String Indicator‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر‬
‫اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ String‬واﺧﺘﻴﺎر‬
‫‪Visible Items>>Scrollbar‬‬

‫‪9‬‬
10
‫‪) Tables‬اﻟﺠﺪاول(‬
‫‪ Table‬ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﻣﻦ ‪ Strings‬ﻳﺘﻢ ﻋﺮﺿﻬﺎ ﻓﻰ هﻴﺌﺔ ﺻﻔﻮف واﻋﻤﺪة ﻣﺜﻞ اى‬
‫ﻣﺼﻔﻮﻓﺔ‪.‬‬

‫وﻳﺘﻢ ادراج ‪ Table Control‬او ‪ Table Indicator‬ﻣﻦ‬


‫‪Controls Palette>>Modern>>List & Table‬‬

‫وﻳﻤﻜﻦ اﻇﻬﺎر ‪) Columns Header‬ﻟﻜﺘﺎﺑﺔ اﺳﻤﺎء ﻟﻼﻋﻤﺪة( واﻳﻀﺎ ‪) Rows Header‬ﻟﻜﺘﺎﺑﺔ اﺳﻤﺎء‬
‫اﻟﺼﻔﻮف( ﻟـ ‪ Table‬وﻳﺘﻢ ذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Table‬واﺧﺘﻴﺎر‬
‫‪Visible Items>>Column Headers‬‬
‫ﻻﻇﻬﺎر ‪ Column Header‬او‬

‫‪11‬‬
‫‪Visible Items>>Row Headers‬‬
‫ﻻﻇﻬﺎر ‪Row Headers‬‬

‫وﻳﻔﺼﻞ ﺑﻴﻦ ‪ Row Headers‬و ‪ Column Headers‬وﺑﺎﻗﻰ اﻟﺒﻴﺎﻧﺎت ﺧﻄﻴﻦ ﻣﺘﻘﺎرﺑﻴﻦ‪.‬‬


‫وﻳﻤﻜﻦ اﻟﻜﺘﺎﺑﺔ او ﺗﻌﺪﻳﻞ اﺳﻤﺎء اﻟﺼﻔﻮف و اﺳﻤﺎء اﻻﻋﻤﺪة ﻓﻰ ‪ Row Headers‬و ‪Column‬‬
‫‪ Headers‬ﻣﺒﺎﺷﺮة ﺑﺎﺳﺘﺨﺪام اﻻداة ‪ Operating‬او ‪ Labeling‬ﻣﺜﻞ اى ‪ Label‬اﺧﺮ ﻓﻰ‬
‫‪.LabVIEW‬‬

‫آﻤﺎ ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ او ﻗﺮاءة اﺳﻤﺎء اﻟﺼﻔﻮف واﻻﻋﻤﺪة ﻣﻦ ﺧﻼل ‪ Block Diagram‬ﺑﺎﺳﺘﺨﺪام‬
‫‪.Property Node‬‬

‫‪12‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬
‫آﻤﺎ ذآﺮﻧﺎ ﻓﺎن ‪ Table‬ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﻣﻦ ‪ Strings‬وﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﺪوال اﻟﺨﺎﺻﺔ‬
‫ﺑﺎﻟﻤﺼﻔﻮﻓﺎت ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ‪ Table‬وﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت ﺣﻮل هﺬة اﻟﺪوال راﺟﻊ اﻟﺪرس اﻟﺴﺎدس‬
‫‪.Arrays and Clusters‬‬

‫‪13‬‬
‫ﻳﻮﺟﺪ ‪ Display Index‬ﺧﺎص ﺑـ ‪ Table‬ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت وهﻮ ﻳﺤﺪد رﻗﻢ اﻟﺼﻒ واﻟﻌﻤﻮد ﻻول ﺧﻠﻴﺔ‬
‫ﺗﻈﻬﺮ ﻓﻰ اﻟﺮآﻦ اﻟﻌﻠﻮى اﻻﻳﺴﺮ ﻟـ ‪.Table‬‬

‫‪14‬‬
Listboxs
Multi-Column Listbox ‫ و‬Listbox ‫ هﻤﺎ‬LabVIEW ‫ ﻓﻰ‬Listboxes ‫ﻳﻮﺟﺪ ﻧﻮﻋﺎن ﻣﻦ‬
‫وﻳﺘﻢ ادراﺟﻬﻤﻬﺎ ﻣﻦ‬
Controls Palette>>Modern>> List & Table

.‫ ﺑﻪ اآﺜﺮ ﻣﻦ ﻋﻤﻮد‬Multicolumn Listbox ‫ ﺑﻪ ﻋﻤﻮد واﺣﺪ اﻣﺎ‬Listbox ‫واﻟﻔﺮق ﺑﻴﻨﻬﻤﺎ ان‬

Items ‫ اﺛﻨﺎء ﺗﺼﻤﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻤﻜﻦ اﻟﻜﺘﺎﺑﺔ‬Edit Mode ‫ وﻓﻰ‬Item ‫ ﻳﺴﻤﻰ‬Listbox ‫وآﻞ ﺳﻄﺮ ﻓﻰ‬
. Labeling ‫ او‬Operating ‫ ﺑﻮاﺳﻄﺔ اﻻداة‬Listbox ‫ﻓﻰ‬

15
‫آﻤﺎ ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ‪ Items‬ﻣﻦ ﺧﻼل ‪ Block Diagram‬ﺑﺎﺳﺘﺨﺪام ‪.Property Node‬‬

‫ﻓﻰ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪم ان ﻳﺨﺘﺎر ﻣﻦ ‪ Items‬ﻓﻰ ‪ Listbox‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻬﺎ ‪.‬و ﻗﻴﻤﺔ‬
‫‪ (Listbox Value) Listbox‬هﻰ رﻗﻢ اﻟﺼﻒ اﻟﺬى اﺧﺘﺎرﻩ اﻟﻤﺴﺘﺨﺪم او ﻣﺼﻔﻮﻓﺔ ارﻗﺎم اﻟﺼﻔﻮف‬
‫اﻟﺘﻰ اﺧﺘﺎرهﺎ اﻟﻤﺴﺘﺨﺪم آﻤﺎ ﺳﻴﺘﻀﺢ‪.‬وﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪم ان ﻳﺨﺘﺎر ‪ Item‬واﺣﺪ او اآﺜﺮ ﻣﻦ ‪ Item‬وذﻟﻚ‬
‫وﻓﻘﺎ ﻟﻤﻨﻂ اﻻﺧﺘﻴﺎر )‪.(Selection Mode‬‬

‫ﻧﻤﻂ اﻻﺧﺘﻴﺎر )‪(Selection Mode‬‬


‫ﻳﺤﺪد آﻞ ﻧﻤﻂ ﻋﺪد ‪ Items‬اﻟﺘﻰ ﻳﻤﻜﻦ ان ﻳﺨﺘﺎرهﺎ اﻟﻤﺴﺘﺨﺪم ﻓﻰ ‪ Listbox‬وﻟﺘﺤﺪﻳﺪ اﻟﻨﻤﻂ ﻧﻀﻐﻂ ﺑﺎﻟﺰر‬
‫اﻻﻳﻤﻦ ﻟﻠﻤﺎوس وﻧﺨﺘﺎر ‪ Selection Mode‬ﺛﻢ اﻟﻨﻤﻂ اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬
‫وهﺬة اﻻﻧﻤﺎط هﻰ ‪:‬‬
‫اﻟﻨﻤﻂ ‪ : 0 or 1 Item‬ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪم ان ﻻ ﻳﺨﺘﺎر اى ‪ Item‬او ‪ Item‬واﺣﺪ ﻓﻘﻂ‪.‬‬

‫اﻟﻨﻤﻂ ‪ : 1 Item‬ﻳﺴﺘﻄﻴﻊ اﻟﻤﺴﺘﺨﺪم ان ﻳﺨﺘﺎر ‪ Item‬واﺣﺪ ﻓﻘﻂ وﻻﺑﺪ ان ﻳﻜﻮن هﻨﺎك ‪ Item‬ﻣﺨﺘﺎر‪.‬‬

‫اﻟﻨﻤﻂ ‪ : 0 or More‬ﻳﻤﻜﻦ ان ﻻ ﻳﺘﻢ اﺧﺘﻴﺎر اى ﻣﻦ ‪ Items‬او ان ﻳﺘﻢ اﺧﺘﻴﺎر اى ﻋﺪد ﻣﻦ ‪.Items‬‬

‫اﻟﻨﻤﻂ ‪ :1 or More‬ﻣﺜﻞ اﻟﻨﻤﻂ اﻟﺴﺎﺑﻖ وﻟﻜﻦ ﻻﺑﺪ ان ﻳﻜﻮن ﻋﻠﻰ اﻻﻗﻞ ‪ Item‬واﺣﺪ ﻣﺨﺘﺎر‪.‬‬

‫ﻗﻴﻤﺔ ‪ Listbox‬هﻰ ارﻗﺎم ‪ Items‬اﻟﺘﻰ ﺗﻢ اﺧﺘﻴﺎرهﺎ ‪.‬‬


‫وﻓﻰ ﺣﺎﻟﺔ اﻟﻨﻤﻄﻴﻦ اﻻوﻟﻴﻦ ﻳﻜﻮن ﺧﺮج ‪ Listbox‬ﻗﻴﻤﺔ وﺣﻴﺪة )‪ (Scalar Value‬ﻗﻴﻤﺘﻬﺎ هﻰ رﻗﻢ‬
‫‪ Item‬اﻟﺬى ﺗﻢ اﺧﺘﻴﺎرﻩ وﻓﻰ ﺣﺎﻟﺔ ﻋﺪم اﺧﺘﻴﺎر اى ‪ Item‬ﺗﻜﻮن هﺬة اﻟﻘﻴﻤﺔ ﺗﺴﺎوى ‪.1-‬‬

‫‪16‬‬
17
‫وﻓﻰ ﺣﺎﻟﺔ اﻟﻨﻤﻄﻴﻦ اﻻﺧﺮﻳﻦ ﻳﻜﻮن ﺧﺮج ‪Listbox‬ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﻓﻴﻬﺎ ارﻗﺎم ‪ Items‬اﻟﺘﻰ ﺗﻢ‬
‫اﺧﺘﻴﺎرهﺎ‪.‬وﻋﺪد ﻋﻨﺎﺻﺮ هﺬة اﻟﻤﺼﻔﻮﻓﺔ هﻰ ﻋﺪد ‪ Items‬اﻟﺘﻰ ﺗﻢ اﺧﺘﻴﺎرهﺎ‪.‬‬

‫‪18‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻻﺧﺘﻴﺎر اآﺜﺮ ﻣﻦ ‪ :Item‬ﻧﺨﺘﺎر اول ‪ Item‬ﺛﻢ ﻧﻀﻐﻂ اﻟﻤﻔﺘﺎح ‪Ctrl‬ﻋﻨﺪ اﺧﺘﻴﺎر ﺑﺎﻗﻰ ‪.Items‬‬

‫و‪ Listboxs‬ﻣﻔﻴﺪة اذا اردت ان ﺗﻌﺮض ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻓﻰ ﻣﺠﻤﻮﻋﺔ ﺻﻔﻮف هﺬة اﻟﺼﻔﻮف ﻳﻤﻜﻦ‬
‫ان ﺗﻜﻮن ﻓﻰ ﻋﻤﻮد واﺣﺪ اوﻣﻘﺴﻤﺔ ﻟﻌﺪة اﻋﻤﺪة وﺗﺮﻳﺪ ﻣﻦ اﻟﻤﺴﺘﺨﺪم ان ﻳﺨﺘﺎر اﺣﺪ هﺬة اﻟﺒﻴﺎﻧﺎت او اآﺜﺮ‪.‬‬

‫اذا آﺎﻧﺖ اﺣﺪ اﻟﺨﻼﻳﺎ ﻓﻰ ‪ ListBox‬ﻻ ﺗﺴﻊ اﻟﻨﺺ اﻟﻤﻮﺟﻮد ﺑﻬﺎ ﻓﺎﻧﻪ ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺢ ووﺿﻊ اﻟﻤﺆﺷﺮ‬
‫ﻋﻠﻰ هﺬة اﻟﺨﻠﻴﺔ ﻓﺎن ‪ Tip Strip‬ﺗﻈﻬﺮ ﺑﻬﺎ اﻟﻨﺺ اﻟﻤﻮﺟﻮد ﻓﻰ اﻟﺨﻠﻴﺔ آﺎﻣﻼ‪.‬‬

‫آﻤﺎ ﻳﻤﻜﻦ ان ﻧﺠﻌﻞ ﺧﻼﻳﺎ اى ﻋﻤﻮد ﺗﺤﺘﻮى ﻋﻠﻰ اآﺜﺮ ﻣﻦ ﺳﻄﺮ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﻌﻤﻮد ﺑﺎﻟﺰر اﻻﻳﻤﻦ‬
‫ﻟﻠﻤﺎوس وﻧﺨﺘﺎر ‪ Multi-line Input‬ﺛﻢ ﻧﺴﺘﻄﻴﻊ ان ﻧﻜﺘﺐ اآﺜﺮ ﻣﻦ ﺳﻄﺮ ﻓﻰ اﻟﺨﻠﻴﺔ ﺑﻮاﺳﻄﺔ اﻟﻀﻐﻂ‬
‫ﻋﻠﻰ ‪.Enter‬‬

‫‪19‬‬
‫ﻻ ﻳﺴﺘﻄﻴﻊ اﻟﻤﺴﺘﺨﺪم ﺗﻌﺪﻳﻞ ﻣﺤﺘﻮى ﺧﻼﻳﺎ ‪ Listbox‬اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ وﻟﺠﻌﻞ هﺬا ﻣﻤﻜﻨﺎ ﻧﻀﻐﻂ ﺑﺎﻟﺰر‬
‫اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Listbox‬وﻧﺨﺘﺎر اﻟﺨﺎﺻﻴﺔ ‪.Editable Cells‬‬

‫‪20‬‬
‫ﻋﻨﺪ اﺧﺘﻴﺎر اى ﺻﻒ ﻓﻰ ‪ Listbox‬ﻳﺘﻢ ﺗﻈﻠﻴﻞ اول ﺧﻠﻴﺔ ﻣﻦ اﻟﻴﺴﺎر ﻓﻰ هﺬا اﻟﺼﻒ وﻟﺘﻈﻠﻴﻞ اﻟﺼﻒ آﻠﻪ‬
‫ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Listbox‬وﻧﺨﺘﺎر‬
‫‪Selection Mode>>Highlight Entire Row‬‬

‫ﻳﻤﻜﻦ ﺿﺎﻓﺔ ﺻﻒ او ﻋﻤﻮد او ﺣﺬف او ﻋﻤﻮد وذﻟﻚ ﻣﻦ ﺧﻼل اﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اى‬
‫ﺻﻒ او ﻋﻤﻮد‬

‫‪21‬‬
‫اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑـ ‪Strings‬‬
‫ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت ﺗﻮﺟﺪ دوال آﺜﻴﺮة ﻓﻰ ‪ LabVIEW‬ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ‪ Strings‬وﻟﺴﻮف ﻧﺘﻌﺮف ﻋﻠﻰ اهﻢ‬
‫هﺬة اﻟﺪوال‪.‬وﻳﺘﻢ ادراج هﺬة اﻟﺪوال ﻣﻦ‬
‫‪Functions Palette>>Programming>>String‬‬

‫اﻟﺪاﻟﺔ ‪String Length‬‬


‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﺧﺮاج ﻋﺪد اﻻﺣﺮف اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻨﺺ)‪.(String‬‬

‫ﻣﺜﺎل‬

‫‪22‬‬
‫اﻟﺪاﻟﺔ ‪Concatenate Strings‬‬
‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺪﻣﺞ اآﺜﺮ ﻣﻦ ‪ String‬ﺑﺎﻟﺘﺮﺗﻴﺐ ﻟﺘﻜﻮﻳﻦ ‪ String‬واﺣﺪ‪.‬‬

‫ﻳﻤﻜﻦ ﻣﺪ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻻﺳﻔﻞ ﺑﻮاﺳﻄﺔ اﻻداة ‪ Positioning‬ﻟﺰﻳﺎدة ﻋﺪد اﻟﻤﺪاﺧﻞ ﻟﻠﺪاﻟﺔ وزﻳﺎدة ﻋﺪد‬
‫‪ Strings‬اﻟﺘﻰ ﻳﻤﻜﻦ ادﻣﺎﺟﻬﺎ‪.‬‬

‫ﻣﺜﺎل‬

‫‪23‬‬
‫آﻤﺎ ﻳﻤﻜﻦ ان ﻳﻜﻮن اﻟﻤﺪﺧﻞ ﻟﻬﺬة اﻟﺪاﻟﺔ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﻣﻦ ‪ Strings‬وﺳﺘﻘﻮم اﻟﺪاﻟﺔ ﺑﺪﻣﺞ‬
‫‪ Strings‬اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ﺑﺎﻟﺘﺮﺗﻴﺐ واﺧﺮاﺟﻬﺎ ﻓﻰ ‪ String‬واﺣﺪ‪.‬‬

‫وﺗﻔﻴﺪ داﻟﺔ ‪ Concatenate Strings‬آﺜﻴﺮا ﻓﻰ ﺗﻜﻮﻳﻦ اﻻواﻣﺮ اﻟﺘﻰ ﻧﺮﻳﺪ ارﺳﺎﻟﻬﺎ اﻟﻰ اﺟﻬﺰة اﻟﻘﻴﺎس او‬
‫ﺗﻜﻮﻳﻦ ﺳﻄﻮر ﻣﻌﻴﻨﺔ ﻧﺮﻳﺪ ﺗﺨﺰﻳﻨﻬﺎ ﻓﻰ ﻣﻠﻒ‪.‬‬

‫ﻓﻰ آﺜﻴﺮ ﻣﻦ اﻻﺣﻴﺎن ﻧﺤﺘﺎج اﻟﻰ ﺗﺤﻮﻳﻞ اﻻرﻗﺎم اﻟﻰ ﻧﺼﻮص )‪ (String‬واﻳﻀﺎ اﺳﺘﺨﻼص اﻻرﻗﺎم ﻣﻦ‬
‫اﻟﻨﺼﻮص وﺗﻮﺟﺪ دوال آﺜﻴﺮة ﺗﻘﻮم ﺑﻬﺬة اﻟﻤﻬﺎم وﻟﻜﻦ ﺳﻨﺘﻌﺮف ﻋﻠﻰ اهﻢ هﺬة اﻟﺪوال وهﻤﺎ اﻟﺪاﻟﺔ‬
‫‪ Format into String‬و اﻟﺪاﻟﺔ ‪ Scan from String‬وﺳﻨﺘﻌﺮف ﻋﻠﻰ اﻟﺪاﻟﺔ ‪Format into‬‬
‫‪ String‬ﻓﻰ هﺬا اﻟﺠﺰء وﺑﻌﺪ ﻗﻠﻴﻞ ﺳﻨﺘﻌﺮف ﻋﻠﻰ اﻟﺪاﻟﺔ ‪.Scan from String‬‬
‫اﻟﺪاﻟﺔ ‪Format into String‬‬

‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺘﺤﻮﻳﻞ اﻧﻮاع ﻣﺨﺘﻠﻔﺔ ﻣﻦ اﻟﺒﻴﺎﻧﺎت اﻟﻰ ﻧﺺ )‪ (String‬ﺑﺎﻟﺸﻜﻞ اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬
‫وﻳﻤﻜﻦ ان ﺗﻜﻮن هﺬة اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﻧﺮﻳﺪ ﺗﺤﻮﻳﻠﻬﺎ اﻟﻰ ﻧﺺ ﻋﺒﺎرة ﻋﻦ ‪:‬‬
‫ﻧﺺ ﻧﺮﻳﺪﻩ ﺑﺸﻜﻞ اﺧﺮ‪.‬‬
‫‪) File Path‬ﻣﺴﺎر ﻟﻤﻠﻒ(‪.‬‬

‫‪24‬‬
‫‪ Enumerated Type‬ﺷﺒﻴﻪ ﺑـ ‪.ListBox‬‬
‫‪ Time Stamp‬ﻳﺤﺘﻮى ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﻮﻗﺖ و اﻟﺘﺎرﻳﺦ )راﺟﻊ اﻟﺪرس اﻟﺴﺎﺑﻖ(‪.‬‬
‫‪) Boolean‬رﻗﻢ ﺛﻨﺎﺋﻰ(‪.‬‬
‫رﻗﻢ ﺻﺤﻴﺢ او ﺑﻪ آﺴﺮ ﻋﺸﺮى )‪ Integer‬او ‪. (Float‬‬
‫وﻳﻜﺜﺮ اﺳﺘﺨﺪام هﺬة اﻟﺪاﻟﺔ ﻟﺘﺤﻮﻳﻞ اﻻرﻗﺎم اﻟﻰ ﻧﺼﻮص‬

‫وﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ هﻰ‬


‫‪ : Format String‬وهﻮ ﻧﺺ ﺑﻪ ﻣﺠﻤﻮﻋﺔ ارﻗﺎم ورﻣﻮز ﻟﺘﺤﺪﻳﺪ ﺷﻜﻞ ‪ String‬اﻟﺬى ﻧﺮﻳﺪﻩ وﺳﻨﻮﺿﺢ‬
‫آﻴﻔﻴﺔ ﺗﺤﺪﻳﺪ هﺬا اﻟﻤﺪﺧﻞ وﺗﺄﺛﻴﺮﻩ ﻋﻠﻰ ‪ String‬اﻟﻨﺎﺗﺞ‪.‬‬
‫‪ :Initial String‬وهﻮ ﻧﺺ ﻧﺮﻳﺪﻩ ان ﻳﺘﻀﻤﻦ ﻓﻰ ﺑﺪاﻳﺔ ‪ String‬اﻟﻨﺎﺗﺞ‪.‬‬
‫‪ : Input‬وهﻮ ﻣﺪﺧﻞ اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﻧﺮﻳﺪ ﺗﺤﻮﻳﻠﻬﺎ اﻟﻰ ‪ String‬وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد اﻟﻤﺪﺧﻞ ﻣﻦ هﺬا اﻟﻨﻮع‬
‫ﺑﻤﺪ اﻻﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻻﺳﻔﻞ ﺑﻮاﺳﻄﺔ اﻻداة ‪ Positioning‬ﺑﺤﻴﺚ ﻳﻜﻮن ﻟﺪﻳﻨﺎ ‪ Input 0‬و ‪ Input 1‬و ‪...‬‬
‫هﻜﺬا وﺑﺬﻟﻚ ﻳﻤﻜﻦ ﺗﺤﻮﻳﻞ اآﺜﺮ ﻣﻦ ﻗﻴﻤﺔ اﻟﻰ ﻧﻔﺲ ‪ String‬اﻟﻨﺎﺗﺞ‪.‬‬
‫)‪ (DBL‬ﻣﺒﺪﺋﻴﺎ وﻟﻜﻨﻪ ﻳﺘﻐﻴﺮ ﺗﻠﻘﺎﺋﻴﺎ وﻓﻘﺎ‬ ‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻳﻜﻮن اﻟﺮﻣﺰ اﻟﻤﻮﺟﻮد ﻋﻠﻰ اﻟﻤﺪﺧﻞ ‪ Input‬هﻮ‬
‫ﻟﻨﻮع اﻟﺒﻴﺎﻧﺎت اﻟﻤﻮﺻﻞ ﺑﻪ‪.‬‬

‫وﻣﺨﺮج هﺬة اﻟﺪاﻟﺔ هﻮ‬


‫‪ :Resulting String‬وهﻮ ‪ String‬اﻟﻨﺎﺗﺞ ﺑﻌﺪ ﺗﺤﻮﻳﻞ اﻟﺒﻴﺎﻧﺎت اﻟﺪاﺧﻠﺔ اﻟﻰ ﻧﺺ ﺑﺎﻟﺸﻜﻞ اﻟﻤﺤﺪد ﻓﻰ‬
‫‪ Format String‬ودﻣﺠﻬﺎ ﻣﻊ اﻟﻨﺺ ‪.Initial String‬‬

‫آﻴﻔﻴﺔ ﺗﺤﺪﻳﺪ ‪Format String‬‬


‫ﻳﺘﻜﻮن ‪ Format String‬اﺳﺎﺳﺎ ﻣﻦ اﻟﺮﻣﺰ ‪ %‬وﻣﺠﻤﻮﻋﺔ اﺧﺮى ﻣﻦ اﻻرﻗﺎم واﻟﺮﻣﻮز ﺗﺤﺪد ﻃﺮﻳﻘﺔ‬
‫اﻟﺘﺤﻮﻳﻞ وﺗﻮﺟﺪ ﻃﺮﻳﻘﺘﻴﻦ ﻟﺘﺤﺪﻳﺪ ‪.Format String‬‬

‫‪25‬‬
‫‪ -1‬ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ اﻟﻤﺪﺧﻞ ‪ Format String‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻣﺮﺗﻴﻦ ﻣﺘﺎﻟﻴﺘﻴﻦ او اﻟﻀﻐﻂ ﻋﻠﻴﻬﺎ‬
‫ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس و اﺧﺘﻴﺎر ‪ Edit Format String‬ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﺗﺤﺪﻳﺪ ‪Format String‬‬

‫وهﺬة ﻗﺎﺋﻤﺔ ﺑﺎﻟﻌﻤﻠﻴﺎت اﻟﺘﻰ ﻳﻤﻜﻦ اﺧﺘﻴﺎرهﺎ‬

‫وﻳﺘﻮﻗﻒ ﻧﻮع اﻟﻌﻤﻠﻴﺔﻋﻠﻰ ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺪاﺧﻠﺔ و اﻟﺸﻜﻞ اﻟﻤﺮاد ﺗﺤﻮﻳﻠﻬﺎ اﻟﻴﻪ‪.‬‬

‫ﻣﺜﺎل‬

‫‪26‬‬
‫‪ -2‬آﺘﺎﺑﺔ ‪ Format String‬ﻳﺪوﻳﺎ‬
‫وآﻤﺎ ذآﺮﻧﺎ ﻳﺘﻜﻮن ‪ Format String‬ﻣﻦ اﻟﻌﻼﻣﺔ ‪ .%‬وﺳﻮف ﻧﻌﺮض آﻴﻔﻴﺔ آﺘﺎﺑﺔ ‪Format String‬‬
‫ﻟﺘﺤﻮﻳﻞ ﺑﻌﺾ اﻟﺒﻴﺎﻧﺎت آﺜﻴﺮة اﻻﺳﺘﺨﺪام اﻟﻰ ‪.String‬‬
‫وﺳﻮف ﻧﺴﺘﻌﺮض ﺑﻌﺾ اﻻﺷﻜﺎل اﻟﻤﺨﺘﻠﻔﺔ ﻟـ ‪Format String‬‬

‫‪27‬‬
‫ﺗﺤﻮﻳﻞ ارﻗﺎم ﺑﻬﺎ آﺴﺮ ﻋﺸﺮى ﻣﻦ اﻟﻨﻮع ‪Float‬‬
‫ﻳﻜﻮن ‪ Format String‬ﺑﻬﺬا اﻟﺸﻜﻞ ‪% number1.number2 f‬‬
‫ﺣﻴﺚ ‪ Number1‬ﻳﺤﺪد ﻋﺪد اﺣﺮف ‪ String‬اﻟﻨﺎﺗﺞ ‪.‬‬
‫و ‪ Number2‬ﻳﺤﺪد ﻋﺪد اﻻرﻗﺎم اﻟﻌﺸﺮﻳﺔ ‪.‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻳﻤﻜﻦ ﻋﺪم آﺘﺎﺑﺔ ‪Number 1‬او ‪ Number2‬واﻻآﺘﻔﺎء ﺑـ ‪%f‬‬
‫اﻣﺜﻠﺔ‪:‬‬

‫ﻳﻤﻜﻦ آﺘﺎﺑﺔ ﻧﺺ ﻓﻰ ‪ Format String‬وﺳﻴﻈﻬﺮ هﺬا اﻟﻨﺺ آﻤﺎ هﻮ ‪ String‬اﻟﻨﺎﺗﺞ‪.‬‬

‫‪28‬‬
‫ﻳﻤﻜﻦ اﻳﻀﺎ ان ﻧﻜﺘﺐ ‪ Initial String‬داﺧﻞ ‪Format String‬‬

‫ﺗﺤﻮﻳﻞ اﻻرﻗﺎم ﻣﻦ اﻟﻨﻮع ‪ float –point‬اﻟﻰ ‪)Scientific Notation‬ﻣﺜﺎل ‪(3.64E2‬‬


‫وﻧﺴﺘﺨﺪم ﻓﻰ هﺬة اﻟﺤﺎﻟﺔ اﻟﺤﺮف ‪ e‬ﺑﺪﻻ ﻣﻦ ‪ f‬وﻧﺘﺒﻊ ﻧﻔﺲ اﻟﺘﻌﻠﻴﻤﺎت اﻟﺴﺎﺑﻘﺔ‬

‫ﺗﺤﻮﻳﻞ اﻻرﻗﺎم اﻟﻰ ارﻗﺎم ﺻﺤﻴﺤﺔ )‪(Decimal Format‬‬


‫ﻧﺴﺘﺨﺪم اﻟﺤﺮف ‪ d‬ﻣﻊ اﻟﻌﻼﻣﺔ ‪%‬‬

‫‪29‬‬
‫وﻳﻤﻜﻦ اﻳﻀﺎ ان ﻧﺴﺘﺨﺪم اﻟﺤﺮف ‪ f‬ﻣﻊ ﺗﺤﺪﻳﺪ ان ﻋﺪد اﻻرﻗﺎم اﻟﻌﺸﺮﻳﺔ ﻳﺴﺎوى ‪. 0‬‬

‫ﺗﺤﻮﻳﻞ اﻟﻨﺼﻮص‬
‫ﻳﻤﻜﻦ ان ﻳﻜﻮن اﻟﺒﻴﺎﻧﺎت اﻟﺪاﺧﻠﺔ ﻧﺺ ﻓﻨﺴﺘﺨﺪم اﻟﺤﺮف ‪ s‬ﻓﻰ ‪. Format String‬‬

‫ﺗﺤﻮﻳﻞ اﻻرﻗﺎم اﻟﺜﻨﺎﺋﻴﺔ )‪(Boolean‬‬


‫ﻳﻤﻜﻦ ﺗﺤﻮﻳﻞ اﻻرﻗﺎم اﻟﺜﻨﺎﺋﻴﺔ اﻟﻰ ‪ 0‬او ‪ False=>0 ) 1‬و ‪(True=>1‬وذﻟﻚ ﺑﺎﺳﺘﺨﺪام اﻟﺤﺮف ‪.d‬‬

‫‪30‬‬
‫آﻤﺎ ﻳﻤﻜﻦ ان ﺗﺘﺤﻮل ﻗﻴﻤﺔ ‪ Boolean‬اﻟﻰ آﻠﻤﺘﻰ ‪TRUE‬او ‪ FALSE‬ﻓﻰ ‪ Result String‬وذﻟﻚ‬
‫ﺑﺎﺳﺘﺨﺪام اﻟﺤﺮف ‪.s‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻧﺴﺘﺨﺪم ‪ %%‬ﻓﻰ ‪ Format string‬ﻻﻇﻬﺎر اﻟﻌﻼﻣﺔ ‪ %‬ﻓﻰ ‪.Result String‬‬

‫ﻳﻮﺟﺪ اﺷﻜﺎل اﺧﺮى ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻳﻤﻜﻦ ﺗﺤﻮﻳﻠﻬﺎ وﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام ‪ Edit Format String‬ﻟﻠﺘﻌﺮف ﻋﻠﻴﻬﺎ‬
‫اآﺜﺮ او اﻻﻃﻼع ﻋﻠﻰ ‪.Help‬‬

‫اﻟﺪاﻟﺔ ‪Get Date/Time String‬‬


‫ﺗﺨﺮج هﺬة اﻟﺪاﻟﺔ ‪ String)Date String‬ﻳﺤﺘﻮى ﻋﻠﻰ اﻟﺘﺎرﻳﺦ( و ‪ String) Time String‬ﻳﺤﺘﻮى‬
‫ﻋﻠﻰ اﻟﻮﻗﺖ( واﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ ﻳﻜﻮﻧﺎن ﻣﻦ ‪ Time Stamp‬ﻳﺘﻢ ﺗﻮﺻﻴﻠﻬﺎ اﻟﻰ ﻣﺪﺧﻞ اﻟﺪاﻟﺔ او ﻳﻜﻮﻧﺎن‬
‫اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ اﻟﺤﺎﻟﻴﻴﻦ )ﻟﺤﻈﺔ ﺗﻨﻔﻴﺬ اﻟﺪاﻟﺔ(‪.‬‬

‫وﻳﺘﻢ ادراج اﻟﺪاﻟﺔ ﻣﻦ‬


‫‪Functions Palette>>Programming>>Timing‬‬

‫‪31‬‬
‫وﻟﻬﺬة اﻟﺪاﻟﺔ ﺛﻼث ﻣﺪاﺧﻞ ‪:‬‬
‫‪ : Date Format‬ﻳﺤﺪد ﺷﻜﻞ اﻟﺘﺎرﻳﺦ اﻟﺬى ﺳﻨﺤﺼﻞ ﻋﻠﻴﻪ وﻗﻴﻤﻬﺎ آﺎﻟﺘﺎﻟﻰ‪:‬‬
‫)‪ (Short) (0‬وﻳﻜﻮن اﻟﺘﺎرﻳﺦ ﺑﻬﺬا اﻟﺸﻜﻞ ‪.1/21/94‬‬
‫)‪(Long) (1‬وﻳﻜﻮن اﻟﺘﺎرﻳﺦ ﺑﻬﺬا اﻟﺸﻜﻞ ‪.Friday, January 21, 1994‬‬
‫)‪(Abbreviated) (2‬وﻳﻜﻮن اﻟﺘﺎرﻳﺦ ﺑﻬﺬا اﻟﺸﻜﻞ ‪.Fri, Jan 21, 1994‬‬
‫‪ :Time Stamp‬وهﻮ ‪ Time Stamp‬اﻟﺬى ﻳﺤﺘﻮى ﻋﻠﻰ اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ اﻟﻠﺬﻳﻦ ﺳﺘﺨﺮﺟﻬﻢ اﻟﺪاﻟﺔ‬
‫اذا ﻟﻢ ﻳﻮﺻﻞ هﺬا اﻟﻤﺪﺧﻞ ﺗﺨﺮج اﻟﺪاﻟﺔ اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ اﻟﺤﺎﻟﻴﻴﻦ )وﻗﺖ ﺗﻨﻔﻴﺬ اﻟﺪاﻟﺔ(‪.‬‬
‫‪ :Want seconds‬ﻳﺘﻢ ﺗﻮﺻﻴﻞ اﻟﻰ هﺬا اﻟﻤﺪﺧﻞ ﻗﻴﻤﺔ ‪:‬‬
‫‪ True‬ﻻﻇﻬﺎر اﻟﺜﻮاﻧﻰ ﻣﻊ اﻟﻮﻗﺖ‪.‬‬
‫‪ False‬ﻟﻌﺪم اﻇﻬﺎر اﻟﺜﻮاﻧﻰ ﻣﻊ اﻟﻮﻗﺖ وهﺬا هﻰ اﻟﺤﺎﻟﺔ اﻟﻌﺎدﻳﺔ‪.‬‬
‫اى اذا ﻟﻢ ﻳﻮﺻﻞ هﺬا اﻟﻤﺪﺧﻞ ﻓﺎن ﻗﻴﻤﺘﻪ ﺗﻜﻮن ‪False‬‬
‫وﻻ ﻳﺘﻢ اﻇﻬﺎر اﻟﺜﻮاﻧﻰ ﻣﻊ اﻟﻮﻗﺖ‪.‬‬
‫اﻣﺜﻠﺔ ‪:‬‬

‫‪32‬‬
33
‫اﻟﺪاﻟﺔ ‪Format Date/Time String‬‬
‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﺧﺮاج ‪ String‬ﺑﻪ ﻣﻌﻠﻮﻣﺎت ﻣﺤﺪدة ﻣﻦ اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ ﻣﺜﻞ اﺳﻢ اﻟﺸﻬﺮ او اﺳﻢ‬
‫اﻻﺳﺒﻮع‪ .‬واﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ ﻳﻤﻜﻦ ان ﻳﻜﻮﻧﺎ ﻣﻦ ‪ Time Stamp‬او ‪ Numeric‬ﻳﻮﺻﻞ ﺑﻤﺪﺧﻞ اﻟﺪاﻟﺔ او‬
‫ﻳﻜﻮﻧﺎ اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ اﻟﺤﺎﻟﻴﻴﻦ اذا ﻟﻢ ﻳﻮﺻﻞ ‪ Time Stamp‬او ‪Numeric‬اﻟﻰ ﻣﺪﺧﻞ اﻟﺪاﻟﺔ‪.‬وهﺬة‬
‫اﻟﺪاﻟﺔ اآﺜﺮ ﺷﻤﻮﻟﻴﺔ ﻣﻦ اﻟﺪاﻟﺔ ‪Get Date/Time String‬‬
‫وﻳﺘﻢ ادراج هﺬة اﻟﺪاﻟﺔ ﻣﻦ‬
‫‪Functions Palette>>Programming>>Timing‬‬

‫وﻳﺘﻢ ﺗﻮﺻﻴﻞ ‪ Time Stamp‬او ‪ Numeric‬اﻟﻰ اﻟﻤﺪﺧﻞ ‪Time Stamp‬ﻳﺤﺘﻮﻳﺎن ﻋﻠﻰ اﻟﻮﻗﺖ‬
‫واﻟﺘﺎرﻳﺦ واذا ﻟﻢ ﻳﻮﺻﻞ هﺬا اﻟﻤﺪﺧﻞ ﻳﻜﻮن اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ هﻮ اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ اﻟﺤﺎﻟﻴﻴﻦ‪.‬‬
‫وﻳﺤﺪد اﻟﻤﺪﺧﻞ ‪ Time Format String‬اﻟﻤﻌﻠﻮﻣﺔ اﻟﺘﻰ ﻧﺮﻳﺪهﺎ و ﺷﻜﻠﻬﺎ‪.‬‬
‫وﻳﺤﺘﻮى ‪ Time Format String‬ﻋﻠﻰ اآﻮاد آﻞ آﻮد ﻳﺤﺪد ﺷﻜﻞ اﻟﻤﻌﻠﻮﻣﺔ اﻟﺘﻰ ﺳﺘﺨﺮج وهﺬة اﻻآﻮاد‬
‫ﻳﻤﻜﻦ ان ﺗﻜﻮن آﺎﻟﺘﺎﻟﻰ‪:‬‬
‫ﻣﻌﻨﻰ اﻟﻜﻮد‬ ‫اﻟﻜـﻮد‬
‫اﺳﻢ اﻟﻴﻮم ﻣﺨﺘﺼﺮ ﻣﺜﻞ ‪Sat‬‬ ‫‪%a‬‬
‫اﺳﻢ اﻟﺸﻬﺮ ﻣﺨﺘﺼﺮ ﻣﺜﻞ ‪Feb‬‬ ‫‪%b‬‬
‫اﻟﻮﻗﺖ و اﻟﺘﺎرﻳﺦ آﻤﺎ ﻓﻰ اﻋﺪادات ﺟﻬﺎزك‬ ‫‪%c‬‬
‫رﻗﻢ اﻟﻴﻮم ﻣﻜﻮن ﻣﻦ ﺧﺎﻧﺘﻴﻦ ﻣﺜﺎل ‪21‬‬ ‫‪%d‬‬
‫رﻗﻢ ﻳﻤﺜﻞ اﻟﺴﺎﻋﺔ ﺑﻨﻈﺎم ‪ 24‬ﺳﺎﻋﺔ‬ ‫‪%H‬‬
‫رﻗﻢ ﻳﻤﺜﻞ اﻟﺴﺎﻋﺔ ﺑﻨﻈﺎم ‪ 12‬ﺳﺎﻋﺔ‬ ‫‪%I‬‬
‫رﻗﻢ ﻣﻜﻮن ﻣﻦ ﺧﺎﻧﺘﻴﻦ ﻳﻤﺜﻞ اﻟﺸﻬﺮ ﻣﺜﻞ ‪03‬‬ ‫‪%m‬‬
‫رﻗﻢ ﻳﻤﺜﻞ ﻋﺪد اﻟﺪﻗﺎﺋﻖ‬ ‫‪%M‬‬
‫اﺣﺪى اﻟﻌﻼﻣﺘﻴﻦ ‪ AM‬او ‪ PM‬اﻟﻠﺘﺎن ﺗﻌﻨﻴﺎن ﺻﺒﺎﺣﺎ او ﻣﺴﺎءا‬ ‫‪%p‬‬
‫رﻗﻢ ﻳﻤﺜﻞ ﻋﺪد اﻟﺜﻮاﻧﻰ ﻓﻰ اﻟﻮﻗﺖ‬ ‫‪%S‬‬

‫‪34‬‬
‫اﻟﺘﺎرﻳﺦ ﺑﺎﻟﻨﻈﺎم اﻟﻤﺤﻠﻰ‬ ‫‪%x‬‬
‫اﻟﻮﻗﺖ ﺑﺎﻟﻨﻈﺎم اﻟﻤﺤﻠﻰ‬ ‫‪%X‬‬
‫رﻗﻢ ﻣﻜﻮن ﻣﻦ ﺧﺎﻧﺘﻴﻦ ﻳﻤﺜﻞ ﻋﺪد اﻟﺴﻨﻴﻦ ﻓﻰ اﻟﻘﺮن ﻣﺜﺎل ‪08‬‬ ‫‪%y‬‬
‫رﻗﻢ ﻳﻤﺜﻞ اﻟﻌﺎم ﻣﺘﻀﻤﻨﺎ اﻟﻘﺮن ﻣﺜﺎل ‪2008‬‬ ‫‪%Y‬‬
‫ﺟﺰء ﻣﻦ اﻟﺜﺎﻧﻴﺔ ﺣﻴﺚ ﻳﻤﺜﻞ ‪ digit‬ﻋﺪد اﻻرﻗﺎم اﻟﻌﺸﺮﻳﺔ‬ ‫‪%<digit>u‬‬
‫ﻣﺜﺎل ‪0.465‬‬ ‫ﻣﺜﺎل ‪%3u‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬اذا ﻟﻢ ﻳﻮﺻﻞ اﻟﻤﺪﺧﻞ ‪ Time Format String‬ﻓﺎﻧﻪ ﻳﺄﺧﺬ اﻟﻘﻴﻤﺔ اﻟﻌﺎدﻳﺔ ﻟﻪ وهﻰ ‪%c‬‬
‫واﻟﺘﻰ ﻣﻌﻨﺎهﺎ اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ آﻤﺎ ﻓﻰ اﻋﺪادات ﺟﻬﺎزك‪.‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻳﻤﻜﻦ ان ﻳﺤﺘﻮى ‪ Time Format String‬ﻋﻠﻰ اآﺜﺮ ﻣﻦ آﻮد ﺑﺠﺎﻧﺐ اﻳﻀﺎ اى ﺣﺮوف او‬
‫رﻣﻮزوﺳﺘﻈﻬﺮ هﺬة اﻟﺮﻣﻮز واﻟﺤﺮوف آﻤﺎ هﻰ ﻓﻰ ‪ String‬اﻟﻨﺎﺗﺞ‪.‬‬

‫‪35‬‬
‫‪Parsing Factions‬‬
‫ﻓﻰ آﺜﻴﺮ ﻣﻦ اﻻﺣﻴﺎن ﻳﻜﻮن ﻟﺪﻳﻚ ﻧﺺ ﺗﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻪ ﻣﺜﻼ ﻣﻦ اﺳﺘﻘﺒﺎل ﺑﻴﺎﻧﺎت ﻣﻦ ﺟﻬﺎز ﻗﻴﺎس او ﺗﻢ‬
‫ﻗﺮاءﺗﻪ ﻣﻦ ﻣﻠﻒ‪ .‬وﺗﺤﺘﺎج اﻟﻰ ﺗﻔﺴﻴﺮ هﺬا اﻟﻨﺺ او اﺳﺘﺨﻼص ﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎت ﻣﻨﻪ ﻣﺜﻞ رﻗﻢ ﻳﻤﺜﻞ ﻗﻴﻤﺔ‬
‫اﻟﻘﻴﺎس‪.‬وﺗﻮﺟﺪ دوال ﺗﺴﺎﻋﺪ ﻓﻰ ﺗﻔﺴﻴﺮ اﻟﻨﺼﻮص وﺳﻨﺴﺘﻌﺮض ﺑﻌﺾ هﺬة اﻟﺪوال‪.‬‬
‫اﻟﺪاﻟﺔ ‪String Subset‬‬
‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﺳﺘﻘﻄﺎع ﺟﺰء ﻣﻦ ‪. String‬‬

‫وﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ‪:‬‬


‫‪ : String‬وهﻮ ﻣﺪﺧﻞ ﻟـ ‪ String‬اﻟﺬى ﻧﺮﻳﺪ اﺳﺘﻘﻄﺎع ﺟﺰء ﻣﻨﻪ ‪.‬‬
‫‪ :Offset‬وهﻮ ﺑﺪاﻳﺔ اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪ اﺳﺘﻘﻄﺎﻋﻪ واﻟﺘﺮﻗﻴﻢ ﻳﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ‪.‬واذا ﻟﻢ ﻳﻮﺻﻞ هﺬا اﻟﻤﺪﺧﻞ ﻓﺎن‬
‫اﻟﺒﺪاﻳﺔ ﺗﻜﻮن ﻣﻦ اﻟﺼﻔﺮ‪.‬‬
‫‪ :Length‬وهﻮ ﻣﺪﺧﻞ ﻟﻄﻮل او ﻋﺪد ﺣﺮوف اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪ اﺳﺘﻘﻄﺎﻋﻪ واذا ﻟﻢ ﻳﻮﺻﻞ هﺬا اﻟﻤﺪﺧﻞ ﻓﺎن‬
‫اﻟﺠﺰء اﻟﻤﺴﺘﻘﻄﻊ ﻣﻦ اﻟﺒﺪاﻳﺔ )‪ (offset‬اﻟﻰ ﻧﻬﺎﻳﺔ ‪.String‬‬

‫وﻣﺨﺮج اﻟﺪاﻟﺔ هﻮ ‪ String‬ﻳﺤﺘﻮى ﻋﻠﻰ اﻟﺠﺰء اﻟﻤﺴﺘﻘﻄﻊ‪.‬‬

‫‪36‬‬
‫اﻟﺪاﻟﺔ ‪Scan from String‬‬
‫وﻇﻴﻔﺔ هﺬة اﻟﺪاﻟﺔ هﻰ ﻋﻜﺲ وﻇﻴﻔﺔ اﻟﺪاﻟﺔ ‪ Format into String‬ﻓﻬﻰ ﺗﻘﻮم ﺑﺎﺳﺘﺨﻼص اﻻﻋﺪاد‬
‫اﻟﺮﻗﻤﻴﺔ ﻣﻦ ‪ . Strings‬ﻓﺎﻟﺪاﻟﺔ ﺗﻘﻮم ﺑﺘﺤﻮﻳﻞ ﻣﺠﻤﻮﻋﺔ ﺣﺮوف ﻓﻰ ‪ String‬ﺗﻤﺜﻞ ﻋﺪد اﻟﻰ ﻗﻴﻤﺔ رﻗﻤﻴﺔ‬
‫وهﺬة اﻟﺤﺮوف ﻗﺪ ﺗﺸﻤﻞ ﻋﻠﻰ )‪ 0‬اﻟﻰ ‪ 9‬او ‪ +‬او – او ‪e‬او ‪ E‬او ﻧﻘﻄﺔ (‬

‫وﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ هﻰ‬


‫‪ : Input String‬وهﻮ ﻣﺪﺧﻞ ‪ String‬اﻟﺬى ﻧﺮﻳﺪ اﺳﺘﺨﻼص اﻟﺒﻴﺎﻧﺎت ﻣﻨﻪ‪.‬‬
‫‪ :Format String‬وهﻮ ﻳﺤﺪد ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﻧﺮﻳﺪ اﺳﺘﺨﻼﺻﻬﺎ وﻣﺤﺘﻮى ‪ Format String‬ﻣﺜﻞ‬
‫اﻟﻤﺪﺧﻞ ‪ Format String‬ﻓﻰ داﻟﺔ ‪ Format into String‬واﻳﻀﺎ آﻤﺎ ﺳﻨﺮى ﻳﻤﻜﻦ آﺘﺎﺑﺘﻪ ﻳﺪوﻳﺎ او‬
‫اﺳﺘﺨﺪام اﻟﻨﺎﻓﺬة ‪.Edit Scan String‬‬
‫‪: Initial Scan Location‬ﻣﻜﺎن او رﻗﻢ اول ﺣﺮف ﺳﻨﻘﻮم ﺑﺎﺳﺘﺨﻼﺻﻪ‪.‬‬

‫وﻣﺨﺎرج هﺬة اﻟﺪاﻟﺔ هﻰ ‪:‬‬


‫‪ :Remaining String‬وهﻮاﻟﺠﺰء اﻟﻤﺘﺒﻘﻰ ﻣﻦ ‪ String‬ﺑﻌﺪ ﻋﻤﻠﻴﺔ اﻟﺒﺤﺚ‪.‬‬
‫‪ :Offset Past String‬وهﻮ رﻗﻢ اول ﺣﺮف ﺑﻌﺪ اﻟﺠﺰء اﻟﺬى ﺗﻢ اﺳﺘﺨﻼﺻﻪ‪.‬‬
‫‪ :Output‬هﻰ اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ اﺳﺘﺨﻠﺼﻨﺎهﺎ وﻧﻮﻋﻬﺎ آﻤﺎ هﻮ ﻣﻮﺟﻮد ﻓﻰ ‪.Format String‬‬
‫وﻳﻤﻜﻦ اﺳﺘﺨﺪام هﺬة اﻟﺪاﻟﺔ ﻻﺳﺘﺨﻼص اﻧﻮاع ﻣﺨﺘﻠﻔﺔ ﻣﻦ اﻟﺒﻴﺎﻧﺎت وﻟﻜﻦ ﻋﺎدة ﺗﺴﺘﺨﺪم ﻻﺳﺘﺨﻼص ﻗﻴﻢ‬
‫رﻗﻤﻴﺔ ﻣﻦ ‪.Strings‬‬
‫وآﻤﺜﺎل ﻳﺘﻢ اﺳﺘﻘﺒﺎل اﻟﺒﻴﺎﻧﺎت ﻣﻦ اﺟﻬﺰة اﻟﻘﻴﺎس ﻣﻦ ﺧﻼل ‪ Serial Port‬ﻋﻠﻰ هﻴﺌﺔ ‪ Strings‬وﻧﺴﺘﺨﺪم‬
‫هﺬة اﻟﺪاﻟﺔ ﻻﺳﺘﺨﻼص اﻟﻘﻴﻢ اﻟﻤﻘﺎﺳﺔ ﻣﻦ ‪ Strings‬اﻟﻤﺴﺘﻘﺒﻠﺔ‪.‬‬

‫‪37‬‬
‫وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ‪ Format String‬ﺑﻜﺘﺎﺑﺘﻪ ﻳﺪوﻳﺎ وﻻﺳﺘﺨﻼص ﻗﻴﻤﺔ ﻋﺪدﻳﺔ ﻣﻦ ‪ String‬ﻧﻜﺘﺐ داﺧﻞ‬
‫‪ Format String‬اﻟﻌﻼﻣﺔ ‪ %‬واﻟﺤﺮف ‪ f‬هﻜﺬا ‪. %f‬‬

‫وﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻨﺎﻓﺬة ‪ Edit Scan String‬ﻟﺘﺤﺪﻳﺪ ‪ Format String‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻣﺮﺗﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ‬
‫ﺑﺎﻟﺰر اﻻﻳﺴﺮ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﺪاﻟﺔ او اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺪاﻟﺔ ﺑﺎﻟﺰر اﻻﻳﻤﻦ واﺧﺘﻴﺎر ‪.Edit Scan String‬‬
‫وﺑﻌﺪ ﺗﺤﺪﻳﺪ ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﻧﺮﻳﺪ اﺳﺘﺨﻼﺻﻬﺎ ﺳﻴﺘﻢ وﺿﻊ ‪ Format String‬ﺗﻠﻘﺎﺋﻴﺎ وﺳﻴﻜﻮن ﻣﻮﺻﻼ‬
‫ﺑﺎﻟﺪاﻟﺔ‪.‬‬

‫ﻻﺣﻆ ان ‪ Format String‬و‪ Scan String‬ﻳﻌﺒﺮان ﻋﻦ ﻧﻔﺲ اﻟﻤﻌﻨﻰ وهﻮ ﻧﻮع وﺷﻜﻞ اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ‬
‫ﻧﺮﻳﺪ اﺳﺘﺨﻼﺻﻬﺎ‪.‬‬

‫‪38‬‬
‫اﻣﺜﻠﺔ‬

‫ﻳﻤﻜﻦ آﺘﺎﺑﺔ ﻧﺺ ﺛﺎﺑﺖ ﻓﻰ ‪ Format String‬وﺳﻴﺘﻢ اﺳﺘﺨﻼﺻﻪ ﻣﻦ ‪ String‬وﻳﺨﺮج آﻤﺎ هﻮ وﺗﻔﻴﺪ هﺬة‬
‫اﻟﻄﺮﻳﻘﺔ ﻓﻰ اﺳﺘﺨﻼص ﺷﻜﻞ ﻣﻌﻴﻦ ﻣﻜﻮن ﻣﻦ ﻧﺺ و ﻋﺪد آﻤﺎ ﻳﺘﻀﺢ ﻣﻦ اﻟﻤﺜﺎل‪.‬‬

‫‪39‬‬
‫وﻳﻤﻜﻦ ﻋﻤﻞ ذﻟﻚ ﻣﻦ ﺧﻼل ﻧﺎﻓﺬة ‪ Edit Scan String‬وذﻟﻚ ﺑﺘﺤﺪﻳﺪ اﻟﻌﻤﻠﻴﺔ ‪Match Exact‬‬
‫‪ String‬وآﺘﺎﺑﺔ ‪ Temp‬ﺛﻢ اﺿﺎﻓﺔ ﻋﻤﻠﻴﺔ وﺟﻌﻠﻬﺎ اﻟﻌﻤﻠﻴﺔ ‪.Scan Number‬‬

‫اﻟﺪاﻟﺔ ‪Match Pattern‬‬


‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﻟﺒﺤﺚ ﻓﻰ ‪ String‬ﻋﻦ ﻧﺺ ﺑﺸﻜﻞ ﻣﻌﻴﻦ ‪.‬وﻳﻌﺘﻤﺪ ﺷﻜﻞ اﻟﻨﺺ اﻟﺬى ﻧﺮﻳﺪﻩ ﻋﻠﻰ‬
‫‪ Regular Expression‬وهﻮ ﺻﻴﻐﺔ ﺗﺤﺘﻮى ﻋﻠﻰ ﺣﺮوف ورﻣﻮز ﺗﺤﺪد ﺷﻜﻞ اﻟﻨﺺ اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫وﻣﺪﺧﻞ هﺬة اﻟﺪاﻟﺔ هﻰ ‪:‬‬


‫‪ : String‬وهﻮ ‪ String‬اﻟﺬى ﻳﺤﺘﻮى ﻋﻠﻰ اﻟﻨﺺ اﻟﺬى ﻧﺮﻳﺪ اﻟﺒﺤﺚ ﻋﻨﻪ‪.‬‬

‫‪40‬‬
‫‪ :Regular Expression‬وهﻰ ﺻﻴﻐﺔ ﺗﺤﺘﻮى ﻋﻠﻰ ﺣﺮوف ورﻣﻮز ﻟﺘﺤﺪﻳﺪ ﺷﻜﻞ اﻟﻨﺺ اﻟﺬى ﻧﺮﻳﺪﻩ‬
‫وﺳﻨﻮﺿﺢ آﻴﻔﻴﺔ آﺘﺎﺑﺔ هﺬة اﻟﺼﻴﻐﺔ‪.‬‬
‫‪ :Offset‬وهﻰ رﻗﻢ اﻟﺤﺮف ﻓﻰ ‪ String‬اﻟﺬى ﺳﻨﺒﺪأ ﻣﻨﻪ ﻋﻤﻠﻴﺔ اﻟﺒﺤﺚ وﻗﻴﻤﺔ هﺬا اﻟﻤﺪﺧﻞ اذا ﻟﻢ ﻳﺘﻢ‬
‫اﻟﺘﻮﺻﻴﻞ اﻟﻴﻪ هﻰ ‪.0‬‬

‫وﻣﺨﺎرج هﺬة اﻟﺪاﻟﺔ هﻰ ‪:‬‬


‫‪: Before Substring‬وهﻮ اﻟﺠﺰء ﻣﻦ ‪ String‬اﻟﺬى ﻳﺴﺒﻖ اﻟﻨﺺ اﻟﺬى ﺗﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻪ‪.‬‬
‫‪ : Match String‬وهﻮ اﻟﻨﺺ اﻟﺬى ﺗﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻪ ﻣﻦ ﻋﻤﻠﻴﺔ اﻟﺒﺤﺚ ‪.‬‬
‫‪ :After Substring‬وهﻮ اﻟﺠﺰء ﻣﻦ ‪ String‬اﻟﺬى ﻳﻠﻴﻰ اﻟﻨﺺ اﻟﺬى ﺗﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻪ‪.‬‬
‫‪ : Offset Past Match‬هﻮ اﻟﺮﻗﻢ اﻟﺬى ﻳﻠﻲ رﻗﻢ اﺧﺮ ﺣﺮف ﻣﻦ اﻟﻨﺺ اﻟﺬى ﺗﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻪ‪.‬‬

‫وﻧﻼﺣﻆ اﻧﻪ ﺑﻌﺪ ﻋﻤﻠﻴﺔ اﻟﺒﺤﺚ ﺗﻢ ﺗﻘﺴﻴﻢ ‪ String‬اﻟﻰ ﺛﻼﺛﺔ اﺟﺰاء ﺑﻨﺎء ﻋﻠﻰ ﺻﻴﻐﺔ ‪.Regular Expression‬‬

‫واذا ﻟﻢ ﻳﺘﻢ اﻳﺠﺎد اﻟﻨﺺ اﻟﻤﺮاد داﺧﻞ ‪ String‬ﻓﺎن اﻟﻤﺨﺎرج ﺗﻜﻮن ﻗﻴﻤﻬﺎ آﺎﻟﺘﺎﻟﻰ‪:‬‬
‫‪ : Before Substring‬ﻳﺤﺘﻮى ﻋﻠﻰ آﻞ ﻣﺤﺘﻮى ‪ String‬اﻟﺬى ﻧﺒﺤﺚ ﻓﻴﻪ‪.‬‬
‫‪ : Match String‬ﺗﻜﻮن ﻓﺎرﻏﺔ‪.‬‬
‫‪ :After Substring‬ﺗﻜﻮن ﻓﺎرﻏﺔ‪.‬‬
‫‪ : Offset Past Match‬ﻳﻜﻮن ﻗﻴﻤﺘﻪ ﺑـ ‪ 1-‬ﻣﻤﺎ ﻳﻌﻨﻰ اﻧﻪ ﻟﻢ ﻳﺘﻢ اﻳﺠﺎد اﻟﻨﺺ اﻟﻤﺮاد داﺧﻞ ‪.String‬‬

‫ﻣﺜﺎل ‪ :‬ﻳﻤﻜﻦ ان ﻳﻜﻮن ‪ Regular Expression‬ﻋﺒﺎرة ﻋﻦ آﻠﻤﺔ ﻧﺮﻳﺪ ان ﻧﺒﺤﺚ ﻋﻨﻬﺎ ﻓﻰ ‪.String‬‬

‫‪41‬‬
‫وﻳﻤﻜﻦ ان ﺗﺤﺘﻮى ‪ Regular Expression‬ﻋﻠﻰ رﻣﻮز ﺧﺎﺻﺔ ﻟﺘﺤﺪﻳﺪ ﺷﻜﻞ اﻟﻨﺺ اﻟﺬى ﻧﺮﻳﺪ اﻟﺒﺤﺚ‬
‫ﻋﻨﻪ وﻟﻜﻞ رﻣﺰ دﻻﻟﺔ او ﻣﻌﻨﻰ وﺳﻨﺴﺘﻌﺮض هﺬة اﻟﺮﻣﻮز وﻣﻌﻨﺎهﺎ‪:‬‬
‫ﻣﻌﻨﺎﻩ ﻣﻦ ﺧﻼل اﻟﺪاﻟﺔ ‪Matching Pattern‬‬ ‫اﻟﺮﻣﺰ‬
‫اﻟﻨﻘﻄﺔ وﻣﻌﻨﺎهﺎ اى ﺣﺮف ﻓﻰ هﺬا اﻟﻤﻜﺎن‬ ‫‪.‬‬
‫ﻣﺜﺎل ‪ l.g‬ﺗﻌﻨﻰ اﺑﺤﺚ ﻋﻦ اى آﻠﻤﺔ ﺗﺘﻜﻮن ﻣﻦ اﻟﺤﺮف ‪ l‬ﺛﻢ اى ﺣﺮف ﺛﻢ ﺣﺮف ‪g‬‬
‫ﻣﺜﻞ اﻟﻜﻠﻤﺎت ‪ leg‬او ‪ lag‬او ‪lug‬‬
‫وﻣﻌﻨﺎهﺎ ان ﻣﺎ ﻗﺒﻠﻬﺎ ﻣﺒﺎﺷﺮة ﻗﺪ ﻻ ﻳﻜﻮن ﻣﻮﺟﻮدا او ﻣﻮﺟﻮدا ﻣﺮة واﺣﺪة ﻓﻘﻂ‬ ‫?‬
‫ﻣﺜﺎل ‪ be?t‬ﺗﻌﻨﻰ اﺑﺤﺚ ﻋﻦ آﻠﻤﺔ ﺗﺘﻜﻮن ﻣﻦ اﻟﺤﺮف ‪ b‬ﺛﻢ اﻟﺤﺮف ‪ t‬ﻣﺒﺎﺷﺮة ﻣﺜﻞ ‪ bt‬وهﻨﺎ ﺣﺮف ‪e‬‬
‫اﻟﺬى هﻮ ﻗﺒﻞ اﻟﻌﻼﻣﺔ ? ﻟﻴﺲ ﻣﻮﺟﻮدا‪.‬‬
‫او ان ﺗﺘﻜﻮن اﻟﻜﻠﻤﺔ ﻣﻦ اﻟﺤﺮف ‪ b‬ﺛﻢ اﻟﺤﺮف ‪ e‬ﺛﻢ اﻟﺤﺮف ‪ t‬ﻣﺜﻞ آﻠﻤﺔ ‪ bet‬وهﻨﺎ ﺣﺮف ‪ e‬ﻣﻮﺟﻮدا‬
‫ﻣﺮة واﺣﺪة‪.‬‬
‫واﻟﺼﻴﻐﺔ ‪ be?t‬ﻻ ﺗﻨﻄﺒﻖ ﻋﻠﻰ اﻟﻜﻠﻤﺔ ‪ best‬وذﻟﻚ ﻻن هﻨﺎك ﺣﺮف ﺑﻴﻦ ‪ e‬و‪t‬‬
‫وﻣﻌﻨﺎهﺎ اﻟﻐﺎء ﺗﻔﺴﻴﺮ اﻟﺮﻣﺰ اﻟﺬى ﺑﻌﺪهﺎ ﻋﻠﻰ اﻧﻪ رﻣﺰ ﺧﺎص واﻧﻤﺎ ﺗﻔﺴﻴﺮﻩ ﻋﻠﻰ اﻧﻪ ﺣﺮف ﻋﺎدى‬ ‫\‬
‫ﻣﺜﺎل ‪ \.‬ﺗﻌﻨﻰ ﻧﻘﻄﺔ ﻋﺎدﻳﺔ وﻟﻦ ﻳﺘﻢ ﺗﻔﺴﻴﺮ اﻟﻨﻘﻄﺔ ﻋﻠﻰ اﻧﻬﺎ اى ﺣﺮف آﻤﺎ ﺳﺒﻖ‬
‫واﻳﻀﺎ ?\ ﺗﻌﻨﻰ ﻋﻼﻣﺔ اﺳﺘﻔﻬﺎم وﻻ ﻳﺘﻢ ﺗﻔﺴﻴﺮ اﻟﻌﻼﻣﺔ آﻤﺎ ﺳﺒﻖ‬
‫وﺗﺴﺘﺨﺪم اﻟﻌﻼﻣﺔ \ ﻓﻰ ﺗﻤﺜﻴﻞ اﻟﺤﺮوف اﻟﻐﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﻄﺒﺎﻋﺔ ﻓﻤﺜﻼ‬
‫‪ \b‬ﻣﻌﻨﺎهﺎ ‪Backspace‬‬
‫‪ \f‬ﻣﻌﻨﺎهﺎ ‪Form Feed‬‬
‫‪ \n‬ﻣﻌﻨﺎهﺎ ‪New Line‬‬

‫‪42‬‬
‫‪ \s‬ﻣﻌﻨﺎهﺎ ﻣﺴﺎﻓﺔ‬
‫‪ \r‬ﻣﻌﻨﺎهﺎ ‪ Carriage Return‬اﻟﺮﺟﻮع ﻻول اﻟﺴﻄﺮ‬
‫‪ \t‬ﻣﻌﻨﺎهﺎ ‪Tab‬‬
‫‪) \xx‬ﺣﻴﺚ ‪ xx‬رﻗﻢ ﺑﺎﻟﻨﻈﺎم اﻟﺴﺪاﺳﻰ ﻋﺸﺮ ( وﻣﻌﻨﺎهﺎ اﻟﺤﺮف اﻟﺬى ‪ ASCII Code‬ﻟﻪ هﻮ ‪xx‬‬
‫ﻣﺜﺎل ‪ \41‬ﺗﻌﻨﻰ اﻟﺤﺮف ‪ A‬آﺒﻴﺮ ﻻن ‪ ASCII Code‬ﻟﻪ ﺑﺎﻟﻨﻈﺎم اﻟﺴﺪاﺳﻰ ﻋﺸﺮ هﻮ ‪41‬‬
‫اذا ﺟﺎءت اول ﺣﺮف ﻓﻰ ‪ Regular Expression‬ﻓﻤﻌﻨﺎهﺎ اﺑﺤﺚ ﻋﻦ اﻟﺬى ﺑﻌﺪهﺎ وﻟﻜﻦ ﻓﻰ اول‬ ‫^‬
‫‪ String‬واذا آﺎن ﻟﻴﺲ اول ‪ String‬ﻓﻬﻮ ﻻ ﻳﻄﺎﺑﻖ‬
‫ﻣﺜﺎل ‪ ^is‬ﻣﻌﻨﺎهﺎ اﺑﺤﺚ ﻓﻰ ‪ String‬ﺑﺤﻴﺚ ﺗﻜﻮن ‪ is‬اول ‪ String‬ﻣﺜﻞ‬
‫‪is the exam easy‬‬
‫وﻟﻜﻦ ﻟﻦ ﻳﺤﺪث ﺗﻄﺎﺑﻖ ﻣﻊ ‪ String‬اﻟﺘﻰ ﺗﺤﺘﻮى ﻋﻠﻰ ‪The exam is easy‬‬
‫وﻣﻌﻨﺎهﺎ اى ﺣﺮف ﻣﻤﺎ ﺑﺪاﺧﻠﻬﺎ‬ ‫][‬
‫ﻣﺜﺎل ]‪ [abc‬ﺗﻌﻨﻰ اﻟﺤﺮف ‪ a‬او اﻟﺤﺮف ‪ b‬او اﻟﺤﺮف ‪c‬‬
‫ﻣﺜﺎل ‪ [Mm]an‬ﺗﺘﻄﺎﺑﻖ ﻣﻦ ‪ Man‬واﻳﻀﺎ ‪ man‬اى اﺑﺤﺚ ﻋﻦ آﻠﻤﺔ ‪ man‬ﺳﻮاء آﺎن ﺣﺮف ‪m‬‬
‫ﺑﻬﺎ آﺒﻴﺮ او ﺻﻐﻴﺮواﻟﺤﺮﻓﻴﻦ اﻻﺧﺮﻳﻦ ‪ an‬ﺻﻐﻴﺮﻳﻦ‪.‬‬
‫وهﻨﺎك رﻣﻮز ﺧﺎﺻﺔ ﺗﺴﺘﺨﺪم داﺧﻞ اﻟﻘﻮﺳﻦ ] [ وهﺬة اﻟﺮﻣﻮز هﻰ‬
‫اﻟﺸﺮﻃﺔ ﻣﻌﻨﺎهﺎ ﻣﺪى ﻣﻦ اﻻرﻗﺎم او ﻣﺪى ﻣﻦ اﻟﺤﺮوف اﻟﻜﺒﻴﺮة او ﻣﺪى ﻣﻦ اﻟﺤﺮوف‬ ‫‪-‬‬
‫اﻟﺼﻐﻴﺮة‬
‫ﻣﺜﺎل ]‪ [0-9‬ﻣﻌﻨﺎهﺎ اى رﻗﻢ ﻣﻦ ‪ 0‬اﻟﻰ ‪9‬‬
‫ﻣﺜﺎل ]‪ [a-g‬ﻣﻌﻨﺎهﺎ اى ﺣﺮف ﺻﻐﻴﺮ ﻣﻦ ‪ a‬اﻟﻰ ‪g‬‬
‫ﻣﺜﺎل ]‪ [L-Q‬ﻣﻌﻨﺎهﺎ اى ﺣﺮف آﺒﻴﺮ ﻣﻦ ‪ L‬اﻟﻰ ‪Q‬‬
‫اﻟﺮﻣﺰﻳﻦ اﻻﺗﻴﻴﻦ ﻟﻬﻤﺎ ﻣﻌﻨﻰ ﻓﻘﻂ اذا ﺟﺎؤا آﺄول ﺣﺮف داﺧﻞ اﻟﻘﻮﺳﻴﻦ ] [‬
‫ﻣﻌﻨﺎهﺎ اى ﺣﺮف ﺳﻮاء ﻗﺎﺑﻞ ﻟﻠﻜﺘﺎﺑﺔ او ﻏﻴﺮ ﻗﺎﺑﻞ ﻟﻠﻜﺘﺎﺑﺔ ﻣﺎﻋﺪا اﻟﺤﺮوف اﻟﺘﻰ ﺑﻌﺪهﺎ او ﻓﻰ‬ ‫~‬
‫اﻟﻤﺪى اﻟﺬى ﺑﻌﺪهﺎ‬
‫ﻣﺜﺎل ]‪ [~0-9‬وﺗﻌﻨﻰ اى ﺣﺮف ﻣﺎﻋﺪا اﻟﺤﺮوف ﻓﻰ اﻟﻤﺪى ﻣﻦ ‪ 0‬اﻟﻰ ‪9‬‬
‫ﻣﻌﻨﺎهﺎ اى ﺣﺮف ﻣﻦ اﻟﺤﺮوف اﻟﻘﺎﺑﻠﺔ ﻟﻠﻜﺘﺎﺑﺔ واﻳﻀﺎ اﻟﻤﺴﺎﻓﺔ و ‪ Tab‬ﻣﺎﻋﺪا اﻟﺤﺮوف اﻟﺘﻰ‬ ‫^‬
‫ﺑﻌﺪهﺎ او ﻓﻰ اﻟﻤﺪى اﻟﺬى ﺑﻌﺪهﺎ‬
‫ﻣﺜﺎل ]‪ [^0-9‬ﺗﻌﻨﻰ اى ﺣﺮف ﻗﺎﺑﻞ ﻟﻠﻜﺘﺎﺑﺔ ﺑﻤﺎ ﻓﻴﻬﺎ اﻟﻤﺴﺎﻓﺔ او ‪Tab‬ﻣﺎﻋﺪا اﻟﺤﺮوف ﻣﻦ ‪0‬‬
‫اﻟﻰ ‪9‬‬
‫ﻣﻌﻨﺎهﺎ اى ﻋﺪد ﻣﻦ اﻟﺤﺮف اﻟﺬى ﻗﺒﻠﻪ وﻟﻜﻦ ﻻﺑﺪ ان ﻳﻮﺟﺪ ﻋﻠﻰ اﻻﻗﻞ ﻣﺮة واﺣﺪة‬ ‫‪+‬‬
‫ﻣﺜﺎل ‪ be+t‬ﺗﻌﻨﻰ اى آﻠﻤﺔ ﺗﺘﻜﻮن ﻣﻦ اﻟﺤﺮف ‪ b‬ﺛﻢ اى ﻋﺪد اآﺒﺮ ﻣﻦ اﻟﻮاﺣﺪ ﻣﻦ اﻟﺤﺮف ‪ e‬ﺛﻢ‬

‫‪43‬‬
‫اﻟﺤﺮف ‪ t‬وهﻰ ﺗﻄﺎﺑﻖ اﻟﻜﻠﻤﺎت ‪ bet‬و ‪ beet‬و ‪ beeet‬وﻻ ﺗﻄﺎﺑﻖ ‪ bt‬ﻻن اﻟﺤﺮف ‪ e‬ﻳﺠﺐ ان‬
‫ﻳﺘﻮاﺟﺪ ﻋﻠﻰ اﻻﻗﻞ ﻣﺮة واﺣﺪة‬
‫ﻣﻌﻨﺎهﺎ اى ﻋﺪد ﻣﻦ اﻟﺤﺮف اﻟﺬى ﻗﺒﻠﻪ وﻳﻤﻜﻦ اﻻ ﻳﻜﻮن اﻟﺤﺮف ﻣﻮﺟﻮدا‬ ‫*‬
‫ﻣﺜﺎل ‪ be*t‬ﻣﻌﻨﺎهﺎ اى آﻠﻤﺔ ﺗﺘﻜﻮن ﻣﻦ اﻟﺤﺮف ‪ b‬ﺛﻢ ﻳﻠﻴﻪ اﻟﺤﺮف ‪ t‬او ان ﻳﻜﻮن ﺑﻴﻨﻬﻤﺎ اى ﻋﺪد ﻣﻦ‬
‫اﻟﺤﺮف ‪e‬‬
‫وﺗﻄﺎﺑﻖ اﻟﻜﻠﻤﺎت ‪ bt‬و ‪ bet‬و ‪ beet‬و ‪ beeet‬وهﻜﺬا‬
‫اذا ﺟﺎءت آﺎﺧﺮ ﺣﺮف ﻓﻰ ‪ Regular Expression‬ﻓﻬﻰ ﺗﻌﻨﻰ ان ﻳﻜﻮن ﻣﺎ ﻗﺒﻠﻬﺎ ﻳﻜﻮن ﻣﻮﺟﻮدا‬ ‫‪$‬‬
‫ﻓﻰ ﻧﻬﺎﻳﺔ ‪String‬‬
‫ﻓﻤﺜﻼ ‪ deg$‬ﺗﺘﻄﺎﺑﻖ اذا آﺎﻧﺖ اﻟﻜﻠﻤﺔ ‪ deg‬ﻓﻰ ﻧﻬﺎﻳﺔ ‪.String‬‬
‫اذا ﺟﺎء هﺬة اﻟﺮﻣﺰ ﻟﻴﺲ ﻓﻰ ﻧﻬﺎﻳﺔ ‪ Regular Expression‬ﻓﺴﻴﻜﻮن ﺣﺮف ﻋﺎدى وﻟﻴﺲ رﻣﺰا‬
‫ﺧﺎﺻﺎ‬
‫وهﺬة ﺑﻌﺾ اﻻﻣﺜﻠﺔ ﻟـ ‪ Regular Expression‬ﺑﺎﺳﺘﺨﺪام اﻟﺮﻣﻮز اﻟﺴﺎﺑﻘﺔ‬
‫اﻟﻜﻠﻤﺎت اﻟﺘﻰ ﺗﺘﻄﺎﺑﻖ ﻣﻌﻪ‬ ‫‪Regular Expression‬‬
‫‪VOLTS‬‬ ‫‪VOLTS‬‬
‫ﻣﻌﻨﺎهﺎ اﺑﺤﺚ ﻋﻦ آﻠﻤﺔ اول ﺣﺮف ﺑﻬﺎ ‪ V‬آﺒﻴﺮ او ﺻﻐﻴﺮ ﺛﻢ اﻟﺤﺮف‬ ‫]‪[Vv][Oo][Ll][Tt][Ss‬‬
‫اﻟﺬى ﻳﻠﻴﻪ اﻟﺤﺮف ‪ O‬آﺒﻴﺮا او ﺻﻐﻴﺮا ﺛﻢ اﻟﺬى ﻳﻠﻴﻪ اﻟﺤﺮف ‪ L‬ﺻﻐﻴﺮا او‬
‫آﺒﻴﺮا وهﻜﺬا‬
‫اى اﺑﺤﺚ ﻋﻦ آﻠﻤﺔ ‪ volt‬وﻳﻤﻜﻦ ان ﻳﻜﻮن اى ﺣﺮف ﻓﻴﻬﺎ آﺒﻴﺮ او ﺻﻐﻴﺮ‬
‫ﻣﺜﻞ ‪ Volts‬او ‪ VOLTS‬او ‪ volts‬او ‪ vOLTs‬وهﻜﺬا‬
‫اﺑﺤﺚ ﻋﻦ ﻣﺴﺎﻓﺔ او ﻋﻼﻣﺔ ‪ +‬او ﻋﻼﻣﺔ ‪-‬‬ ‫]‪[ +-‬‬
‫اى ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻻرﻗﺎم اﻟﻤﺘﺘﺎﺑﻌﺔ وﻋﺪد هﺬا اﻻرﻗﺎم واﺣﺪ او اآﺜﺮ‬ ‫‪[0-9]+‬‬
‫ﻣﺠﻤﻮﻋﺔ ﺗﺘﻜﻮن ﻣﻦ ﺣﺮف او آﺜﺮ ﻣﻦ اﻟﺤﺮوف اﻟﻤﺴﺎﻓﺔ و‪Tab‬و ‪New‬‬ ‫‪[\t\r\n\s]+‬‬
‫‪ Line‬و ‪Carriage Return‬‬
‫اى ﻣﺠﻤﻮﻋﺔ ﺣﺮوف ﻋﺪدهﻢ ﻋﻠﻰ اﻻﻗﻞ واﺣﺪ وﻟﻜﻦ هﺬة اﻟﻤﺠﻤﻮﻋﺔ ﻻ‬ ‫‪[~0-9]+‬‬
‫ﺗﺤﺘﻮى ﻋﻠﻰ اى رﻗﻢ ﻣﻦ اﻻرﻗﺎم ﻣﻦ ‪ 0‬اﻟﻰ ‪9‬‬
‫ﺗﺘﻄﺎﺑﻖ اذا آﺎﻧﺖ آﻠﻤﺔ ‪ Level‬ﻣﻮﺟﻮد ﻓﻰ ﺑﺪاﻳﺔ ‪String‬‬ ‫‪^Level‬‬
‫ﻣﺜﻞ ‪ Level=10‬وﻻ ﺗﺘﻄﺎﺑﻖ ﻣﻊ ‪The Level=10‬‬
‫ﺗﺘﻄﺎﺑﻖ اذا آﺎﻧﺖ آﻠﻤﺔ ‪ Volt‬ﻓﻰ ﻧﻬﺎﻳﺔ ‪String‬‬ ‫‪Volt$‬‬
‫ﻣﺜﻞ ‪ The Input =10 Volt‬وﻻ ﺗﺘﻄﺎﺑﻖ ﻣﻊ‬
‫‪The Input =10 Volt Only‬‬

‫‪44‬‬
‫اى ﻣﺠﻤﻮﻋﺔ ﺣﺮوف ﺑﻴﻦ ﻗﻮﺳﻴﻦ او ﻗﻮﺳﻴﻦ ﻓﺎرﻏﻴﻦ‬ ‫)*‪(.‬‬
‫ﻻﺣﻆ ان ‪ .‬ﻣﻌﻨﺎهﺎ اى ﺣﺮف‬
‫واﻟﻌﻼﻣﺔ * ﻣﻌﻨﺎهﺎ اى ﻋﺪد ﻣﻦ اﻟﺤﺮف اﻟﺬى ﻗﺒﻠﻬﺎ او ان ﻳﻜﻮن ﻏﻴﺮ‬
‫ﻣﻮﺟﻮد‬
‫وهﺬا آﻠﻪ ﺑﻴﻦ ﻗﻮﺳﻴﻦ‬
‫اى ﻣﺠﻤﻮﻋﺔ ﺣﺮوف ﺑﻴﻦ ﻗﻮﺳﻴﻦ وﻟﻜﻦ هﺬﻳﻦ اﻟﻘﻮﺳﻴﻦ ﻻ ﻳﺤﺘﻮﻳﺎن ﻋﻠﻰ‬ ‫)*])(~[(‬
‫اى اﻗﻮاس ‪.‬‬
‫وﻳﻤﻜﻦ ان ﻳﻜﻮن اﻟﻘﻮﺳﻴﻦ ﻓﺎرﻏﻴﻦ‬
‫ﻻﺣﻆ ان ])(~[ ﺗﻌﻨﻰ اى ﺣﺮف ﻣﺎﻋﺪا اﻟﻘﻮﺳﻴﻦ‬
‫وان *])(~[ ﺗﻌﻨﻰ اى ﻋﺪد ﻣﻦ اﻟﺤﺮوف ﻣﺎﻋﺪا اﻻﻗﻮاس وﻳﻤﻜﻦ ان ﻻ‬
‫ﻳﻮﺟﺪ اى ﺣﺮف‬
‫وهﺬا آﻠﻪ ﺑﻴﻦ ﻗﻮﺳﻴﻦ )*])(~[(‬
‫اﻟﻘﻮس [‬ ‫][[‬
‫اى آﻠﻤﺔ ﺗﺒﺪأ ﺑﺎﻟﺤﺮف ‪c‬او ‪ d‬ﺛﻢ اﻟﺤﺮف ‪ a‬او ‪ o‬ﺛﻢ اﻟﺤﺮف ‪ t‬او ‪g‬‬ ‫]‪[cd][ao][tg‬‬
‫ﻣﺜﻞ ‪ cat‬و ‪ dog‬و ‪ dot‬و ‪ cot‬و ‪ cog‬و هﻜﺬا‬

‫واﻟﺪاﻟﺔ ‪ Match Pattern‬ﺳﺮﻳﻌﺔ وﻓﻌﺎﻟﺔ ﻓﻰ اﻟﺒﺤﺚ داﺧﻞ ‪ String‬وﻟﻜﻨﻬﺎ ﻻ ﺗﺪﻋﻢ آﻞ اﻣﻜﺎﻧﻴﺎت‬


‫‪ Regular Expression‬وﺗﻮﺟﺪ داﻟﺔ اﺧﺮى ذات اﻣﻜﺎﻧﻴﺎت اآﺒﺮ وﻟﻜﻨﻬﺎ ﺑﻄﻴﺌﺔ ﻧﺴﺒﻴﺔ وهﻰ داﻟﺔ‬
‫‪Match Regular Expression‬‬

‫وﻟﻼﻃﻼع ﻋﻠﻰ اﻣﻜﺎﻧﻴﺎت اآﺜﺮ ﻟـ ‪ Regular Expression‬واﺳﺘﺨﺪاﻣﻬﺎ ﻣﻊ هﺬة اﻟﺪاﻟﺔ ﻳﻤﻜﻦ اﻻﺳﺘﻌﺎﻧﺔ‬
‫ﺑﺎﻟﺒﺤﺚ ﻓﻰ اﻻﻧﺘﺮﻧﺖ وهﻨﺎك ﻣﺼﺎدر آﺜﻴﺮة ﻓﻰ هﺬة اﻟﻤﻮﺿﻮع‪.‬‬

‫‪45‬‬
File Paths
‫ﻗﺒﻞ ان ﻧﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ﻧﺘﻌﺮف ﻋﻠﻰ ﻧﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻟﺘﻤﺜﻴﻞ ﻣﺴﺎرات اﻟﻤﻠﻔﺎت‬
.File Path ‫ وهﻮ‬Hard disk ‫واﻟﻤﺠﻠﺪات ﻋﻠﻰ وﺣﺪات اﻟﺘﺨﺰﻳﻦ ﻣﺜﻞ‬
File Path Indicator‫ و‬File Path Control ‫ ﻟﺘﻤﺜﻴﻞ ﻣﺴﺎرات اﻟﻤﻠﻔﺎت‬LabVIEW ‫وﻳﻮﺟﺪ ﻓﻰ‬
.File Path Constant‫و‬
‫ ﻣﻦ‬Front Panel ‫ ﻓﻰ‬File Path Indicator ‫ او‬File Path Control ‫وﻳﺘﻢ ادراج‬
Controls Palette>>Modern>>String & Path

‫ ﻣﻦ‬Block Diagram ‫ ﻓﻰ‬File Path Constant ‫وﻳﺘﻢ ادراج‬


Functions Palette>>Programming>>File I/O>>File Constants

46
‫وﻳﻮﺟﺪ ﻣﻊ ‪ File Path Control‬زرار ﻟﻔﺘﺢ ﻧﺎﻓﺬة ﻟﺘﺼﻔﺢ اﻟﻤﻠﻔﺎت واﻟﻤﺠﻠﺪات اﻟﻤﻮﺟﻮدة ﻋﻠﻰ وﺣﺪات‬
‫اﻟﺘﺨﺰﻳﻦ ﻟﺘﺤﺪﻳﺪ اﻟﻤﺴﺎر اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫‪47‬‬
‫وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﺧﺼﺎﺋﺺ ﻧﺎﻓﺬة اﻟﺘﺼﻔﺢ وذﻟﻚ ﻣﻦ ﺧﻼل اﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪File Path‬‬
‫‪ Control‬واﺧﺘﻴﺎر ‪.Browse Option‬‬

‫ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة ﻧﺤﺪد ﻓﻴﻬﺎ ﺧﺼﺎﺋﺺ ﻧﺎﻓﺬة اﻟﺘﺼﻔﺢ وآﻴﻔﻴﺔ اﺧﺘﻴﺎر اﻟﻤﻠﻔﺎت‪.‬‬

‫‪48‬‬
‫وهﺬا ﺷﻜﻞ ﻧﺎﻓﺬة اﻟﺨﺼﺎﺋﺺ ﺑﻌﺪ ﺗﺤﺪﻳﺪ ﺧﺼﺎﺋﺼﻬﺎ‬

‫ﻣﻠﺤﻮﻇﻪ هﺎﻣﺔ ‪:‬‬


‫‪ 9‬ﺗﺤﺪد ‪ File Path Control‬وﻧﺎﻓﺬة اﻟﺘﺼﻔﺢ اﻟﺨﺎﺻﺔ ﺑﻪ ﻓﻘﻂ ﻣﺴﺎر اﻟﻤﻠﻒ ﻻﺳﺘﺨﺪاﻣﻪ ﻓﻴﻤﺎ ﺑﻌﺪ ﻣﻦ‬
‫ﺧﻼل اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑـﺎﻟﻤﻠﻔﺎت‪.‬‬
‫ﻓﻤﺜﻼ اذا ﺣﺪدﻧﺎ ﻣﺴﺎر ﻣﻠﻒ ﺟﺪﻳﺪ ﻓﻠﻴﺲ ﻣﻌﻨﻰ ذﻟﻚ اﻧﻪ اﺻﺒﺢ ﻣﻮﺟﻮدا وﻟﻜﻦ ﺣﺪدﻧﺎ ﻣﺴﺎرﻩ ﻟﻜﻰ ﻳﺘﻢ‬
‫اﻧﺸﺎءﻩ ﺑﻌﺪ ذﻟﻚ ﻣﻦ ﺧﻼل دوال اﻟﺘﻌﺎﻣﻞ اﻟﻤﻠﻔﺎت‪.‬‬
‫‪ 9‬زرار اﻟﺘﺼﻔﺢ ﻳﻤﻜﻦ اﻟﻀﻐﻂ ﻋﻠﻴﻪ ﻟﻔﺘﺢ ﻧﺎﻓﺬة اﻟﺘﺼﻔﺢ اﺛﻨﺎء ﺗﺼﻤﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ او اﺛﻨﺎء ﺗﻨﻔﻴﺬﻩ‪.‬‬

‫‪49‬‬
‫‪File Input /Output‬‬
‫ﻧﻈﺮا ﻟﻼهﻤﻴﺔ اﻟﻜﺒﻴﺮة ﻟﺘﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت ﻓﻰ اﻟﻤﻠﻔﺎت واﺳﺘﻌﺎدﺗﻬﺎ ﻳﻮﺟﺪ ﻓﻰ ‪ LabVIEW‬ﻣﻜﺘﺒﺔ آﺎﻣﻠﺔ ﻣﻦ‬
‫اﻟﺪوال ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت وﺳﻮف ﻧﺘﻌﺮف ﻓﻰ هﺬا اﻟﺪرس ﻋﻠﻰ اﻟﺪوال اﻻﺳﺎﺳﻴﺔ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت‪.‬‬
‫وﻳﻤﻜﻦ ادراج هﺬة اﻟﺪوال اﻻﺳﺎﺳﻴﺔ ﻣﻦ‬
‫‪Factions Palette>>Programming>>File I/O‬‬

‫وﻳﻮﺟﺪ ﻧﻮﻋﺎن ﻣﻦ اﻟﺪوال او ‪ VIs‬اﻟﺘﻰ ﺗﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ﻓﻰ ‪ LabVIEW‬وهﻤﺎ ‪:‬‬


‫‪High-Level File I/O‬‬
‫وهﻰ دوال و‪ VIs‬ﺳﻬﻠﺔ اﻻﺳﺘﺨﺪام ﺗﻘﻮم ﺑﺠﻤﻴﻊ اﻟﻌﻤﻠﻴﺎت اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﻠﻔﺎت ﻣﻦ ﻓﺘﺢ اواﻧﺸﺎء وآﺘﺎﺑﺔ او ﻗﺮاءة‬
‫وﻏﻠﻖ ﻟﻠﻤﻠﻔﺎت ‪ ،‬وهﻰ ﺗﺘﻌﺎﻣﻞ ﻣﻊ ﻣﻠﻔﺎت ذات ﻓﻮرﻣﺎت ﻣﻌﻴﻨﺔ ‪.‬وهﻰ ﻧﺴﺒﻴﺎ ﺑﻄﻴﺌﺔ وﻳﻔﻀﻞ ﻋﺪم وﺿﻌﻬﺎ ﻓﻰ‬
‫‪ Loop‬ﻟﺘﻜﺮار ﻋﻤﻠﻴﺔ اﻟﻘﺮاءة او اﻟﻜﺘﺎﺑﺔ ﻓﻰ اﻟﻤﻠﻔﺎت وﻣﻦ هﺬة ‪ VIs‬اﻟﺘﻰ ﺳﻨﺘﻌﺮف ﻋﻠﻴﻬﺎ ‪:‬‬
‫‪Write to Measurement File Express VI‬‬
‫‪Read from Measurement File Express VI‬‬
‫‪Write to Spreadsheet File‬‬
‫‪Read from Spreadsheet File‬‬

‫‪: Low-Level File I/O‬‬


‫وﺗﺘﻤﻴﺰ هﺬة اﻟﺪوال ﺑﺎﻟﻤﺮوﻧﺔ ﺣﻴﺚ ان آﻞ داﻟﺔ ﺗﻘﻮم ﺑﻌﻤﻠﻴﺔ ﻣﺤﺪدة ﻋﻠﻰ اﻟﻤﻠﻔﺎت ﻓﻬﻨﺎك داﻟﺔ ﻟﻔﺘﺢ او اﻧﺸﺎء‬
‫اﻟﻤﻠﻒ واﺧﺮى ﻟﻠﻜﺘﺎﺑﺔ و اﺧﺮى ﻟﻠﻘﺮاءة واﺧﺮى ﻟﻐﻠﻖ اﻟﻤﻠﻒ‪.‬‬
‫وﺗﺘﻤﻴﺰ هﺬة اﻟﻤﻠﻔﺎت ﺑﺴﺮﻋﺔ اﻟﻘﺮاءة واﻟﻜﺘﺎﺑﺔ ‪.‬وﻣﻦ هﺬة اﻟﺪوال اﻟﺘﻰ ﺳﻨﺘﻌﺮف ﻋﻠﻴﻬﺎ‬
‫‪Open/Create/Replace File‬‬

‫‪50‬‬
‫‪Close File‬‬
‫‪Write to Text File‬‬
‫‪Read From Text File‬‬
‫‪Write to Binary File‬‬
‫‪Read from Binary File‬‬

‫وﻗﺒﻞ ان ﻧﺒﺪأ اﻟﺘﻌﺮف ﻋﻠﻰ هﺬة اﻟﺪوال ﻧﻮﺿﺢ اﻟﻨﻮﻋﻴﻦ اﻻﺳﺎﺳﻴﻦ ﻣﻦ اﻟﻤﻠﻔﺎت ‪:‬‬
‫اﻟﻨﻮع اﻻول ‪ Binary Files :‬وﻓﻴﻪ ﺗﺨﺰن اﻟﻤﻠﻔﺎت ﻋﻠﻰ هﻴﺌﺔ ‪. Bytes‬وﻳﺘﻢ ﻗﺮاءة هﺬا اﻟﻨﻮع ﻣﻦ‬
‫اﻟﻤﻠﻔﺎت ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ اﻟﺘﻰ ﺧﺰن ﺑﻬﺎ واﻻ ﺳﺘﻜﻮن اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺗﻢ ﻗﺮاءﺗﻬﺎ ﻏﻴﺮ ﺻﺤﻴﺤﺔ‪.‬‬

‫اﻟﻨﻮع اﻟﺜﺎﻧﻰ ‪ Text File :‬وﻓﻴﻪ ﺗﻜﻮن اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ هﻴﺌﺔ ﺣﺮوف وآﻞ ﺣﺮف ﻳﺨﺰن آﺮﻗﻢ وهﺬا اﻟﺮﻗﻢ‬
‫هﻮ ‪ ASCII Code‬ﻟﻠﺤﺮف‪.‬ﻟﺬﻟﻚ ﻋﻨﺪ اﻟﺘﺨﺰﻳﻦ ﻓﻰ هﺬة اﻟﻤﻠﻔﺎت ﻧﺤﻮل ﻣﺎ ﻧﺮﻳﺪﻩ اﻟﻰ ‪ String‬وهﺬا اﻟـ‬
‫‪ String‬ﻳﺘﻢ ﺗﺨﺰﻳﻨﻪ ﻓﻰ اﻟﻤﻠﻒ ﺑﺎﻟـ ‪ .ASCII Code‬وﻣﺎ ﻳﻤﻴﺰ هﺬة اﻟﻤﻠﻔﺎت اﻧﻪ ﻳﻤﻜﻦ ان ﻳﺘﻢ ﻗﺮاءﺗﻬﺎ‬
‫ﺑﻮاﺳﻄﺔ ﺑﺮاﻣﺞ ﺗﺤﺮﻳﺮ اﻟﻨﺼﻮص ﻣﺜﻞ ‪.Notepad‬وﻟﻜﻨﻬﺎ ﺗﺄﺧﺬ ﺳﻌﻪ ﺗﺨﺰﻳﻨﻴﺔ اآﺒﺮ ﻣﻦ ‪.Binary Files‬‬

‫اوﻻ ‪High Level File I/O‬‬


‫‪Write to Measurement File Express VI‬‬

‫ﺗﻘﻮم هﺬة ‪ Express VI‬ﺑﺘﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت ﻓﻰ ﻣﻠﻒ ‪ ،‬هﺬا اﻟﻤﻠﻒ ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻣﻦ اﻟﻨﻮع ‪:‬‬
‫• ‪ Measurement Data File‬ﻣﻦ اﻟﻨﻮع ‪Text‬‬
‫) ‪ (text-based measurement file‬وهﻮ ﻳﻜﻮن ﺑﺎﻻﻣﺘﺪاد ‪ LVM‬و ﻳﻤﻜﻦ ﻓﺘﺤﻪ ﺑﺒﺮاﻣﺞ‬
‫ﺗﺤﺮﻳﺮ اﻟﻨﺼﻮص ﻣﺜﻞ ‪ Notepad‬او ﺑﺮاﻣﺞ ‪ Spreadsheet‬ﻣﺜﻞ ‪. Excel‬واﻟﺒﻴﺎﻧﺎت ﻓﻰ‬
‫هﺬا اﻟﻤﻠﻒ ﻳﻤﻜﻦ ان ﺗﻜﻮن ﻣﻔﺼﻮﻟﺔ ﺑـ ‪ Tab‬او ﻳﻤﻜﻦ ان ﻧﺠﻌﻠﻬﺎ ﻣﻔﺼﻮﻟﺔ ﺑـ ﻓﺎﺻﻠﺔ ﻋﺎدﻳﺔ )‪.(,‬‬
‫وﻗﺪ ﻳﺤﺘﻮى اﻟﻤﻠﻒ ‪ LVM‬اﻳﻀﺎ ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺒﻴﺎﻧﺎت ﻣﺜﻞ وﻗﺖ وﺗﺎرﻳﺦ اﻟﺤﺼﻮل ﻋﻠﻰ‬
‫هﺬة اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫‪51‬‬
‫• ‪ Measurement Data File‬ﻣﻦ اﻟﻨﻮع ‪ Binary‬وهﻮ ﻳﻜﻮن ﺑﺎﻻﻣﺘﺪاد ‪ TDM‬وﻳﻤﻜﻦ‬
‫ﺗﺨﺰﻳﻦ ﻓﻴﻪ اى ﻧﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت ‪.‬وهﻮ اﺳﺮع ﻣﻦ اﻟﻨﻮع ‪ LVM‬ﻓﻰ اﻟﺘﻌﺎﻣﻞ وﻳﺎﺧﺬ ﻣﺴﺎﺣﺔ‬
‫ﺗﺨﺰﻳﻨﻴﺔ اﺻﻐﺮ وﻳﻤﻜﻦ ﺗﺨﺰﻳﻦ اﻻرﻗﺎم ﻓﻴﻪ ﺑﺎآﺜﺮ دﻗﺔ ﻋﻦ ﺗﺨﺰﻳﻨﻬﺎ ﻓﻰ ﻣﻠﻒ ﻣﻦ اﻟﻨﻮع ‪.LVM‬‬

‫ﻋﺎدة ﻣﺎ ﺗﺴﺘﺨﺪم هﺬة ‪ Express VI‬ﻟﺘﺨﺰﻳﻦ اﻻﺷﺎرات اﻟﺘﻰ ﻳﺘﻢ ﻗﻴﺎﺳﻬﺎ ﺑﻮاﺳﻄﺔ آﺮوت ‪. DAQ‬‬

‫ﻋﻨﺪ ادراج هﺬة ‪ Express VI‬ﺗﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة اﻋﺪادات ‪ Express VI‬ﻟﺘﺤﺪﻳﺪ ﺧﺼﺎﺋﺺ اﻟﻤﻠﻒ اﻟﺬى‬
‫ﺳﻴﺘﻢ ﺗﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت ﻓﻴﻪ‪ .‬وﻳﻤﻜﻦ ﻓﺘﺢ هﺬة اﻟﻨﺎﻓﺬة ﻓﻰ اى وﻗﺖ ﺑﺎﻟﻀﻐﻂ ﻣﺮﺗﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻦ ﺑﺎﻟﺰر اﻻﻳﺴﺮ‬
‫ﻟﻠﻤﺎوس ﻋﻠﻰ اﻳﻘﻮن ‪.VI‬‬

‫‪52‬‬
‫ﻧﺘﻌﺮف ﻋﻠﻰ اﻻﺧﺘﻴﺎرات ﻓﻰ هﺬة اﻟﻨﺎﻓﺬة ‪:‬‬

‫‪53‬‬
‫ﻣﺪاﺧﻞ هﺬة ‪ Express VI‬هﻰ ‪:‬‬

‫‪54‬‬
‫ﻣﺨﺎرج ‪Express VI‬‬

‫وﺗﺪﺧﻞ اﻟﺒﻴﺎﻧﺎت اﻟﻤﺮاد ﺗﺨﺰﻳﻨﻬﺎ اﻟﻰ هﺬة ‪ Express VI‬ﺑﺤﻴﺚ ﺗﻜﻮن ﻣﻦ اﻟﻨﻮع ‪Dynamic Data‬‬
‫اﻟﺬى ﻳﻤﻜﻦ ﺗﺠﻤﻴﻊ ﻓﻴﻪ اآﺜﺮ ﻣﻦ اﺷﺎرة ‪.‬وﻳﻤﻜﻦ ﺗﺤﻮﻳﻞ اى ﻧﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت اﻟﻰ ‪Dynamic Data‬‬
‫ﺑﻮاﺳﻄﺔ ‪ Convert To Dynamic Data‬اﻟﺘﻰ ﻳﻤﻜﻦ ادراﺟﻬﺎ ﻣﻦ‬
‫‪Functions Palette>>Express>>Signal Manipulation‬‬

‫‪55‬‬
‫ﻣﺜﺎل ‪ :‬ﺗﺨﺰﻳﻦ ﻣﺼﻔﻮﻓﺔ‬

‫‪Read from Measurement File Express VI‬‬


‫ﺗﻘﻮم هﺬة ‪ Express VI‬ﺑﺎﺳﺘﺪﻋﺎء اﻟﺒﻴﺎﻧﺎت اﻟﻤﺨﺰﻧﺔ ﻓﻰ ﻣﻠﻔﺎت ﻣﻦ اﻟﻨﻮع ‪ LVM‬او ‪ Text File‬او‬
‫اﻟﻨﻮع ‪.TDM‬‬

‫‪56‬‬
‫وﻋﻨﺪ ادراج هﺬة ‪ Express VI‬ﺗﻈﻬﺮ ﻟﻨﺎ ﻧﺎﻓﺬة اﻋﺪادات ‪ Express VI‬ﻟﺘﺤﺪﻳﺪ ﺧﺼﺎﺋﺺ اﻟﻤﻠﻒ و‬
‫اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺳﻴﺘﻢ اﺳﺘﺮﺟﺎﻋﻬﺎ‪.‬‬
‫وﻳﻤﻜﻦ ﻓﺘﺢ هﺬة اﻟﻨﺎﻓﺬة ﻓﻰ اى وﻗﺖ ﺑﺎﻟﻀﻐﻂ ﻣﺮﺗﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ ﺑﺎﻟﺰر اﻻﻳﺴﺮ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻳﻘﻮﻧﺔ ‪.VI‬‬

‫و اﻻﺧﺘﻴﺎرات اﻟﻤﻮﺟﻮدة ﻓﻰ هﺬة اﻟﻨﺎﻓﺬة هﻰ ‪:‬‬

‫‪57‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻗﺪ ﺗﻜﻮن اﻟﺒﻴﺎﻧﺎت ﻓﻰ اﻟﻤﻠﻒ ﻋﻠﻰ هﻴﺌﺔ ﻣﺠﻤﻮﻋﺎت ﻣﻦ اﻟﺒﻴﺎﻧﺎت آﻞ ﻣﺠﻤﻮﻋﺔ ﻟﻬﺎ ‪Header‬‬
‫وﻓﻰ آﻞ ﻣﺮة ﻳﺘﻢ اﻟﻘﺮاءة ﻣﻦ اﻟﻤﻠﻒ ﻳﺘﻢ ﻗﺮاءة ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺗﻠﻚ اﻟﺒﻴﺎﻧﺎت ﺣﺘﻰ ﻳﺘﻢ اﻻﻧﺘﻬﺎء ﻣﻦ ﻗﺮاءة اﻟﻤﻠﻒ‬
‫آﻠﻪ‪ .‬وﻗﺪ ﺗﻮﺟﺪ اﻟﺒﻴﺎﻧﺎت ﻓﻰ ﻣﺠﻤﻮﻋﺔ واﺣﺪة‪.‬‬

‫‪58‬‬
‫ﻣﺜﺎل ‪:‬ﻣﻠﻒ ‪ Text‬ﻳﺤﺘﻮى ﻋﻠﻰ ﺑﻴﺎﻧﺎت ﺑﻬﺬا اﻟﺸﻜﻞ‬

‫ﻧﻘﻮم ﺑﻌﻤﻞ اﻻﻋﺪادات آﻤﺎ ﺑﺎﻟﺸﻜﻞ‬


‫‪59‬‬
60
‫ﺗﻘﻮم هﺬة ‪ Express VI‬ﺑﻘﺮاءة اﻟﺒﻴﺎﻧﺎت ﻣﻦ اﻟﻤﻠﻒ واﺧﺮاﺟﻬﺎ ﻋﻠﻰ هﻴﺌﺔ ‪ Dynamic Data‬وآﻤﺎ ﻧﻌﻠﻢ‬
‫ﻳﻤﻜﻦ ﺗﻮﺻﻴﻠﻬﺎ ﻣﺒﺎﺷﺮة اﻟﻰ ‪ Graph‬ﻟﺮﺳﻤﻬﺎ وﻳﻤﻜﻦ ﺗﺤﻮﻳﻠﻬﺎ اﻟﻰ اى ﺻﻮرة اﺧﺮى وذﻟﻚ ﺑﺎﺳﺘﺨﺪام‬
‫‪ Convert from Dynamic Data‬اﻟﺘﻰ ﻳﻤﻜﻦ ادارﺟﻬﺎ ﻣﻦ‬
‫‪Functions Palette>>Express>>Signal Manipulation‬‬

‫ﻣﺜﺎل‪ :‬ﻗﺮاءة ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻣﻦ ﻣﻠﻒ‬

‫‪Write to Spreadsheet File VI‬‬


‫ﺗﻘﻮم هﺬة ‪ VI‬ﺑﺘﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت اﻟﺮﻗﻤﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻰ ﻣﺼﻔﻮﻓﺔ اﻟﻰ ﻣﻠﻒ ﻣﻦ اﻟﻨﻮع ‪ Text‬ﻋﻠﻰ هﻴﺌﺔ‬
‫‪ Spreadsheet‬ﺣﻴﺚ ﻳﻤﻜﻦ ﻓﺘﺤﻪ ﺑﺴﻬﻮﻟﺔ ﺑﺒﺮاﻣﺞ ‪ Spreadsheet‬ﻣﺜﻞ ‪.Excel‬‬
‫وهﺬة ‪ VI‬ﺗﻘﻮم ﺑﺘﺤﻮﻳﻞ اﻻرﻗﺎم اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ ‪ String‬ﺛﻢ ﺗﻜﺘﺐ هﺬا ‪ String‬ﻓﻰ ﻣﻠﻒ‪.‬‬
‫وهﺬا اﻟﻤﻠﻒ ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻣﻠﻒ ﺟﺪﻳﺪا او ان ﻳﻜﻮن ﻣﻠﻒ ﻣﻮﺟﻮد وﻳﺘﻢ اﺿﺎﻓﺔ اﻟﺒﻴﺎﻧﺎت اﻟﻴﻪ‪.‬‬

‫‪61‬‬
‫وﻣﺪاﺧﻞ هﺬة ‪ VI‬آﺎﻟﺘﺎﻟﻰ‪:‬‬
‫‪ :Format‬وهﻮ ﻟﺘﺤﺪﻳﺪ ﺷﻜﻞ اﻻرﻗﺎم ﻋﻨﺪ ﺗﺤﻮﻳﻠﻬﺎ اﻟﻰ ‪ String‬وﺗﺨﺰﻳﻨﻬﺎ ﻓﻰ اﻟﻤﻠﻒ وﺻﻴﻐﺔ ‪Format‬‬
‫هﻰ آﻤﺎ ذآﺮﻧﺎهﺎ ﻓﻰ هﺬا اﻟﺪرس ‪.‬واذا ﻟﻢ ﻳﻮﺻﻞ هﺬا اﻟﻤﺪﺧﻞ ﻓﺎن ﻗﻴﻤﺔ ‪ Format‬هﻰ ‪ %.3f‬اى رﻗﻢ ذو‬
‫آﺴﺮ ﻋﺸﺮى وﻋﺪد اﻻرﻗﺎم اﻟﻌﺸﺮﻳﺔ ﺗﺴﺎوى ‪.3‬‬

‫‪ : File Path‬اﺳﻢ وﻣﺴﺎر اﻟﻤﻠﻒ وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻣﺴﺎر اﻟﻤﻠﻒ ﻣﻦ ﺧﻼل ‪ File Path Control‬او ﻳﻜﻮن‬
‫ﺧﺮج ﻷى ‪ VI‬اﺧﺮى ‪ .‬واذا ﻟﻢ ﻳﺘﻢ ﺗﻮﺻﻴﻞ هﺬا اﻟﻤﺪﺧﻞ او ان ﻗﻴﻤﺔ ﻣﺴﺎر اﻟﻤﻠﻒ ﻓﺎرﻏﺔ ﺳﺘﻈﻬﺮ ‪ VI‬ﻋﻨﺪ‬
‫ﺗﻨﻔﻴﺬهﺎ ﻧﺎﻓﺬة اﻟﺘﺼﻔﺢ اﻟﻰ اﻟﻤﺴﺘﺨﺪم ﺗﻄﻠﺐ ﻣﻨﻪ ﺗﺤﺪﻳﺪ ﻣﺴﺎر واﺳﻢ اﻟﻤﻠﻒ اﻟﻤﺮاد اﻟﺘﺨﺰﻳﻦ ﻓﻴﻪ‪.‬‬

‫‪ : 2 D Data‬ﻣﺪﺧﻞ اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﻧﺮﻳﺪ ﺗﺨﺰﻳﻨﻬﺎ اذا آﺎﻧﺖ ﻓﻰ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ‪.‬‬
‫‪ : 1 D Data‬ﻣﺪﺧﻞ اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﻧﺮﻳﺪ ﺗﺨﺰﻳﻨﻬﺎ اذا آﺎﻧﺖ ﻓﻰ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ‪.‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬اذا ﺗﻢ اﻟﺘﻮﺻﻴﻞ اﻟﻰ اﻟﻤﺪﺧﻠﻴﻦ ‪ 2D Data‬و‪ 1D Data‬ﻓﺴﻴﺘﻢ ﺗﺨﺰﻳﻦ اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ‬
‫اﻟﻮاﺣﺪ وﻳﺘﻢ ﺗﺠﺎهﻞ اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪﻳﻦ‪.‬‬

‫?‪: Append to File‬ﻟﻮ ان هﺬا اﻟﻤﺪﺧﻞ ‪ True‬ﺗﻘﻮم هﺬة ‪ VI‬ﺑﺎﺿﺎﻓﺔ اﻟﺒﻴﺎﻧﺎت اﻟﻰ اﻟﺒﻴﺎﻧﺎت اﻟﻤﺨﺰن‬
‫ﺑﺎﻟﻤﻠﻒ ﺳﺎﺑﻘﺎ‪.‬واذا آﺎﻧﺖ ‪ False‬ﺗﻘﻮم ‪ VI‬ﺑﺎﺳﺘﺒﺪال اﻟﺒﻴﺎﻧﺎت اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﻠﻒ ﺑﺎﻟﺒﻴﺎﻧﺎت اﻟﺠﺪﻳﺪة اﻟﺘﻰ‬
‫ﺳﻴﺘﻢ ﺗﺨﺰﻳﻨﻬﺎ‪ .‬وﻗﻴﻤﺔ هﺬا اﻟﻤﺪﺧﻞ اذا ﻟﻢ ﻳﺘﻢ اﻟﺘﻮﺻﻴﻞ اﻟﻴﻪ هﻰ ‪. False‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬اذا ﻟﻢ ﻳﻜﻦ اﻟﻤﻠﻒ ﻣﻮﺟﻮد ﺳﻴﺘﻢ اﻧﺸﺎء اﻟﻤﻠﻒ وﺳﺘﺨﺰن اﻟﺒﻴﺎﻧﺎت ﺑﻪ‪.‬‬

‫?‪: Transpose‬اذا آﺎن هﺬا اﻟﻤﺪﺧﻞ ‪ True‬ﻳﺘﻢ ﺗﺤﻮﻳﻞ اﻋﻤﺪة اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ ﺻﻔﻮف واﻟﺼﻔﻮف اﻟﻰ‬
‫اﻋﻤﺪة ﺑﺤﻴﺚ ﺗﺨﺰن اﻻﻋﻤﺪة ﻋﻠﻰ هﻴﺌﺔ ﺻﻔﻮف ﻓﻰ اﻟﻤﻠﻒ و اﻟﺼﻔﻮف ﺗﺨﺰن ﻋﻠﻰ هﻴﺌﺔ اﻋﻤﺪة‪.‬‬
‫اﻣﺎ اذا آﺎن ‪ False‬ﻳﺘﻢ ﺗﺨﺰﻳﻦ اﻟﻤﺼﻔﻮﻓﺔ آﻤﺎ هﻰ ﺑﺪون ﺗﺤﻮﻳﻞ وهﺬا هﻮ اﻟﻮﺿﻊ اﻟﻌﺎدى ﻓﻰ ﺣﺎﻟﺔ ﻋﺪم‬
‫ﺗﻮﺻﻴﻞ هﺬا اﻟﻤﺪﺧﻞ‪.‬‬

‫‪ :Delimiter‬ﻧﻮع اﻟﻔﺎﺻﻞ ﺑﻴﻦ اﻟﺒﻴﺎﻧﺎت ﻓﻰ اﻟﺼﻒ ﻓﻰ اﻟﻤﻠﻒ واﻟﻘﻴﻤﺔ اﻟﻌﺎدﻳﺔ هﻰ ‪ Tab‬وﻳﻤﻜﻦ ﺗﻮﺻﻴﻞ‬
‫اى ﻓﺎﺻﻞ ﻣﺜﻞ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎدﻳﺔ )‪ (,‬او اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ );(‪.‬‬

‫‪62‬‬
‫ﻣﺜﺎل ‪:‬ﺗﺨﺰﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ‬

‫‪63‬‬
‫ﻣﻦ‬ ‫و‬ ‫ ﺗﻢ ادراج داﻟﺔ‬: ‫ﻣﻠﺤﻮﻇﺔ‬
Functions Palette>>Mathematics>>Elementary & Spatial Functions>>
Trigonometric Function

‫ﻣﻦ‬ ‫وﺗﻢ ادراج اﻟﺜﺎﺑﺖ‬


Functions Palette>>Programming>>Math & Scientific Constants

64
‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻋﻨﺪ ﻋﺪم ﺗﻮﺻﻴﻞ ﻣﺴﺎر اﻟﻤﻠﻒ اﻟﻰ ﻣﺪﺧﻞ اﻟﺪاﻟﺔ و اﻇﻬﺮت اﻟﺪاﻟﺔ ﻋﻨﺪ اﻟﺘﻨﻔﻴﺬ ﻧﺎﻓﺬة اﻟﺘﺼﻔﺢ‬
‫وﺿﻐﻂ اﻟﻤﺴﺘﺨﺪم ‪ Cancel‬اى ﻟﻢ ﻳﺤﺪد ﻣﺴﺎر اﻟﻤﻠﻒ ﺳﻴﺤﺪث اﻟﺨﻄﺄ رﻗﻢ ‪ 43‬وﺗﻈﻬﺮ رﺳﺎﻟﺔ ﺗﻔﻴﺪ ﺑﺬﻟﻚ‪.‬‬

‫‪Read from Spreadsheet File VI‬‬


‫ﺗﻘﻮم هﺬة ‪ VI‬ﺑﻘﺮاءة ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﺴﻄﻮر او اﻟﺼﻔﻮف ﻣﻦ ﻣﻠﻒ ‪ Text‬ﻳﺤﺘﻮى ﻋﻠﻰ ﺑﻴﺎﻧﺎت رﻗﻤﻴﻪ ﺛﻢ‬
‫ﺗﺤﻮﻳﻞ هﺬة اﻟﺴﻄﻮر او اﻟﺼﻔﻮف اﻟﻰ ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻻرﻗﺎم‪.‬‬
‫وﻳﻤﻜﻦ ان ﺗﻘﻮم ‪ VI‬ﺑﻘﺮاءة اﻟﻤﻠﻒ ﻣﻦ اوﻟﻪ او ﻣﻦ ﺑﺪاﻳﺔ ﺣﺮف ﻣﻌﻴﻦ ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﻣﻜﺎﻧﻪ )رﻗﻤﻪ(‪.‬‬

‫‪65‬‬
‫وﻳﻤﻜﻦ ان ﺗﻘﻮم هﺬة ‪ VI‬ﺑﻌﻤﻞ ‪ Transpose‬ﻟﻠﻤﺼﻔﻮﻓﺔ ﻗﺒﻞ اﺧﺮاﺟﻬﺎ‪.‬‬
‫وﻣﺪاﺧﻞ هﺬة ‪VI‬هﻰ ‪:‬‬
‫‪ : Format‬ﺻﻴﻐﺔ ﺗﺤﺪد ﺷﻜﻞ اﻻرﻗﺎم ﻋﻨﺪ ﺗﺤﻮﻳﻠﻬﺎ ﻣﻦ ‪ String‬اﻟﻰ رﻗﻢ وﻗﻴﻤﺔ ‪ Format‬اﻟﻌﺎدﻳﺔ‬
‫"‪ "%.3f‬اى رﻗﻢ ذو آﺴﺮ ﻋﺸﺮى وﻋﺪد اﻻرﻗﺎم اﻟﻌﺸﺮﻳﺔ =‪.3‬‬

‫‪ :File Path‬ﻣﺴﺎر اﻟﻤﻠﻒ اﻟﺬى ﺳﻴﺘﻢ اﻟﻘﺮاءة ﻣﻨﻪ ‪ .‬اذا ﻟﻢ ﻳﻮﺻﻞ هﺬا اﻟﻤﺪﺧﻞ او آﺎن اﻟﻤﺴﺎر ﻓﺎرﻏﺎ ﺳﻴﺘﻢ‬
‫اﺧﺮاج ﻧﺎﻓﺬة اﻟﺘﺼﻔﺢ ﻟﻠﻤﺴﺘﺨﺪم ﻟﺘﺤﺪﻳﺪ ﻣﺴﺎر اﻟﻤﻠﻒ‪.‬‬

‫‪ : Number of Rows‬ﻟﺘﺤﺪﻳﺪ اﻗﺼﻰ ﻋﺪد ﻣﻦ اﻟﺴﻄﻮر ﺳﻴﺘﻢ ﻗﺮاءﺗﻬﺎ‪.‬وﻋﺪد اﻟﺴﻄﻮر اﻟﺘﻰ ﻳﺘﻢ ﻗﺮاءﺗﻬﺎ‬
‫ﻳﻤﻜﻦ ان ﻳﻜﻮن اﻗﻞ اذا ﺗﻢ اﻟﻮﺻﻮل اﻟﻰ ﻧﻬﺎﻳﺔ اﻟﻤﻠﻒ ‪.‬اذا آﺎن ﻗﻴﻤﺔ هﺬا اﻟﻤﺪﺧﻞ اﻗﻞ ﻣﻦ اﻟﺼﻔﺮ )‪ (1-‬ﻳﺘﻢ‬
‫ﻗﺮاءة آﻞ اﻟﺴﻄﻮر او آﻞ اﻟﺼﻔﻮف وهﺬة هﻰ ﻗﻴﻤﺔ اﻟﻤﺪﺧﻞ اذا ﻟﻢ ﻳﺘﻢ اﻟﺘﻮﺻﻴﻞ اﻟﻴﻪ‪.‬‬

‫‪: Start of Read Offset‬وهﻮ اﻟﻤﻜﺎن ﻓﻰ اﻟﻤﻠﻒ اﻟﺬى ﺳﺘﺒﺪأ ﻣﻨﻪ ﻋﻤﻠﻴﺔ اﻟﻘﺮاءة وهﻮ ﻳﻌﺒﺮ ﻋﻦ رﻗﻢ‬
‫اﻟﺤﺮف ﻓﻰ اﻟﻤﻠﻒ اﻟﺬى ﺳﺘﺒﺪأ ﻣﻨﻪ ﻋﻤﻠﻴﺔ اﻟﻘﺮاءة ‪.‬‬
‫ﻣﺜﺎل اذا آﺎن اﻟﻤﻠﻒ ﻳﺘﻜﻮن ﻣﻦ ‪ Header‬ﻓﻴﻪ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺒﻴﺎﻧﺎت) ﻣﺜﻞ وﻗﺖ وﺗﺎرﻳﺦ اﻟﻘﻴﺎس و اﺳﻤﺎء‬
‫اﻟﺒﻴﺎﻧﺎت( ﺛﻢ اﻟﺒﻴﺎﻧﺎت اﻟﺮﻗﻤﻴﺔ اﻟﺘﻰ ﻧﺮﻳﺪ ﻗﺮاءﺗﻬﺎ وآﺎن ﻋﺪد ﺣﺮوف هﺬا ‪ Header‬هﻰ ‪ 57‬ﻓﺴﻮف ﻧﺒﺪأ‬
‫ﻣﻦ اﻟﺤﺮف رﻗﻢ ‪) 57‬اﻟﺘﺮﻗﻴﻢ ﻳﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ(‪.‬‬
‫واﻟﻘﻴﻤﺔ اﻟﻌﺎدﻳﺔ ﻟﻬﺬا اﻟﻤﺪﺧﻞ هﻰ ‪ 0‬اى ﻣﻦ ﺑﺪاﻳﺔ اﻟﻤﻠﻒ‪.‬‬

‫‪ :Max Character/Row‬اﻗﺼﻰ ﻋﺪد ﻣﻦ اﻟﺤﺮوف ﻓﻰ اﻟﺼﻒ ﺳﻴﺘﻢ ﻗﺮاءﺗﻬﺎ ‪.‬واذا ﻟﻢ ﻳﻮﺻﻞ هﺬا‬
‫اﻟﻤﺪﺧﻞ ﻓﺎن اﻟﻘﻴﻤﺔ اﻟﻌﺎدﻳﺔ ﻟﻪ هﻰ ‪ 0‬وهﻰ ﺗﻌﻨﻰ آﻞ ﺣﺮوف اﻟﺼﻒ‪.‬‬

‫?‪ : Transpose‬اذا آﺎن اﻟﻤﺪﺧﻞ ‪ True‬ﻳﺘﻢ ﻋﻤﻞ ‪ Transpose‬ﻟﻠﻤﺼﻔﻮﻓﺔ اﻟﻨﺎﺗﺠﺔ اى ﺗﺤﻮﻳﻞ‬


‫ﺻﻔﻮﻓﻬﺎ اﻟﻰ اﻋﻤﺪ واﻋﻤﺪﺗﻬﺎ اﻟﻰ ﺻﻔﻮف‪.‬‬

‫اذا آﺎن اﻟﻤﺪﺧﻞ ‪ False‬وهﻰ اﻟﻘﻴﻤﺔ اﻟﻌﺎدﻳﺔ ﺗﺨﺮج اﻟﻤﺼﻔﻮﻓﺔ آﻤﺎ هﻰ ﺑﺪون ﺗﺤﻮﻳﻞ‪.‬‬
‫‪ :Delimiter‬ﻧﻮع اﻟﻔﺎﺻﻞ اﻟﻤﺴﺘﺨﺪم ﻓﻰ اﻟﻤﻠﻒ ‪.‬واﻟﻘﻴﻤﺔ اﻟﻌﺎدﻳﺔ هﻰ ‪.Tab‬‬
‫‪66‬‬
‫وﻣﺨﺎرج ‪ VI‬آﺎﻟﺘﺎﻟﻰ ‪:‬‬
‫‪: New File Path‬ﻣﺴﺎر اﻟﻤﻠﻒ اﻟﺬى ﺗﻤﺖ ﻋﻤﻠﻴﺔ اﻟﻘﺮاءة ﻣﻨﻪ‪.‬‬
‫‪ : All Rows‬ﻣﺼﻔﻮﻓﺔ ارﻗﺎم ذات ﺑﻌﺪﻳﻦ ﺗﺤﺘﻮى ﻋﻠﻰ اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺗﻢ ﻗﺮاءﺗﻬﺎ‪.‬‬
‫‪: First Row‬ﻣﺼﻔﻮﻓﺔ ارﻗﺎم ذات ﺑﻌﺪ واﺣﺪ ﺗﺤﺘﻮى ﻓﻘﻂ ﻋﻠﻰ اول ﺻﻒ ﻣﻦ اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺗﻢ ﻗﺮاءﺗﻬﺎ‪.‬‬
‫‪ :Mark After Read‬وهﻮ اﻟﻤﻜﺎن ﻓﻰ اﻟﻤﻠﻒ اﻟﺬى ﺗﻮﻗﻔﺖ ﻋﻨﺪﻩ ﻋﻤﻠﻴﺔ اﻟﻘﺮاءة ‪.‬وهﻮ رﻗﻢ اﻟﺤﺮف اﻟﺬى‬
‫ﻳﻠﻰ ﻣﺎ ﺗﻢ ﻗﺮاءﺗﻪ ﻣﺒﺎﺷﺮة‪.‬‬
‫?‪ : (End of File) EOF‬اذا آﺎن ﻗﻴﻤﺘﻪ ‪ True‬ﻓﻬﺬا ﻳﻌﻨﻰ اﻧﻪ ﺗﻢ اﻟﻮﺻﻮل اﻟﻰ ﻧﻬﺎﻳﺔ اﻟﻤﻠﻒ ﻓﻰ ﻋﻤﻠﻴﺔ اﻟﻘﺮاءة‪.‬‬

‫‪67‬‬
‫ﻣﺜﺎل ‪:‬‬

‫ﻣﻠﺤﻮﻇﺎت ‪:‬‬
‫‪Write to Spreadsheet File VI‬و ‪ Read To Spreadsheet File VI‬ﻟﻴﺲ ﻟﻬﻤﺎ ﻣﺪﺧﻞ‬
‫او ﻣﺨﺮج ﻟـ ‪ Error Cluster‬ﻓﻬﻤﺎ ﻳﻘﻮﻣﺎن ﺑﺎﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺧﻄﺎء داﺧﻠﻴﺎ ﻟﺬا ﻳﻔﻀﻞ اﺳﺘﺨﺪاﻣﻬﻤﺎ ﻓﻰ‬
‫اﻟﺘﻄﺒﻴﻘﺎت اﻟﺒﺴﻴﻄﺔ وﻟﻴﺲ اﻟﺘﻄﺒﻴﻘﺎت اﻟﻤﺘﻘﺪﻣﺔ‪.‬‬
‫ﻣﻦ اﻟﻤﻔﻴﺪ ﻓﺘﺢ هﺬﻳﻦ ‪ VI‬وﻣﺸﺎهﺪة ‪ Block Diagram‬اﻟﺨﺎص ﺑﻬﻤﺎ وذﻟﻚ ﻳﺆدى ﻣﺰﻳﺪا ﻣﻦ اﻟﻔﻬﻢ ﻟﻄﺮﻳﻘﺔ‬
‫ﻋﻤﻠﻬﻤﺎ ‪.‬‬
‫‪68‬‬
‫اﻟﻔﺮق ﺑﻴﻦ ﻣﻠﻔﺎت ‪ Excel Spreadsheet‬وﻣﻠﻔﺎت ‪Text Spreadsheet‬‬
‫ﻣﻠﻔﺎت ‪ Excel Spreadsheet‬ذات اﻻﻣﺘﺪاد ‪ XLS‬هﻰ ﻣﻠﻔﺎت ﻣﻦ اﻟﻨﻮع ‪ Binary‬ﻟﻬﺎ ﻓﻮرﻣﺎت‬
‫ﺧﺎﺻﺔ ﻳﺘﻢ ﻓﺘﺤﻬﺎ ﺑﻮاﺳﻄﺔ ﺑﺮﻧﺎﻣﺞ ‪ Excel‬او اﻟﺒﺮاﻣﺞ اﻟﻤﻌﺪة ﻟﺬﻟﻚ وﻻ ﻳﻤﻜﻦ ﻓﺘﺤﻬﺎ ﺑﺒﺮاﻣﺞ ﺗﺤﺮﻳﺮ‬
‫اﻟﻨﺼﻮص ﻣﺜﻞ ‪ Notepad‬وذﻟﻚ ﻻﻧﻬﺎ آﻤﺎ ذآﺮﻧﺎ ﻣﻦ اﻟﻨﻮع ‪.Binary‬‬
‫اﻣﺎ اﻟﻤﻠﻔﺎت ‪ Text Spreadsheet‬هﻰ ﻣﻠﻔﺎت ﻣﻦ اﻟﻨﻮع ‪ Text‬اى ﻳﻤﻜﻦ ﻓﺘﺤﻬﺎ ﺑﺒﺮاﻣﺞ ﺗﺤﺮﻳﺮ‬
‫اﻟﻨﺼﻮص ﻣﺜﻞ ‪. Notepad‬‬
‫وﻋﺎدة ﺗﺨﺰن اﻟﺒﻴﺎﻧﺎت ﻓﻰ هﺬة اﻟﻤﻠﻔﺎت ﻋﻠﻰ هﻴﺌﺔ ﺻﻔﻮف او ﺳﻄﻮر وﻳﻔﺼﻞ ﺑﻴﻦ اﻟﺒﻴﺎﻧﺎت ﻓﻰ ﻧﻔﺲ اﻟﺴﻄﺮ‬
‫‪ Tab‬او اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎدﻳﺔ )‪ (,‬او اى ﻓﺎﺻﻠﺔ اﺧﺮى‪.‬وﻳﻔﺼﻞ ﺑﻴﻦ آﻞ ﺳﻄﺮ واﻟﺬى ﻳﻠﻴﺔ ﺑـ ‪Carriage‬‬
‫‪ Return‬و‪.(\r\n) LineFeed‬‬
‫وهﺬة اﻟﻤﻠﻔﺎت ﻳﻤﻜﻦ ان ﻧﻀﻊ ﻟﻬﺎ اى اﻣﺘﺪاد ﻣﺜﻞ ‪ txt‬او ‪.csv‬‬
‫وﻟﻔﺘﺢ هﺬة اﻟﻤﻠﻔﺎت ﺑﻮﺳﻄﺔ ﺑﺮﻧﺎﻣﺞ ‪ Excel‬ﻧﺘﺒﻊ اﻟﺨﻄﻮات اﻻﺗﻴﺔ ‪:‬‬

‫‪69‬‬
70
‫ﺛﺎﻧﻴﺎ ‪Low Level File I/O‬‬
‫ﻟﻜﻰ ﻧﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت هﻨﺎك ﺛﻼث ﺧﻄﻮات ﻣﺘﺘﺎﺑﻌﺔ ﻧﻘﻮم ﺑﻌﻤﻠﻬﻢ هﻢ ‪:‬‬
‫‪-1‬ﻓﺘﺢ او اﻧﺸﺎء اﻟﻤﻠﻒ اﻟﻤﺮاد اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ وﻋﻨﺪ ﻓﺘﺤﻪ ﻧﺤﺼﻞ ﻋﻠﻰ ‪Reference ) Rufnum‬‬
‫‪ (Number‬ﻣﻦ ﺧﻼﻟﻪ ﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻤﻠﻒ ﻓﻰ ﺑﺎﻗﻰ اﻟﺨﻄﻮات‪.‬‬
‫‪ -2‬اﻟﻘﺮاءة او اﻟﻜﺘﺎﺑﻪ ﻣﻦ و اﻟﻰ اﻟﻤﻠﻒ‪.‬‬
‫‪ -3‬ﻏﻠﻖ اﻟﻤﻠﻒ‪.‬‬
‫‪ -4‬ﻓﺤﺺ ﺣﺪوث اى ﺧﻄﺄ وهﺬة ﻟﻴﺴﺖ ﺧﻄﻮة اﺳﺎﺳﻴﻪ ﻓﻰ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ‪.‬‬

‫وﻋﻤﻠﻴﺘﺎ ﻓﺘﺢ و ﻏﻠﻖ اﻟﻤﻠﻒ ﺗﺒﻄﺄن ﻣﻦ ﺳﺮﻋﺔ اﻟﻜﺘﺎﺑﺔ او اﻟﻘﺮاءة ﻣﻦ اﻟﻤﻠﻒ وﻟﺬﻟﻚ ﻳﻔﻀﻞ ﻓﺘﺢ اﻟﻤﻠﻒ وﻋﻨﺪ‬
‫اﻧﺘﻬﺎء آﻞ ﻋﻤﻠﻴﺎت اﻟﻜﺘﺎﺑﺔ واﻟﻘﺮاءة ﻧﻐﻠﻘﻪ‪.‬‬
‫و‪ Read and Write to Measurement File Express VIs‬و ‪Read and Write to‬‬
‫‪ Spreadsheet File‬ﺗﻘﻮم ﺑﻬﺬة اﻟﺨﻄﻮات ﻣﻦ ﻓﺘﺢ وآﺘﺎب اوﻗﺮاءة وﻏﻠﻖ‪ .‬ﻟﺬﻟﻚ ﻻﻳﻔﻀﻞ اﺳﺘﺨﺪام هﺬة‬
‫‪ VI‬داﺧﻞ ‪.Loops‬‬
‫وﺳﻨﺘﻌﺮف ﻋﻠﻰ اﻟﺪوال اﻻﺳﺎﺳﻴﺔ ﻟﻌﻤﻞ هﺬة اﻟﺨﻄﻮات‪.‬‬
‫وآﻤﺎ ذآﺮﻧﺎ ان هﻨﺎك ﻧﻮﻋﺎن اﺳﺎﺳﻴﺎن ﻣﻦ اﻟﻤﻠﻔﺎت وهﻤﺎ ‪ Text File‬و‪ Binary File‬وﺳﻨﺘﻌﺮف اوﻻ‬
‫ﻋﻠﻰ آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ‪ Text File‬ﺛﻢ آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ‪.Binary File‬‬

‫آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ‪Text Files‬‬


‫اﻟﺪاﻟﺔ ‪Open/Create/Replace File‬‬
‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﻔﺘﺢ او اﻧﺸﺎء او اﺳﺘﺒﺪال ﻣﻠﻒ وﺗﺨﺮج ‪ Refnum‬ﻟﻠﻤﻠﻒ وهﻮ رﻗﻢ ﻳﺪل ﻋﻠﻰ اﻟﻤﻠﻒ ﻟﻜﻰ‬
‫ﻳﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ ﺧﻼل ﺑﺎﻗﻰ اﻟﺪوال‪.‬‬

‫‪71‬‬
‫وﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﻟﺨﻄﻮة اﻻوﻟﻰ ﻟﻔﺘﺢ اﻟﻤﻠﻒ او اﻧﺸﺎءﻩ وﻳﺠﺐ ان ﻧﺨﺘﺎر ﻧﻮع اﻟﻌﻤﻠﻴﺔ ‪ Operation‬اﻟﺼﺤﻴﺢ‬
‫واﻻ ﻗﺪ ﻳﺤﺪث ﺧﻄﺄ ﻣﺜﻞ ‪ :‬اﺧﺘﻴﺎر اﻟﻌﻤﻠﻴﺔ اﻧﺸﺎء )‪ (Create‬وﻳﻜﻮن اﻟﻤﻠﻒ ﻣﻮﺟﻮدا ﻓﺴﻴﻨﺘﺞ ﺧﻄﺄ وﻳﻤﻜﻦ اﻻﻃﻼع‬
‫ﻋﻠﻰ ‪ Help‬ﻟﻤﻌﺮﻓﺔ اﻻﺧﻄﺎء اﻟﺘﻰ ﻳﻤﻜﻦ ان ﺗﺤﺪث‪.‬‬
‫وﻟﺘﺤﺪﻳﺪ ﻧﻮع اﻟﻌﻤﻠﻴﺔ ﻳﻔﻀﻞ ان ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻤﺪﺧﻞ ‪ Operation‬وﻧﺨﺘﺎر ‪Create‬‬
‫‪Constant‬‬

‫اﻟﺪاﻟﺔ ‪Close File‬‬


‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﻐﻠﻖ اﻟﻤﻠﻒ اﻟﺬى ﺗﻢ ﻓﺘﺤﻪ ﻣﻦ ﻗﺒﻞ‪.‬‬

‫‪72‬‬
‫وﻳﻤﻜﻦ ان ﻧﺴﺘﺨﺪم ‪ Error Cluster‬اﻟﺨﺎرج ﻣﻦ هﺬة اﻟﺪاﻟﺔ ﻟﻤﻌﺮﻓﺔ هﻞ ﺣﺪث ﺧﻄﺄ ام ﻻ ﺑﻮاﺳﻄﺔ ‪VIs‬‬
‫اﻟﺨﺎﺻﺔ ﺑﺎﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺧﻄﺎء ﻣﺜﻞ ‪.Simple Error Handler.vi‬‬

‫ﻣﻠﺤﻮﻇﺎت ‪:‬‬
‫¾ ﻋﻨﺪ ﻓﺘﺢ اى ﻣﻠﻒ ﻳﺠﺐ ان ﻧﻘﻮم ﺑﻐﻠﻘﻪ ﻗﺒﻞ ﻧﻬﺎﻳﺔ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬
‫¾ اﻟﺪاﻟﺘﻴﻦ ‪ Open/Create/Replace File‬و ‪ Close File‬ﻟﻴﺴﺖ ﺧﺎﺻﺘﻴﻦ ﻟـ ‪Text Files‬‬
‫ﻓﻘﻂ واﻧﻤﺎ ﻳﺴﺘﺨﺪﻣﺎن ﻣﻊ ﺟﻤﻴﻊ اﻧﻮاع اﻟﻤﻠﻔﺎت‪.‬‬
‫اﻟﺪاﻟﺔ ‪Write to Text File‬‬
‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﻜﺘﺎﺑﺔ ﻧﺺ )‪ (String‬اﻟﻰ ﻣﻠﻒ او آﺘﺎﺑﺔ ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻟﻨﺼﻮص ) ‪Array of‬‬
‫‪ (Strings‬اﻟﻰ ﻣﻠﻒ ﺑﺤﻴﺚ ﺳﻴﻜﻮن آﻞ ﻧﺺ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ﻋﺒﺎرة ﻋﻦ ﺳﻄﺮ ﻓﻰ اﻟﻤﻠﻒ‪.‬‬

‫‪73‬‬
‫وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ اﻟﻤﻠﻒ ﻟﻬﺬة اﻟﺪاﻟﺔ ﺑﻮاﺳﻄﺔ ﺗﻮﺻﻴﻞ ‪ File Path‬او ‪ Refnum‬ﻟﻠﻤﻠﻒ اﻟﻰ اﻟﻤﺪﺧﻞ ‪.File‬‬
‫وﻓﻰ ﺣﺎﻟﺔ ﺗﻮﺻﻴﻞ ‪ File Path‬ﺗﻘﻮم اﻟﺪاﻟﺔ ﺑﺎﻧﺸﺎء اﻟﻤﻠﻒ اذا ﻟﻢ ﻳﻜﻦ ﻣﻮﺟﻮدا واذا آﺎن ﻣﻮﺟﻮدا ﺗﻘﻮم‬
‫ﺑﺤﺬف ﻣﺤﺘﻮﻳﺎﺗﻪ وﺗﻜﺘﺐ اﻟﻨﺺ اﻟﺠﺪﻳﺪ ﻓﻰ اﻟﻤﻠﻒ ﺛﻢ ﺗﻘﻮم ﺑﻐﻠﻖ اﻟﻤﻠﻒ وﺑﺎﻟﺘﺎﻟﻰ ﻟﻴﺲ هﻨﺎك ﺣﺎﺟﺔ ﻟﻐﻠﻖ‬
‫اﻟﻤﻠﻒ ﺑﻮاﺳﻄﺔ اﻟﺪاﻟﺔ ‪.Close File‬‬

‫وﻋﻨﺪ ﺗﻮﺻﻴﻞ ‪ Refnum‬ﻓﺎن اﻟﺪاﻟﺔ ﺗﻘﻮم ﺑﻜﺘﺎﺑﺔ اﻟﻨﺺ ﻓﻰ اﻟﻤﻠﻒ ﺑﺎﻟﺘﺘﺎﺑﻊ ﺑﻤﻌﻨﻰ ﻋﻨﺪ آﺘﺎﺑﺔ ﻧﺺ ﻓﻰ‬
‫اﻟﻤﻠﻒ ﺛﻢ آﺘﺎﺑﺔ ﻧﺺ اﺧﺮ ﻓﺎﻧﻪ ﺳﻮف ﻳﻠﻰ اﻟﻨﺺ اﻟﺬى آﺘﺒﻨﺎﻩ ﻣﻦ ﻗﺒﻠﻪ ﻓﻰ اﻟﻤﻠﻒ وهﻜﺬا ﻋﻨﺪ آﺘﺎﺑﻪ ﻧﺼﻮص‬
‫اﺧﺮى ‪.‬وﺣﻘﻴﻘﺎ ﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﺗﺘﻢ اﻟﻜﺘﺎﺑﻪ ﻓﻰ اﻟﻤﻜﺎن اﻟﺬى ﻳﺤﺪدﻩ ‪ File Marker‬او ‪File Position‬‬
‫وهﻮ اﻟﺬى ﺳﻨﻮﺿﺤﻪ ﺑﻌﺪ اﻻﻣﺜﻠﺔ‪.‬‬

‫‪74‬‬
‫ﻋﻨﺪ ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Strings‬اﻟﻰ اﻟﺪاﻟﺔ ‪ Write to Text File‬ﻳﺘﻢ آﺘﺎﺑﺔ آﻞ ‪ String‬ﻓﻰ ﺳﻄﺮ‬
‫ﻣﺴﺘﻘﻞ‪.‬‬
‫ﻣﺜﺎل‬

‫اﻟﺬى ﻳﺘﻜﻮن ﻣﻦ‬ ‫ﻻﻧﻬﺎء اﻟﻜﺘﺎﺑﺔ ﻓﻰ ﺳﻄﺮ ﻓﻰ اﻟﻤﻠﻒ و آﺘﺎﺑﺔ ﺳﻄﺮ ﺟﺪﻳﺪ ﻧﺴﺘﺨﺪم اﻟﺜﺎﺑﺖ ‪End of line‬‬
‫‪ Carriage Return‬و‪.\r\n Line Feed‬‬

‫ﻻﺣﻆ اﻧﻪ آﻤﺎ ﻓﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻳﻤﻜﻦ اﻧﺸﺎء ‪ Header‬ﻟﻠﻤﻠﻒ ﻗﺒﻞ ﺗﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت اﻟﺮﻗﻤﻴﺔ‪.‬‬
‫‪75‬‬
‫‪ File Marker‬او ‪File Position‬‬
‫‪ File Marker‬او ‪ File Position‬هﻮ رﻗﻢ ﻳﺤﺪد اﻟﻤﻜﺎن اﻟﺬى ﻧﻘﻒ ﻓﻴﻪ ﻓﻰ اﻟﻤﻠﻒ وهﻮ ﻳﻤﺜﻞ ﻋﺪد‬
‫اﻟﺤﺮوف ﻣﻦ ﺑﺪاﻳﺔ اﻟﻤﻠﻒ ﺣﺘﻰ اﻟﻤﻜﺎن اﻟﺬى ﻧﻘﻒ ﻓﻴﻪ‪.‬وهﻮ ﻳﺤﺪد ﻣﻜﺎن اﻟﻜﺘﺎﺑﺔ ﻓﻰ او اﻟﻘﺮاءة ﻣﻦ اﻟﻤﻠﻒ‪.‬‬
‫وﻋﻨﺪ ﺑﺪاﻳﺔ ﻓﺘﺢ اﻟﻤﻠﻒ ﺗﻜﻮن ﻗﻴﻤﺘﻪ ﺻﻔﺮ وﻋﻨﺪ اﻟﻜﺘﺎﺑﺔ ﻓﻰ اﻟﻤﻠﻒ او اﻟﻘﺮاءة ﻣﻨﻪ ﻳﺘﻐﻴﺮ ﻗﻴﻤﺔ ‪File‬‬
‫‪ Position‬ﺑﻤﻘﺪار ﻋﺪد اﻟﺤﺮوف اﻟﺘﻰ ﺗﻢ آﺘﺎﺑﺘﻬﺎ او ﻗﺮاءﺗﻬﺎ‪.‬‬
‫ﻣﺜﺎل ‪:‬اذا ﻓﺘﺤﻨﺎ ﻣﻠﻒ ﻓﺎن ‪ File Position‬ﺳﻴﻜﻮن ﻳﺴﺎوى ﺻﻔﺮ ﻓﻌﻨﺪ اﻟﻜﺘﺎﺑﺔ ﺳﺘﺘﻢ اﻟﻜﺘﺎﺑﺔ ﻣﻦ ﺑﺪاﻳﺔ‬
‫اﻟﻤﻠﻒ ﻓﺎذا آﺘﺒﻨﺎ ﻓﻰ اﻟﻤﻠﻒ ﻣﺜﻼ ﻋﺪد ‪ 100‬ﺣﺮف ﻓﺎن ﻗﻴﻤﺔ ‪ File Position‬ﺑﻌﺪ اﻟﻜﺘﺎﺑﺔ ﺳﺘﺴﺎوى ‪100‬‬
‫وﺳﻴﻜﻮن هﺬا ﻣﻜﺎن اﻟﻜﺘﺎﺑﺔ اﻟﺘﺎﻟﻴﺔ ‪.‬ﻓﺎذا آﺘﺒﻨﺎ ﻋﺪد ‪ 50‬ﺣﺮف ﻓﺎن اﻟﻜﺘﺎﺑﺔ ﺳﺘﺒﺪأ ﻣﻦ اﻟﻤﻜﺎن ‪ 100‬وﺑﻌﺪ ﺗﻤﺎم‬
‫اﻟﻜﺘﺎﺑﺔ ﺳﻴﻜﻮن ‪ File Position‬ﻳﺴﺎوى ‪ 150‬وهﻜﺬا ‪.‬‬
‫وﻳﺤﺪث ﻧﻔﺲ اﻟﺸﻰء ﻓﻰ ﺣﺎﻟﺔ اﻟﻘﺮاءة‪.‬‬
‫واذا آﺎن ‪ File Position‬ﻳﺴﺎوى ﺻﻔﺮ ﻓﺎن اﻟﻜﺘﺎﺑﺔ او اﻟﻘﺮاءة ﺳﺘﻜﻮن ﻓﻰ ﺑﺪاﻳﺔ اﻟﻤﻠﻒ‪.‬‬
‫واذا آﺎن ﻳﺴﺎوى ﻋﺪد ﺣﺮوف اﻟﻤﻠﻒ ﻓﺎن اﻟﻘﺮاءة واﻟﻜﺘﺎﺑﺔ ﺳﺘﻜﻮن ﻓﻰ ﻧﻬﺎﻳﺔ اﻟﻤﻠﻒ‪.‬‬
‫وﺗﻮﺟﺪ دوال ﻟﻤﻌﺮﻓﺔ ‪ File Position‬واﻳﻀﺎ ﺗﻐﻴﻴﺮ ﻗﻴﻤﺔ ‪ File Position‬وﺑﺎﻟﺘﺎﻟﻰ اﻟﻤﻜﺎن اﻟﺬى ﺳﺘﺘﻢ‬
‫ﻣﻨﻪ اﻟﻘﺮاءة وﺗﺘﻢ ﻓﻴﻪ اﻟﻜﺘﺎﺑﺔ‪ .‬واﻳﻀﺎ دوال ﻟﻤﻌﺮﻓﺔ ﺣﺠﻢ اﻟﻤﻠﻒ‬
‫وهﺬة اﻟﺪوال هﻰ‬

‫وﻳﻤﻜﻦ ادراج هﺬة اﻟﺪوال ﻣﻦ‬


‫‪Functions Palette >>Programming>>I/O File>>Advanced File Functions‬‬

‫‪76‬‬
‫ﻣﺜﺎل‪ :‬ﺗﺤﺪﻳﺪ اﻟﻜﺘﺎﺑﺔ ﻓﻰ ﻧﻬﺎﻳﺔ ﻣﻠﻒ ﻣﻮﺟﻮد‬

‫داﻟﺔ ‪Read from Text File‬‬


‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﻟﻘﺮاءة ﻣﻦ ﻣﻠﻒ ﻣﻦ اﻟﻨﻮع ‪.Text‬‬

‫‪77‬‬
‫وﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﻘﺮاءة ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﺤﺮوف ﻣﻦ اﻟﻤﻠﻒ ‪.‬وهﺬا اﻟﻌﺪد ﻳﺘﻢ ﺗﺤﺪﻳﺪﻩ ﻣﻦ ﺧﻼل اﻟﻤﺪﺧﻞ ‪Count‬‬
‫واذا آﺎﻧﺖ ﻗﻴﻤﺘﻪ اﺻﻐﺮ ﻣﻦ اﻟﺼﻔﺮ )‪ (1-‬ﻓﺎن اﻟﺪاﻟﺔ ﺗﻘﻮم ﺑﻘﺮاءة اﻟﻤﻠﻒ آﻠﻪ وهﺬة اﻟﺤﺎﻟﺔ اﻟﻌﺎدﻳﺔ اى اﻧﻪ اذا ﻟﻢ‬
‫ﻧﻮﺻﻞ ﻗﻴﻤﺔ اﻟﻰ اﻟﻤﺪﺧﻞ ‪ Count‬ﻳﺘﻢ ﻗﺮاءة اﻟﻤﻠﻒ آﻠﻪ ﺣﺘﻰ ﻧﻬﺎﻳﺘﻪ‪.‬‬
‫اﻣﺜﻠﺔ‪:‬‬

‫ﻋﻨﺪ ﻓﺘﺢ ﻣﻠﻒ ﻳﻜﻮن ﻗﻴﻤﺔ ‪ File Position‬ﺗﺴﺎوى ﺻﻔﺮ وﻋﻨﺪ اﻟﻘﺮاءة ﺗﺘﻢ اﻟﻘﺮاءة ﻣﻦ اول اﻟﻤﻠﻒ ﺛﻢ ﺑﻌﺪ‬
‫ﻋﻤﻠﻴﺔ اﻟﻘﺮاءة ﺗﻜﻮن ﻗﻴﻤﺔ ‪ File Position‬هﻰ رﻗﻢ اﺧﺮ ﺣﺮف ﺗﻢ ﻗﺮاءﺗﻪ ﻓﻌﻨﺪ اﻟﻘﺮاءة ﻣﺮة اﺧﺮى ﺗﺘﻢ ﻣﻦ‬
‫ﻣﻜﺎن ‪ File Position‬اﻟﺠﺪﻳﺪ وهﻜﺬا ﺣﺘﻰ ﻳﺘﻢ ﻏﻠﻖ اﻟﻤﻠﻒ‬
‫‪78‬‬
‫ﻣﺜﺎل ‪:‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻋﻨﺪ ﻗﺮاءة اﻟﺤﺮوف ﻣﻦ اﻟﻤﻠﻔﺎت ﻳﺠﺐ اﻻﺧﺬ ﻓﻰ اﻻﻋﺘﺒﺎر اﻟﻤﺴﺎﻓﺎت و اﻟﺤﺮف ‪ Tab‬واﻳﻀﺎ اﻟﺤﺮوف‬
‫اﻟﻐﺒﺮ ﻗﺎﺑﻠﺔ ﻟﻠﻄﺒﺎﻋﺔ ﻣﺜﻞ ﻧﻬﺎﻳﺔ اﻻﺳﻄﺮ واﻟﺒﺪاﻳﺔ ﻣﻦ اول اﻟﺴﻄﺮ ‪ (\n) Line Feed‬و ‪Carriage Return‬‬
‫)‪.(\r‬وﻟﻤﺸﺎهﺪة هﺬة اﻟﺤﺮوف ﻳﻤﻜﻦ ان ﻧﺠﻌﻞ ‪ String Indicator‬ﻓﻰ اﻟﺤﺎﻟﺔ ‪."\"Code Display‬‬

‫ﻳﻤﻜﻦ ان ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﻘﺮاءة اﻻﺳﻄﺮ ﻣﻦ اﻟﻤﻠﻒ ﺳﻄﺮ ﺳﻄﺮ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ وﻧﺨﺘﺎر ‪Read‬‬
‫‪.Lines‬‬

‫‪79‬‬
‫وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ اﻟﻤﺪﺧﻞ ‪ Count‬ﻳﺤﺪد ﻋﺪد اﻻﺳﻄﺮ اﻟﺘﻰ ﺳﻴﺘﻢ ﻗﺮاءﺗﻬﺎ وﻋﻨﺪ ﺗﻮﺻﻴﻞ اﻟﻘﻴﻤﺔ )‪ (-1‬اﻟﻴﻪ ﻳﺘﻢ‬
‫ﻗﺮاءة آﻞ اﺳﻄﺮ اﻟﻤﻠﻒ ‪.‬‬
‫ﺗﻘﻮم اﻟﺪاﻟﺔ ﺑﺎﺧﺮاج ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Strings‬آﻞ ‪ String‬ﺑﻬﺎ ﻓﻴﻪ ﻣﺤﺘﻮى ﺳﻄﺮ آﺎﻣﻞ ﻣﻦ اﻟﻤﻠﻒ‪.‬‬
‫وﻋﺪد ‪ Strings‬اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ هﻮ ﻋﺪد اﻻﺳﻄﺮ اﻟﺘﻰ ﺗﻢ ﻗﺮاءﺗﻬﺎ‪.‬‬
‫اﻣﺜﻠﺔ ‪:‬‬

‫ﻓﻰ ﺣﺎﻟﺔ ﻗﺮاءة اﻻﺳﻄﺮ اﻳﻀﺎ ﻳﺘﻢ ﻗﺮاءة اﻟﻤﻠﻒ ﺑﺸﻜﻞ ﺗﺘﺎﺑﻌﻰ‬

‫‪80‬‬
‫آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ﻣﻦ اﻟﻨﻮع ‪Binary‬‬
‫ﻳﺘﻢ ﺗﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت ﻓﻰ اﻟﻤﻠﻔﺎت ﻣﻦ اﻟﻨﻮع ‪ Binary‬آﻤﺎ هﻰ دون ﺗﺤﻮﻳﻠﻬﺎ اﻟﻰ ‪ ASCII Code‬ﻟﺬﻟﻚ ﻓﻬﻰ اﺳﺮع‬
‫ﻓﻰ اﻟﺘﻌﺎﻣﻞ وﺗﺄﺧﺬ ﻣﺴﺎﺣﺔ اﺻﻐﺮ وهﺬة اﻟﻤﻠﻔﺎت ﻻﻳﻤﻜﻦ ﻓﺘﺤﻬﺎ ﺑﺎﻟﺒﺮاﻣﺞ ﺗﺤﺮﻳﺮ اﻟﻨﺼﻮص ﻣﺜﻞ ‪.Notepad‬‬
‫وﻳﺘﻢ ﺗﺨﺰﻳﻦ اى ﻧﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻓﻰ هﺬة اﻟﻨﻮﻋﻴﺔ ﻣﻦ اﻟﻤﻠﻔﺎت وﻟﻜﻰ ﻧﻘﺮأ ﻣﺤﺘﻮى هﺬة اﻟﻤﻠﻔﺎت ﻳﺠﺐ ان ﻧﻌﻠﻢ ﻧﻮع‬
‫اﻟﺒﻴﺎﻧﺎت اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﻠﻒ وآﻴﻔﻴﺔ ﺗﺨﺰﻳﻨﻬﺎ‪ .‬ﻟﺬﻟﻚ ﻋﺎدة ﻧﻘﻮم ﺑﻌﻤﻞ ﺑﺮﻧﺎﻣﺞ ﻟﺘﺨﺰﻳﻦ اﻟﻤﻠﻔﺎت واﺧﺮ ﻟﻔﺘﺢ هﺬة اﻟﻤﻠﻔﺎت‬
‫او ان ﻳﻘﻮم ﻧﻔﺲ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻌﻤﻞ اﻟﻮﻇﻴﻔﺘﻴﻦ ﻣﻌﺎ اﻟﻜﺘﺎﺑﺔ واﻟﻘﺮاءة‪.‬‬

‫وﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﺪوال ‪ Open/Create/Replace File‬ﻻﻧﺸﺎء ﻣﻠﻒ او ﻓﺘﺢ ﻣﻠﻒ‬


‫واﻟﺪاﻟﺔ ‪ Close File‬ﻟﻐﻠﻖ اﻟﻤﻠﻒ ﻣﻊ اﻟﻤﻠﻔﺎت ﻣﻦ اﻟﻨﻮع ‪ Binary‬آﻤﺎ اﺳﺘﺨﺪﻣﻨﺎهﺎ ﻣﻊ اﻟﻤﻠﻔﺎت ﻣﻦ اﻟﻨﻮع ‪.Text‬‬

‫وﺗﻮﺟﺪ اﻟﺪاﻟﺔ ‪ Write To Binary File‬ﻟﻠﻜﺘﺎﺑﺔ ﻓﻰ اﻟﻤﻠﻔﺎت و اﻟﺪاﻟﺔ ‪ Read From Binary File‬ﻟﻠﻘﺮاءة ﻣﻦ‬
‫اﻟﻤﻠﻒ‪.‬‬
‫اﻟﺪاﻟﺔ ‪Write to Binary File‬‬
‫ﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻟﻜﺘﺎﺑﺔ ﺑﻴﺎﻧﺎت ﻓﻰ اﻟﻤﻠﻔﺎت ﻣﻦ اﻟﻨﻮع ‪ .Binary‬وهﺬة اﻟﺒﻴﺎﻧﺎت ﻳﻤﻜﻦ ان ﺗﻮﺟﺪ ﻓﻰ اى ﺻﻮرة‬
‫)‪(... Waveform ، Cluster ، Array‬‬

‫‪81‬‬
‫وﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ هﻰ ‪:‬‬
‫?‪: Prepend Array or string Size‬وﻧﺠﻌﻞ ﻗﻴﻤﺘﻪ‬
‫‪ : True‬اذا اردﻧﺎ ان ﻳﺮﻓﻖ ‪ LabVIEW‬ﻣﻌﻠﻮﻣﺎت ﻋﻦ ﺣﺠﻢ ‪ String‬او ‪ Array‬اذا آﻨﺎ ﻧﺨﺰن اى‬
‫ﻣﻦ اﻟﻨﻮﻋﻴﻦ‪ .‬و‪ True‬هﻰ ﻗﻴﻤﺔ اﻟﻤﺪﺧﻞ اذا ﻟﻢ ﻧﻮﺻﻞ ﻟﻪ اى ﻗﻴﻤﺔ‪.‬‬
‫‪:False‬اذا اردﻧﺎ ﺗﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت ﺑﺪون اى ﻣﻌﻠﻮﻣﺎت اﺿﺎﻓﻴﺔ ﻋﻦ اﻟﺤﺠﻢ‪.‬‬
‫‪ :Prompt‬ﻣﺪﺧﻞ اﻟﺮﺳﺎﻟﺔ اﻟﺘﻰ ﺳﺘﻈﻬﺮ ﻟﻠﻤﺴﺘﺨﺪم ﻓﻰ ﺣﺎﻟﺔ اﻇﻬﺎر ﻧﺎﻓﺬة اﻟﺘﺼﻔﺢ ﻟﻠﻤﺴﺘﺨﺪم ﻟﺘﺤﺪﻳﺪ اﻟﻤﻠﻒ اﻟﻤﺮاد‬
‫اﻟﺘﺨﺰﻳﻦ ﻓﻴﻪ ‪.‬ﻧﺺ اﻟﺮﺳﺎﻟﺔ ﺳﻴﻜﻮن "‪ "Choose or enter file path‬اذا ﻟﻢ ﻳﺘﻢ اﻟﺘﻮﺻﻴﻞ ﻟﻬﺬا‬
‫اﻟﻤﺪﺧﻞ‪.‬‬
‫‪: File‬ﻳﺘﻢ ﺗﻮﺻﻴﻞ اﻟﻰ هﺬا اﻟﻤﺪﺧﻞ ﻣﺴﺎر او ‪ Refnum‬ﻟﻠﻤﻠﻒ اﻟﻤﺮاد اﻟﺘﺨﺰﻳﻦ ﻓﻴﻪ‪.‬وﻓﻰ ﺣﺎﻟﺔ ﻋﺪم اﻟﺘﻮﺻﻴﻞ ﻟﻬﺬا‬
‫اﻟﻤﺪﺧﻞ ﻳﺘﻢ اﻇﻬﺎر ﻧﺎﻓﺬة اﻟﺘﺼﻔﺢ ﻟﻠﻤﺴﺘﺨﺪم ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺪاﻟﺔ‪.‬‬
‫وﻓﻰ ﺣﺎﻟﺔ ﺗﻢ ﺗﻮﺻﻴﻞ ﻣﺴﺎر ﻟﻠﻤﻠﻒ ﻟﻤﺪﺧﻞ ‪ File‬او اﻇﻬﺎر ﻧﺎﻓﺬة اﻟﺘﺼﻔﺢ ﻓﺎن اﻟﺪاﻟﺔ ﺗﻘﻮم ﺑﺎﻧﺸﺎء اﻟﻤﻠﻒ اذا ﻟﻢ ﻳﻜﻦ‬
‫ﻣﻮﺟﻮدا او ﺗﻘﻮم ﺑﺤﺬف ﻣﺤﺘﻮﻳﺎت اﻟﻤﻠﻒ وﺗﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت اﻟﺠﺪﻳﺪة اذا آﺎن ﻣﻮﺟﻮدا‬
‫اﻣﺎ ﻓﻰ ﺣﺎﻟﺔ ﺗﻮﺻﻴﻞ ‪ Refnum‬ﻓﺎن اﻟﺪاﻟﺔ ﺗﻘﻮم ﺑﺎﻟﻜﺘﺎﺑﺔ ﻓﻰ اﻟﻤﻠﻒ ﻓﻰ اﻟﻤﻜﺎن اﻟﺬى ﻳﺤﺪدﻩ ‪File Position‬‬
‫واﻟﺬى ﺗﻜﻮن ﻗﻴﻤﺘﻪ ﻓﻰ ﺑﺪاﻳﺔ ﻓﺘﺢ اﻟﻤﻠﻒ ﺑﺼﻔﺮ )اى ﺑﺪاﻳﺔ اﻟﻤﻠﻒ(‬
‫وﻟﺘﻐﻴﻴﺮ ﻣﻜﺎن ‪ File Position‬ﻧﺴﺘﺨﺪم اﻟﺪوال ‪ Get File Position‬و ‪.Set File Position‬‬

‫وﻟﻠﺘﺨﺰﻳﻦ ﻓﻰ ﻧﻬﺎﻳﺔ اﻟﻤﻠﻒ ﻧﺠﻌﻞ ‪ File Position‬ﻳﺴﺎوى ﺳﻌﺔ اﻟﻤﻠﻒ ‪.‬وﻟﻠﺤﺼﻮل ﻋﻠﻰ ﺳﻌﺔ اﻟﻤﻠﻒ ﻧﺴﺘﺨﺪم اﻟﺪاﻟﺔ‬
‫‪ Get File Size‬آﻤﺎ رأﻳﻨﺎ ﻓﻰ ﺣﺎﻟﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ﻣﻦ اﻟﻨﻮع ‪.Text‬‬

‫‪82‬‬
‫‪:Data‬وﻳﺘﻢ ﺗﻮﺻﻴﻞ اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﻧﺮﻳﺪ ﺗﺨﺰﻳﻨﻬﺎ اﻟﻰ هﺬا اﻟﻤﺪﺧﻞ وهﺬة اﻟﺒﻴﺎﻧﺎت ﻳﻤﻜﻦ ان ﺗﻜﻮن ﻓﻰ اى ﺻﻮرة‬
‫)ﻣﺼﻔﻮﻓﺔ ‪(... String ،Cluster ،‬‬
‫‪: Byte Order‬رﻗﻢ ﻳﺤﺪد ﻃﺮﻳﻘﺔ ﺗﻤﺜﻞ اﻻرﻗﺎم اﻟﺼﺤﻴﺤﺔ ﻓﻰ اﻟﺬاآﺮة ﻓﻜﻤﺎ ﻧﻌﻠﻢ ان اﻻرﻗﺎم اﻟﺼﺤﻴﺤﺔ ﻳﻤﻜﻦ ان‬
‫ﺗﺘﻜﻮن ﻣﻦ اآﺜﺮ ﻣﻦ ‪ Byte‬ﻣﺜﻞ ‪.(32 Bit) 4Bytes‬‬
‫و‪ Byte Order‬ﻳﺤﺪد ﺗﺮﺗﻴﺐ ﺗﺨﺰﻳﻦ ‪ Bytes‬اﻟﻤﻜﻮن ﻟﻠﺮﻗﻢ ﻓﻰ اﻟﺬاآﺮة‪.‬‬
‫)‪ :Big-Endian (0‬هﻮ ﻳﻌﻨﻰ ان اﻟﺒﺎﻳﺖ اﻻآﺒﺮ ﻟﻠﺮﻗﻢ ﻳﺨﺰن ﻓﻰ اﻟﻌﻨﻮان اﻻﺻﻐﺮ ﻓﻰ اﻟﺬاآﺮة‬
‫وﻳﺴﺘﺨﺪم هﺬا اﻟﺘﺮﺗﻴﺐ ﻓﻰ اﻧﻈﻤﺔ اﻟﺘﺸﻐﻴﻞ ﻣﺜﻞ ‪.Mac‬‬
‫وهﺬة هﻰ ﻗﻴﻤﺔ اﻟﻤﺪﺧﻞ اذا ﻟﻢ ﻳﺘﻢ اﻟﺘﻮﺻﻴﻞ اﻟﻴﻪ‪.‬‬

‫)‪ :Host Order ، Native (1‬وهﻮ ﻳﻌﻨﻰ اﺗﺒﺎع اﻟﺘﺮﺗﻴﺐ اﻟﻤﺘﺒﻊ ﻓﻰ اﻟﻨﻈﺎم اﻟﺘﺸﻐﻴﻞ‬
‫اﻟﻤﻮﺟﻮد ‪.‬‬
‫)‪: Little-Endian (2‬و ﻳﻌﻨﻰ ان اﻟﺒﺎﻳﺖ اﻻﺻﻐﺮ ﻟﻠﺮﻗﻢ ﻳﺨﺰن ﻓﻰ اﻟﻌﻨﻮان اﻻﺻﻐﺮ ﻓﻰ‬
‫اﻟﺬاآﺮة وﻳﺴﺘﺨﺪم هﺬة اﻟﺘﺮﺗﻴﺐ ﻓﻰ اﻧﻈﻤﺔ اﻟﺘﺸﻐﻴﻞ ﻣﺜﻞ ‪ Windows‬و ‪.Linux‬‬

‫‪83‬‬
‫ﻣﻠﺤﻮﻇﺔ ‪:‬ﻳﺘﻢ ادراج ‪ Sin Wave.vi‬ﻣﻦ‬
‫‪Functions Palette>>Programming>>Signal Generation‬‬

‫اﻟﺪاﻟﺔ ‪Read from Binary File‬‬


‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﻘﺮاءة اﻟﺒﻴﺎﻧﺎت ﻣﻦ ‪ . Binary File‬ﻻﺳﺘﺨﺪام هﺬة اﻟﺪاﻟﺔ ﻻﺑﺪ ﻣﻦ ﺗﺤﺪﻳﺪ ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﻤﺨﺰن ﻓﻰ‬
‫اﻟﻤﻠﻒ ﻟﻠﺪاﻟﺔ ﺣﺘﻰ ﺗﺘﻢ ﻋﻤﻠﻴﺔ اﻟﻘﺮاءة ﺑﺎﻟﺸﻜﻞ اﻟﺼﺤﻴﺢ‪.‬آﻤﺎ ﻳﺠﺐ ان ﺗﻜﻮن ﺗﺮﺗﻴﺐ ﺗﺨﺰﻳﻦ ‪(Byte Order) Bytes‬‬
‫هﻮ ﻧﻔﺲ ﺗﺮﺗﻴﺐ اﻟﻘﺮاءة‪.‬‬

‫‪84‬‬
‫واﻟﻤﺪﺧﻞ ‪ : Data type‬ﻳﺤﺪد ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺘﻰ ﺳﻴﺘﻢ ﻗﺮاءﺗﻬﺎ وﻻﺑﺪ ان ﺗﺘﻮاﻓﻖ ﻣﻊ ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﻤﺨﺰﻧﺔ‪.‬‬
‫و اﻟﻤﺪﺧﻞ ‪: Count‬ﻳﺤﺪد ﻋﺪد اﻟﻘﻴﻢ ﻣﻦ ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺬى ﺣﺪدﻧﺎﻩ واذا ﻟﻢ ﻳﻮﺻﻞ هﺬة اﻟﻤﺪﺧﻞ ﻳﺘﻢ ﻗﺮاءة ﻗﻴﻤﺔ واﺣﺪة‬
‫ﻣﻦ ﻧﻮع اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫آﻤﺎ ﻳﻤﻜﻦ ﻗﺮاءة اﻟﻤﻠﻒ ﺑﻄﺮﻳﻘﺔ اﺧﺮى ﺣﻴﺚ اﻧﻨﺎ ﻧﻌﻠﻢ ان اﻟﻘﻴﻢ اﻟﻤﺨﺰﻧﺔ هﻰ ارﻗﺎم ﻣﻦ اﻟﻨﻮع ‪ DBL‬وان هﺬة اﻟﻨﻮع‬
‫ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻳﺸﻐﻞ ﺳﻌﺔ ﺗﺨﺰﻳﻨﻴﺔ ﺗﺴﺎوى ‪ 8‬ﺑﺎﻳﺖ ‪.‬‬
‫ﺑﺎﻟﺘﺎﻟﻰ ﺑﻤﻌﺮﻓﺔ ﺣﺠﻢ اﻟﻤﻠﻒ ﺑﺎﻟﺒﺎﻳﺖ ﺳﻴﻜﻮن ﻋﺪد اﻻرﻗﺎم اﻟﻤﺨﺰﻧﺔ ﺗﺴﺎوى ﺧﺎرج ﻗﺴﻤﺔ ﺣﺠﻢ اﻟﻤﻠﻒ ﻋﻠﻰ ‪.8‬‬
‫وﻳﻤﻜﻦ ﻣﻌﺮﻓﺔ ﺣﺠﻢ اﻟﻤﻠﻒ ﺑﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪ Get File size‬اﻟﻤﻮﺟﻮدة ﻓﻰ‬
‫‪Functions Palette >>Programming>>I/O File>>Advanced File Functions‬‬

‫‪85‬‬
86
‫ﺗﻢ ﺑﺤﻤﺪ اﷲ اﻻﻧﺘﻬﺎء ﻣﻦ اﻟﺪرس‬
‫اﻟﻰ اﻟﻠﻘﺎء ﺑﺎذن اﷲ ﻣﻊ اﻟﺪرس اﻟﻘﺎدم‬

‫‪photonlv@gmail.com‬‬

‫‪87‬‬

You might also like