نمایش نتایج 1 تا 12 از 12

نام تاپیک: انتخاب بخشی از کد ارسالی از میکروتیک

  1. #1

    انتخاب بخشی از کد ارسالی از میکروتیک

    باسلام به مهندسین عزیز و گرامی. بنده کدی رو نوشتم که میره و تمامی اطلاعات مربوط به Interfaceهای میکروتیک رو برام میاره که در عکس بخشی از این کد مشخص هستش.
    این کد در بخش Count قرار میگیره. میخواستم بدونم چجوری میتونم بخشی از این اطلاعاتی که میکروتیک ارسال کرده رو انتخاب و بصورت اتوماتیک مثلا در یک ComboBox قرار بدمشون. در اینجا مثلا میخوام فقط نام اینترفیس ها (که با مربع قرمز مشخص کردم) رو برام در یک Combobox قرار بده. ممنون میشم اگه عزیزان و اساتید کمکم کنن. با تشکر/

    10101010.jpg

  2. #2

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    سلامی مجدد
    اصلش بر اینه که مستقیما این اطلاعات را با ارسال دستورات میکروتیک بدست بیارید .
    اما به هر حال وقتی این کار را نکردید ، در پست زیر راهنمایی کردم که جواب مناسب را ندادید :

    https://barnamenevis.org/showthread....=1#post2453933

    وقتی نمیدونیم که اون متغییر list ، دقیقا از چه نوعی هست و چه اعضا و داده ها و اطلاعاتی توش هست ، نمیشه راهنمایی خاصی کرد .
    بهتون هم گفتم اطلاعات و نوعش را بدست بیارید اما جواب مناسب را ندادید .

  3. #3

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک
    سلامی مجدد
    اصلش بر اینه که مستقیما این اطلاعات را با ارسال دستورات میکروتیک بدست بیارید .
    اما به هر حال وقتی این کار را نکردید ، در پست زیر راهنمایی کردم که جواب مناسب را ندادید :

    https://barnamenevis.org/showthread....=1#post2453933

    وقتی نمیدونیم که اون متغییر list ، دقیقا از چه نوعی هست و چه اعضا و داده ها و اطلاعاتی توش هست ، نمیشه راهنمایی خاصی کرد .
    بهتون هم گفتم اطلاعات و نوعش را بدست بیارید اما جواب مناسب را ندادید .


    سلام مهندس جان. ببخشدی من الان دیدم. نمیدونم چرا پیام شمارو نمیاورد. برای همین مجبور شدم دوباره پست بذارم تا بلکه بتونم با شما صحبت کنم.
    بله درست میفرمایید. من با دستورات خوده WPF تونستم MAC اینترفیس های میکروتیک رو بگیرم و این کار اشتباهه. من باید به وسیله دستورات میکروتیکی، بتونم اطلاعات مورد نظرم رو بگیرم و بیارم توی کمبو باکس نمایش بدم. ممنونم از راهنماییتون.
    ولی واقعا کلافه شدم. همه جارو گشتم ولی هیچ چیزی پیدا نکردم که جوابی که میخوام رو بده بهم.
    البته این سایت عالی بود برام ولی بازم چیزی که میخواستم رو نشد اجرا کنم. البته یه مورد نوشته که دقیقا همینی هست که من میخوام ولی وقتی این کد رو زدم برام کار نمیکنه.
    https://forum.mikrotik.com/viewtopic.php?t=99954

    در مورد مواردی که فرمودید. متغیر list همون اطلاعات مربوط به اینترفیس هارو داره ذخیره میکنه و میاره نمایش میده. همون مستطیل نارجی پایین صفحه عکس پست اولم. کل اطلاعات مربوط به اینترفیس میکروتیک رو میاره که به درد من نمیخوره این. چون من فقط نام اینترفیس (مستطیل قرمز) رنگ رو میخوام.
    بازم از اینکه جوابتون رو ندادم ممنونم و واقعا لطف کردید که جوابمو دادین. تشکر از شما داداش گلم.

  4. #4

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    13131313.png

    وقتی این کد رو میزنم توی برنامم، این خروجی رو میده بهم:
    12121212.png

  5. #5

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    نقل قول نوشته شده توسط مهدی مرادی مشاهده تاپیک
    سلام مهندس جان. ببخشدی من الان دیدم. نمیدونم چرا پیام شمارو نمیاورد. برای همین مجبور شدم دوباره پست بذارم تا بلکه بتونم با شما صحبت کنم.
    بله درست میفرمایید. من با دستورات خوده WPF تونستم MAC اینترفیس های میکروتیک رو بگیرم و این کار اشتباهه. من باید به وسیله دستورات میکروتیکی، بتونم اطلاعات مورد نظرم رو بگیرم و بیارم توی کمبو باکس نمایش بدم. ممنونم از راهنماییتون.
    ولی واقعا کلافه شدم. همه جارو گشتم ولی هیچ چیزی پیدا نکردم که جوابی که میخوام رو بده بهم.
    البته این سایت عالی بود برام ولی بازم چیزی که میخواستم رو نشد اجرا کنم. البته یه مورد نوشته که دقیقا همینی هست که من میخوام ولی وقتی این کد رو زدم برام کار نمیکنه.
    https://forum.mikrotik.com/viewtopic.php?t=99954
    سلامی مجدد
    ببینید ، من از دستورات میکروتیک چیزی نمیدونم .
    در این باره اگه سئوال دارید که هیچ .

    نقل قول نوشته شده توسط مهدی مرادی مشاهده تاپیک
    در مورد مواردی که فرمودید. متغیر list همون اطلاعات مربوط به اینترفیس هارو داره ذخیره میکنه و میاره نمایش میده. همون مستطیل نارجی پایین صفحه عکس پست اولم. کل اطلاعات مربوط به اینترفیس میکروتیک رو میاره که به درد من نمیخوره این. چون من فقط نام اینترفیس (مستطیل قرمز) رنگ رو میخوام.
    بازم از اینکه جوابتون رو ندادم ممنونم و واقعا لطف کردید که جوابمو دادین. تشکر از شما داداش گلم.
    میدونم اطلاعات مربوط به اینترفیس ها را ذخیره میکنه . این که مشخص هست .
    منظورم اینه که کالکشن اش از چه نوعی هست و این کالکشن و مخصوصا آیتم هاش ، چه اعضایی دارن که ممکنه احیانا به دردتون بخوره؟
    فرضا در چه عضوی از آیتم های این کالکشن ، اطلاعات مربوط به مقدار name (که در عکس اول ، حاشیه ی قرمز دورش کشیدین) را ذخیره میشه؟ یا اینکه شامل این اطلاعات میشه؟
    و این اطلاعات ، به چه صورت و به چه نوعی ذخیره میشن (string هست یا نوع دیگه ای) ؟

    فرضا در نوع List<T> (متغییر uiElementCollection در تصویر زیر) (بعد از پر شدن اش) ، break point که بذارید و فِلِشِ کنارش را بزنید ، علاوه بر لیست شدن آیتم هاش ، گزینه ی آخری بنام "Raw View" که در تصویر زیر با رنگ زرد مشخص هست را میاره که بعضی از اعضای کالکشن از جمله اعضای استاتیک و خصوصی اش را لیست میکنه .



    در متغییر list تون ، روی این گزینه اش (Raw View اش) برید و فِلِشِ کنارش را بزنید .
    گزینه ای میاره بنام (Non-Public Member) (باز هم گزینه ی آخری هست) . روی این گزینه اش هم برید و فِلِشِ کنارش را بزنید .
    گزینه ای بنام "_items" میاره که در جلوش ، نوعش نوشته . نوع این را بگید چیه؟

    مهمتر اینکه در آیتم های مربوط به متغییر list تون برید . یعنی فِلِشِ کنارِ آیتم ها را کلیک کنید (مثل گزینه ی 0 و 1 و 2 در تصویر بالا که کنارشون فِلِش هست) و توی لیست اعضاش ببینید که آیا عضوی هست که همچین داده ای که مد نظر دارید (مقدار name در تصویر پست اول که قرمز کردید) ، در اون ذخیره شده باشه یا نه (تمام اعضای زیر مجموعه ی اعضای داخلی اش را هم ممکنه لازم باشه بگردید) .

    اگه اطلاعات مورد نیازتون را پیدا نکردید ، (در همون صفحه ای که آیتم های داخل list را جستجو میکنید) بیاید به قسمت آخر و فِلِشِ کنار گزینه ی Non-Public Member را بزنید و در لیست این صفحه جستجو کنید که آیا عضوی هست که داده ی مد نظرتون را در اون ببینید یا نه؟ (دقت کنید که این Non-Public Member ، با اونی که قبلا گفتم ، فرق دارن چون اون برای شی مربوط به کلاس کالکشن بود و این مربوط به شی آیتم های مربوط به کلاس کالکشن هست) .
    ---------
    نیاز به اطلاعات داره ولی شما به زور اطلاعات میدید یا قطره چکونی میدید . با ارسال عکس که نمیشه به سرعت مفهوم را منتقل کرد .
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 1.JPG‏ (46.8 کیلوبایت, 32 دیدار)

  6. #6

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    سلام مهندس جان. ببخشید من زیاد برنامه نویسی بلد نیستم و دارم شمارو اذیت میکنم شرمندم.
    اوامری که فرمودید رو الان میگم خدمتتون و اگر خواستید مشکلی نیست که کد رو کامل تقدیمتون کنم عزیزم. فقط نمیدونم چجوری باید برسونم به دستتون و اینکه اجازه این کارو در اینجا دارم یا نه؟
    در رابطه با مورد اول که فرمودید، فکر میکنم این عکس جواب شمارو بده عزیز (واقعا ممنونم که اینقدر کامل توضیح دادین. خیلی چیزا از این راهنماییتون یاد گرفتم): نوعش Int هستش
    101.jpg

    مورد دوم در مورد اینکه آیا داده ای رو میده که بخوامش بله، الان دیدم که در هر کدوم از موارد 0 و 1 و 2 گزینه ای به نام Name وجود داره که دقیقا همون چیزیه که من میخوامش و اگر بتونم اینو بصورت جداگانه بیارمش توی کمبو باکسم، ماجرا درست میشه کاملا
    102.jpg

  7. #7

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    سلام
    این رو تست کنید (در کد Window ای که Combobox هست و همچنین در Resource ئه این Window) :


    <Window xmlns:MikrotikInterface="clr-namespace:tik4net.Objects.Interface">

    <Window.Resources>

    <DataTemplate x:Key="InterfaceEthernet_ItemTemplateKey"
    DataType="{x:Type MikrotikInterface:InterfaceEthernet}">
    <TextBlock Text="{Binding Path=Name}"></TextBlock>
    </DataTemplate>

    </Window.Resources>

    </Window>


    در کد combobox :


    <ComboBox ItemTemplate="{StaticResource InterfaceEthernet_ItemTemplateKey}"/>


    در کد اول ، مقدار فضای نامِ xmlns:MikrotikInterface را چک کنید که درست باشه و کار کنه (که بر اساس کلاس InterfaceEthernet تون ممکنه تغییر کنه) .
    همچنین ممکنه لازم بشه که در ادامه ی این دستور ، از پارامتر assembly استفاده کنید . یعنی فرضا اون دستور را به شکل زیر بنویسید :


    xmlns:MikrotikInterface="clr-namespace:tik4net.Objects.Interface;assembly=Assem blyName"


    که بجای AssemblyName در بالا ، نام اسمبلی (معمولا نام dll شاید اون هم بدون پسوند dll یا کتابخونه) را مینویسید .
    همچنین دقت کنید فضای نام ای که در مقابل clr-namespace نوشتم هم درست باشه (یعنی مسیر tik4net.Objects.Interface ، به عنوان فضای نام ، درست باشه) .

    دقت کنید که پروپرتی Name (ئه کلاس InterfaceEthernet) ، چون احتمالا خودش و این کلاس اش اینترفیس INotifyPropertyChanged را پیاده سازی نکرد ، اگه بار اول ، مقدار این پروپرتی تغییر کنه ، شاید این کد عمل کنه اما اگه اون اینترفیس را پیاده سازی نکرده باشه ، با تغییر مقدار این پروپرتی ، این Binding و در نتیجه کمبوباکس تون نمیتونه از تغییرش مطلع بشه و نمیتونه تغییر کنه .

  8. #8

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک
    سلام
    این رو تست کنید (در کد Window ای که Combobox هست و همچنین در Resource ئه این Window) :


    <Window xmlns:MikrotikInterface="clr-namespace:tik4net.Objects.Interface">

    <Window.Resources>

    <DataTemplate x:Key="InterfaceEthernet_ItemTemplateKey"
    DataType="{x:Type MikrotikInterface:InterfaceEthernet}">
    <TextBlock Text="{Binding Path=Name}"></TextBlock>
    </DataTemplate>

    </Window.Resources>


    </Window>


    در کد combobox :


    <ComboBox ItemTemplate="{StaticResource InterfaceEthernet_ItemTemplateKey}"/>


    در کد اول ، مقدار فضای نامِ xmlns:MikrotikInterface را چک کنید که درست باشه و کار کنه (که بر اساس کلاس InterfaceEthernet تون ممکنه تغییر کنه) .
    همچنین ممکنه لازم بشه که در ادامه ی این دستور ، از پارامتر assembly استفاده کنید . یعنی فرضا اون دستور را به شکل زیر بنویسید :


    xmlns:MikrotikInterface="clr-namespace:tik4net.Objects.Interface;assembly=Assem blyName"


    که بجای AssemblyName در بالا ، نام اسمبلی (معمولا نام dll شاید اون هم بدون پسوند dll یا کتابخونه) را مینویسید .
    همچنین دقت کنید فضای نام ای که در مقابل clr-namespace نوشتم هم درست باشه (یعنی مسیر tik4net.Objects.Interface ، به عنوان فضای نام ، درست باشه) .

    دقت کنید که پروپرتی Name (ئه کلاس InterfaceEthernet) ، چون احتمالا خودش و این کلاس اش اینترفیس INotifyPropertyChanged را پیاده سازی نکرد ، اگه بار اول ، مقدار این پروپرتی تغییر کنه ، شاید این کد عمل کنه اما اگه اون اینترفیس را پیاده سازی نکرده باشه ، با تغییر مقدار این پروپرتی ، این Binding و در نتیجه کمبوباکس تون نمیتونه از تغییرش مطلع بشه و نمیتونه تغییر کنه .



    سلام مهندس. ممنون که وقت گذاشتین ولی متاسفانه من اصلا نتونستم متوجه بشم چیکار باید بکنم؟ این اوامری که فرمودین رو انجام دادم ولی کلا خطا میده بهم و نمیدونم چیکار باید کنم؟
    راستش من از یکی پرسیدم گفت باید این آیتم هارو یکی یکی بخونم و بعد بیام Name رو صدا بزنم. الان شمام اینکارو گفتین انجام بدم؟؟
    امکان گرفتن Anydesk رو دارین عزیز؟

  9. #9

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    نقل قول نوشته شده توسط مهدی مرادی مشاهده تاپیک
    سلام مهندس. ممنون که وقت گذاشتین ولی متاسفانه من اصلا نتونستم متوجه بشم چیکار باید بکنم؟ این اوامری که فرمودین رو انجام دادم ولی کلا خطا میده بهم و نمیدونم چیکار باید کنم؟
    سلامی مجدد
    من دیگه چجوری بگم؟
    کدش که آماده دادم .

    کدی که نوشتید و اروری که میده را اینجا بذارید .

    ضمنا ، اون متغییر list ای که از خروجیِ متدِ cmd.ExecuteScalar پر میشه ، و از متغییر list ، به عنوان ItemsSource استفاده میکنید ، بهتره که بجای این کار ، این متغییر را به عنوان پروپرتی (سراسری) تعریف کنید (البته توصیه میشه که این پروپرتی از نوع ObservableCollection باشه یا حداقل اینکه اینترفیس INotifyPropertyChanged را پیاده سازی کنید) و بعد ItemsSource ئه ComboBox را به این پروپرتی ، Binding کنید .

    نقل قول نوشته شده توسط مهدی مرادی مشاهده تاپیک
    راستش من از یکی پرسیدم گفت باید این آیتم هارو یکی یکی بخونم و بعد بیام Name رو صدا بزنم. الان شمام اینکارو گفتین انجام بدم؟؟
    امکان گرفتن Anydesk رو دارین عزیز؟
    بله .
    این که بدیهی هست .
    در یه حلقه ، عضو Name در آیتم های آرایه ی list تون را به عنوان source اضافه کنید .
    یعنی بجای COM1.ItemsSource = list در کدتون :


    for(int index = 0; index < list.Count; index++)
    {
    COM1.Items.Add(list[index].Name);
    }


    اما این روش ، اصولی نیست (حداقل برای wpf که سیستم binding خوبی داره) .

  10. #10

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک
    سلامی مجدد
    من دیگه چجوری بگم؟
    کدش که آماده دادم .

    کدی که نوشتید و اروری که میده را اینجا بذارید .

    ضمنا ، اون متغییر list ای که از خروجیِ متدِ cmd.ExecuteScalar پر میشه ، و از متغییر list ، به عنوان ItemsSource استفاده میکنید ، بهتره که بجای این کار ، این متغییر را به عنوان پروپرتی (سراسری) تعریف کنید (البته توصیه میشه که این پروپرتی از نوع ObservableCollection باشه یا حداقل اینکه اینترفیس INotifyPropertyChanged را پیاده سازی کنید) و بعد ItemsSource ئه ComboBox را به این پروپرتی ، Binding کنید .



    بله .
    این که بدیهی هست .
    در یه حلقه ، عضو Name در آیتم های آرایه ی list تون را به عنوان source اضافه کنید .
    یعنی بجای COM1.ItemsSource = list در کدتون :


    for(int index = 0; index < list.Count; index++)
    {
    COM1.Items.Add(list[index].Name);
    }


    اما این روش ، اصولی نیست (حداقل برای wpf که سیستم binding خوبی داره) .

    سلام خوبین مهندس؟ کد رو میفرستم الان خدمتتون ولی تا وقتی یه میکروتیک نداشته باشین، بهتون جوابی نمیده چون باید بره و از یه میکروتیک اطلاعات اینترفیس هاشو برداره بیاره.
    متاسفانه اینجا نتونستم بیارمش چون حجم فایلش چند کیلوبایت بیشتر میشد. لطفا از این لینک دانلودش کنین ممنون:
    http://up44.ir/70sp2ade
    فایل های ضمیمه فایل های ضمیمه

  11. #11

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    نقل قول نوشته شده توسط مهدی مرادی مشاهده تاپیک
    سلام خوبین مهندس؟ کد رو میفرستم الان خدمتتون ولی تا وقتی یه میکروتیک نداشته باشین، بهتون جوابی نمیده چون باید بره و از یه میکروتیک اطلاعات اینترفیس هاشو برداره بیاره.
    متاسفانه اینجا نتونستم بیارمش چون حجم فایلش چند کیلوبایت بیشتر میشد. لطفا از این لینک دانلودش کنین ممنون:
    http://up44.ir/70sp2ade
    چه چیز را تست کنم وقتی کد COM1 تون هنوز اینه :


    <ComboBox x:Name="COM1" HorizontalAlignment="Left" Margin="27,27,0,0" VerticalAlignment="Top" Width="389" IsSynchronizedWithCurrentItem="True"/>


    اما من کد پست 7 را داده بودم؟

    یا اینکه کد Button_Click تون اینه :


    //COM1.ItemsSource = list;


    اون هم توی کامنت هست ، اما کد پست 9 را داده بودم؟

    ضمن اینکه من میکروتیک ندارم که نتیجه ی نهایی شو ببینم .

  12. #12

    نقل قول: انتخاب بخشی از کد ارسالی از میکروتیک

    نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک
    چه چیز را تست کنم وقتی کد COM1 تون هنوز اینه :


    <ComboBox x:Name="COM1" HorizontalAlignment="Left" Margin="27,27,0,0" VerticalAlignment="Top" Width="389" IsSynchronizedWithCurrentItem="True"/>


    اما من کد پست 7 را داده بودم؟

    یا اینکه کد Button_Click تون اینه :


    //COM1.ItemsSource = list;


    اون هم توی کامنت هست ، اما کد پست 9 را داده بودم؟

    ضمن اینکه من میکروتیک ندارم که نتیجه ی نهایی شو ببینم .

    سلام مهندس جان. ببخشید من مرخصی بودم که دیر جواب شمارو دادم. خداروشکر این اوکی شد. با این کد جواب ها برام آورده شد.
    try            {
    using (ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionTy pe.Api))
    {
    Debug.WriteLine("start");
    connection.OnReadRow += Connection_OnReadRow;
    connection.OnWriteRow += Connection_OnWriteRow;
    connection.Open("192.168.1.25", "admin", "123456");
    var cmd = connection.CreateCommandAndParameters("/interface/print");
    var list = cmd.LoadList<InterfaceEthernet>();
    COM1.Items.Clear();
    foreach (var item in list)
    {
    COM1.Items.Add($"{item.Name} [{item.MacAddress}]");
    }
    Console.WriteLine("Identity: " + /*identity.GetResponseField("name")*/ list);
    Debug.WriteLine("Count=" + list);
    Console.WriteLine("Press ENTER");
    Console.ReadLine();
    Debug.WriteLine("end");
    }
    }
    catch (Exception error)
    {
    Debug.WriteLine(error.Message);
    }


    و جوابش هم اینجوری میاد برام:
    104.png

تاپیک های مشابه

  1. نوتیفیکشن به سبک بازار
    نوشته شده توسط masoudv56 در بخش Android Studio
    پاسخ: 1
    آخرین پست: شنبه 17 مرداد 1394, 22:43 عصر
  2. ارسال نوتیفیکیشن
    نوشته شده توسط ali_72 در بخش ASP.NET MVC
    پاسخ: 0
    آخرین پست: پنج شنبه 20 فروردین 1394, 09:18 صبح
  3. نوتیفیکیشن پایدار
    نوشته شده توسط pouya1999best@g در بخش Android Studio
    پاسخ: 7
    آخرین پست: پنج شنبه 12 تیر 1393, 14:25 عصر
  4. نمایش اخبار برنامه در نوتیفیکیشن
    نوشته شده توسط unit001 در بخش Android Studio
    پاسخ: 2
    آخرین پست: جمعه 19 اردیبهشت 1393, 20:53 عصر
  5. سوال: روتینگ در mvc
    نوشته شده توسط kavayo در بخش ASP.NET MVC
    پاسخ: 1
    آخرین پست: پنج شنبه 18 اردیبهشت 1393, 19:55 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •