ryco

مدیر کل
  • تعداد ارسال ها

    235
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    61

آخرین بار برد ryco در 27 خرداد

ryco یکی از رکورد داران بیشترین تعداد پسند مطالب است!

اعتبار در سایت

228 بی نظیر

7 دنبال کننده

درباره ryco

  • درجه
    کاربر ثابت
  • تاریخ تولد 11 دی 1378

اطلاعات تماس

  • آدرس تارنما
    http://mostro.ir
  • مرورگر
    Microsoft Edge
  • تلگرام
    http://telegram.me/rohollah

اطلاعات نمایه

  • جنسیت
    آقا
  • مکان
    Bu
  • علایق
    آفرود، بیابون، کویر، پیاده روی، دوچرخه سواری!
  • نام توسعه دهندگی
    mostro
  • سیستم عامل کامپیوتر
    Windows 10
  • سیستم عامل موبایل
    Android
  • موبایل
    Other

آخرین بازدید کنندگان نمایه

156 بازدید کننده نمایه
  1. آموزش iot

    همه چیز درست به نظر میرسه! ماژول بلوتوث رو درست متصل کردید؟ بیاید به تلگرام من (آدرس تلگرامم در پروفایلم هست).
  2. آموزش iot

    سلام؛ بردتون که چیز خوبیه، گویا اصلی هست (برای من اصلی نیست مثل اینکه!) دوست عزیز، تو کدی که اسم بلوتوث رو نوشتید، باید اسم دستگاه لوتوثی خودتون رو بنویسید! conn = new BluetoothSerial("Dev B"); نحوه بدست آوردنشم کامل تو آموزش توضیح دادم. خواهش می کنم. اینجا جمع شدیم به هم کمک کنیم!!
  3. آموزش iot

    سلام! آهان! امیدوارم مشکلی نباشه، اگه روشنه که مشکلی نیست! یک عکس از بردتون بدید تا بهتر راهنمایی کنم! منظوری نداشتم ، اشتباه لپی بوده! منظورم اینه که پایه رو درست متصل کردید؟ توی کدها، پایه مربوطه رو معرفی کردید؟
  4. آموزش iot

    سلام! خب اول چرا لحیم کاری کردید؟! شما تا لحظه آخر نباید این کار رو انجام بدید. اما حالا، شما ال ای دی رو به صورت مستقیم به باتری وصل کنید، ببینید درسته؟! ال ای دی رو به پایه درست وصل کردید؟ کدخا رو دست وصل کردید؟! در صورت درست بودن کد، باید هنگام ارسال دستور، یه ال ای دی روی برد روشن بشه!
  5. آموزش iot

    سلام دوست عزیز. در خود IDE آردوئینو کد وجود داره! به مسیر برویدFile > Examples > Firmata، StandardFirmata، پنجره جدیدی باز میشه که حاوی کدهاست. و در مورد سوال قبلتون، چون ویندوز IOT همیشه آخرین SDK رو داره، بنابراین هر کدوم از نسخه های ویژوال که از اون SDK پشتیبانی می کنن می تونن کاربردی باشند. در مورد آموزش های بیشتر هم چشم.
  6. آموزش iot

    بسم الله الرحمن الرحیم قسمت دوم: سلام دوستان خوبم، خب امروز یک قسمت دیگه از کار رو انجام میدیم. به قسمت های مهم رسیدیم. درحال حاضر باید، یک ال ای دی رو به پایه های برد آردوئینو متصل کنیم. من برای این کار، پایه 5 دیجیتال رو در نظر گرفتم که تنها دارای حالت روشن و خاموش هست. از گراند (GND) هم یک سیم به پایه منفی میرسونیم. اتصال ماژول بلوتوث هم ساده است، ولی یک نکته کوچک هست. پایه های مثبت و منفی را به پایه های همنام در برد متصل کنید، اما در مورد دو پایه دیگر، پایه TX ماژول را به RX برد و RX ماژول را به TX برد متصل کنید (برعکس). در اصل ما فرستنده برد رو به گیرنده ماژول و فرستنده ماژول رو به گیرنده برد متصل کردیم. حالا برد رو به منبع تغذیه متصل کنید. (عکس از سایت مایکی هست، ولی به همین نحو باید وصل کنید) حالا ویژوال رو باز کنید و پروژه ای رو که قبلا ساختیم رو باز کنید. یک متغیر از نوع BluetoothSerial و یکی هم از نوع RemoteDevice میسازیم: namespace Pilot { /// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> public sealed partial class MainPage : Page { BluetoothSerial conn; RemoteDevice uno; public MainPage() { this.InitializeComponent(); } } } گام بعدی، بلوتوث رو متصل می کنیم و در گام بعد اون رو به RemoteDevice میدهیم: public MainPage() { this.InitializeComponent(); conn = new BluetoothSerial("Dev B"); uno = new RemoteDevice(conn); } } Dev B اسم بلوتوث من هست. چیزی که منو به دردسر انداخت همین بود، چون توی دستگاه اسم بلوتوث ماژول HC-05 بود. برای اطلاع از نام بلوتوث، بعد از پیر کردن ماژول با ویندوز، به تنظیمات بلوتوث برید. در قسمت Com Ports می تونید اسم دستگاه رو ببینید (مقابل Outgoing و در میان دو ''). اگر هم چیز خاصی نبود، همون اسم اصلی رو قرار بدید. خب بریم ادامه بدیم: حالا اگر همه جیز به خوبی پیش رفت و دستگاه متصل بود، باید یک متد ایجاد کنیم و کارامون رو پیش ببریم: public MainPage() { this.InitializeComponent(); conn = new BluetoothSerial("Dev B"); uno = new RemoteDevice(conn); conn.ConnectionEstablished += Conn_ConnectionEstablished; } private void Conn_ConnectionEstablished() { throw new NotImplementedException(); } و در نهایت، استارت تبادل داده ها رو میزنیم! نرخ داده ها رو که در قسمت قبل یادتون هست؟ public MainPage() { this.InitializeComponent(); conn = new BluetoothSerial("Dev B"); uno = new RemoteDevice(conn); conn.ConnectionEstablished += Conn_ConnectionEstablished; conn.begin(57600, 0); } private void Conn_ConnectionEstablished() { //کارهایی که در صورت اتصال باید انجام بشه، مثلا فعال سازی دکمه روشن و خاموش کردن ال ای دی } خب، همه چیز به خوبی پیش رفت، حالا یه دکمه میسازیم که به وسیله اون بتونیم فرامین مربوط به روشن و خاموش کردن ال ای دی رو بفرستیم. <Page x:Class="Pilot.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Pilot" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Button Name="btnOn" Click="btnOn_Click" Content="ON" Width="70" HorizontalAlignment="Center"/> <Button Name="btnOff" Click="btnOff_Click" Content="OFF" Width="70" HorizontalAlignment="Center"/> </StackPanel> </Page> حالا باید دستورات نهایی رو وارد کنیم! در مورد نوع دستورات، طی پست بعدی صحبت می کنم. اما فعلا چون یک پایه دیجیتالی رو انتخاب کردیم، پس دستورات رو به صورت زیر می فرستیم: برای روشن کردن: uno.digitalWrite(5, PinState.HIGH); خاموش کردن: uno.digitalWrite(5, PinState.LOW); و در نهایت کدهای ما به این صورت خواهد بود: using Microsoft.Maker.RemoteWiring; using Microsoft.Maker.Serial; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; // The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 namespace Pilot { /// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> public sealed partial class MainPage : Page { BluetoothSerial conn; RemoteDevice uno; public MainPage() { this.InitializeComponent(); conn = new BluetoothSerial("Dev B"); uno = new RemoteDevice(conn); conn.ConnectionEstablished += Conn_ConnectionEstablished; conn.begin(57600,0); } private void Conn_ConnectionEstablished() { } private void btnOn_Click(object sender, RoutedEventArgs e) { uno.digitalWrite(5, PinState.HIGH); } private void btnOff_Click(object sender, RoutedEventArgs e) { uno.digitalWrite(5, PinState.LOW); } } } برنامه رو تست کنید! مطمئنا اولین بار که ال ای دی رو روشن می کنید، لذت غیر قابل انکاری (در حد اختراع خود لامپ ) خواهید برد! موفق باشید!
  7. بسم الله الرحمن الرحیم سلام؛ اینبار هم یه آموزش جدید و اما جذاب داریم براتون که میدونم هر کسی انجامش بده، حسابی بهش خوش میگذره و در آینده هم با خلاقیت و پشتکارش می تونه کارهای بزرگی بکنه. این یک آموزش پایه است، بنابراین پیشرفتش و شاخوبرگ دادنش دست خودتونه! خب، قصد داریم گوشی ویندوزیمون (یا هر دستگاهی که قابلیت اجرای برنامه های یونیورسال و دارای سخت افزار بلوتوث هست) رو به آردوئینو متصل کنیم و با ارسال دستوری، یک لامپ رو روشن کنیم. برای این کار نیاز به چند وسیله مختلف داریم: 1. دستگاه با قابلیت اجرای ویندوز 10 دارای سخت افزار بلوتوث 2. برد آردوئینو؛ من از برد آردوئینو UNO استفاده کردم. 3. ماژول بلوتوث مناسب با برد آردوئینو؛ من برای بردم از برد HC-05 همراه با برد راه اندازش استفاده کردم. 4. یک LED معمولی 5. برد بورد برای قرار دادن قطعات 6. منبع تغذیه 5 ولتی (شارژر موبایل ها اکثرا مناسب هستند) 7. مقداری سیم و در بعد نرم افزاری هم به: 1. ویژوال استدیو 2017 2. IDE آردوئینو (لینک دانلود) نیاز داریم. خب بعد جمع کردن پیش نیازها، وقتشه که اولین پروژه رو شروع کنیم. ویژوال استدیو رو اجرا و یک پروژه جدید Blank App (Windows Universal) ایجاد می کنیم. بعد از ایجاد پروژه، از طریق Nuget، پکیج Windows Remote Arduino رو دریافت و نصب کنید، ترجیحا جهت محکم کاری، یکبار پروژه رو rebuild کنید. پس از این کار در منوی سولوشن، روی Package.appxmanifest راست کلیک کنید و گزینه View Code رو بزنید. می خواهیم قابلیت ها (نیازها) رو معرفی کنیم. تمامی موارد زیر رو در زیر تگ <Capabilities> وارد کنید: برای اتصال از طریق بلوتوث: <DeviceCapability Name="bluetooth.rfcomm"> <Device Id="any"> <Function Type="name:serialPort"/> </Device> </DeviceCapability> و <Capability Name="privateNetworkClientServer"/> <Capability Name="internetClientServer"/> خب، فعلا کارمون با ویژوال تمومه! میریم سراغ پروگرام کردن آردوئینو: IDE مربوطه رو نصب و اجرا کنید، برد خودتون رو با کابل USB به سیستم متصل کنید. توجه کنید که در این حالت نباید ماژولهای گیرنده داده مثل بلوتوث به بردتون متصل باشه، چون در فرایند پروگرام کردن دچار خطا خواهید شد. از منوی Tools > Board، برد خودتون رو انتخاب کنید. سپس از منوی Tools > Port، پورتی رو که برد از طریق اون به سیستم متصل هست رو انتخاب کنید. و در آخر از مسیر File > Examples > Firmata، StandardFirmata را انتخاب کنید. این کدهای آماده، تمام نیازهای ما برای اتصال به تک تک پایه ها و دریافت و ارسال داده رو برطرف می کند. حالا وقتشه این کدها رو بر روی برد آپلود کنیم. کافیه دکمه "Upload" (دکمه فلش رو به راست) رو فشار بدیم و منتظر پایان فرآیند باشیم. یک نکته ظریف اما مهم اینجا وجود داره، و اون هم مربوط به نرخ باند ماژول بلوتوث هست. باید در دیتاشیت ماژولی که خریدید نگاه کنید و عدد مربوطه رو پیدا کنید. برای ماژل من 57600 هست. بعد از پیدا کردن نرخ مناسب، در کدهای StandardFirmata سرچ کنید و مقدار زیر رو به نرخ مناسب ماژولتون تغییر بدید: Firmata.begin(57600); تمام! در پست بعدی، بخش پایانی کار رو توضیح خواهم داد. پس با ما همراه باشید. رزرو..........
  8. سلام؛ اگر شما هم با پنل GridView کار کرده باشید، حتما در نمایش آیتم ها در صفحات مختلف دچار مشکل فضای خالی در طرفین آیتم ها شدید. متاسفانه این کنترل به خوبی بهینه نشده و کاملا رسپانسیو عمل نمی کند. بنابراین باید از راه حلی دیگر این مشکل رو جبران کنیم تا آیتم ها تمام عرض پنل رو بپوشانند و فضای خالی آزار دهنده ای جلوی چشم مخاطب قرار نگیرد. اما حالا بریم سراغ توضیحات: ابتدا در xml کنترل گرید ویو، کدهای زیر رو اضافه می کنیم، تا عرض هر آیتم به اندازه فضای آزاد برسه: GridView.ItemContainerStyle> <Style TargetType="GridViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="VerticalContentAlignment" Value="Stretch" /> </Style> </GridView.ItemContainerStyle> به این منظور باید در رویداد SizeChanged گرید ویو میزان عرض هر آیتم رو بصورت دستی تغییر بدیم. من برای این کار تعداد ستون هایی رو که می خوام در عرض صفحه میشه نمایش داد رو محاسبه می کنم و سپس این عرض "حداکثری" رو به آیتم ها می دم. من عرض حداکثری هر آیتم رو 850 انتخاب کردم: private void gvFave_SizeChanged(object sender, SizeChangedEventArgs e) { var columns = Math.Ceiling(ActualWidth / 850); ((ItemsWrapGrid)gvFave.ItemsPanelRoot).ItemWidth = e.NewSize.Width / columns; } به همین سادگی می تونید از شر فضای خالی راحت بشید. اگر سوالی بود در خدمتم. با تشکر
  9. فایلی از نوع APPXBUNDLE File (.appxbundle) هست. اونو باید منتقل کنید.
  10. سلام من یک گرید به صورت زیر دارم: <Grid Name="gView" Visibility="Collapsed" Grid.Row="1" ScrollViewer.VerticalScrollBarVisibility="Visible"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition/> </Grid.RowDefinitions> <Image Name="imgTitle" MaxHeight="450"/> <TextBlock Name="tbTitlePost" Margin="60,8" TextAlignment="Center" TextWrapping="Wrap" Grid.Row="1" FontFamily="ms-appx:/Other/yekan.ttf#B Yekan" Foreground="#FFE2BC12"/> <WebView ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Grid.Row="2" Name="myView" GotFocus="myView_GotFocus" LoadCompleted="MyView_LoadCompleted" /> </Grid> می خوام با لود شدن اطلاعت در وب ویو، پیج مورد نظر به صورت کلی اسکرول بشه. در اصل اسکرول وب ویو حذف و از طریق گرید gView صورت بگیره. راه حل چیست؟ من از این راه حل استفاده کردم، ولی تاثیری نداشت. http://www.c-sharpcorner.com/UploadFile/269510/disable-webview-scrolling-in-windows-store-apps/
  11. سلام؛ من می خوام از فونت یکان، برای نمایش متون در وب ویو برنامه استفاده کنم. متاسفانه از هر روشی رفتم، موفق نشدم. این کلاسی هست که برای این کار نوشتم: class WebContentHelper { public static string HtmlHeader() //adapt parametres { var head = new StringBuilder(); head.Append("<head>"); head.Append("<meta name=\"viewport\" content=\"initial-scale=1, maximum-scale=1, user-scalable=0\"/>"); head.Append("<script type=\"text/javascript\">" + "document.documentElement.style.msScrollTranslation = 'vertical-to-horizontal';" + "</script>"); //horizontal scrolling //head.Append("<meta name=\"viewport\" content=\"width=720px\">"); head.Append("<style>"); head.Append("@font-face {" + "font-family: 'yekan'" + " url('/other/yekan.ttf') format('ttf');" + "}" + "h1, h2, h3, h4, h5, h6, p{font-family:yekan;}" + "p{font-size{15px;}" + "h1{font-size:25px;}"); head.Append("html { -ms-text-size-adjust:150%;}"); head.Append(string.Format("body {{background:white;color:black;font-size:15px;margin:20;padding:0;display: block;" + "height: 100%;" + "overflow-x: scroll;" + "position: relative;" + "width: 100%;" + "z-index: 0;}}" + "article{{column-fill: auto;column-gap: 80px;column-width: auto; column-height:100%; height:630px;" + "}}" + "img,p.object,iframe {{ max-width:100%; height:auto }}")); head.Append(string.Format("a {{color:blue}}")); head.Append("</style>"); // head.Append(NotifyScript); head.Append("</head>"); return head.ToString(); } public static string WrapHtml(string htmlSubString) { var html = new StringBuilder(); html.Append("<html>"); html.Append(HtmlHeader()); html.Append("<body><article class=\"content\">"); html.Append("<p dir=\"rtl\" align=\"right\">"); html.Append(htmlSubString); html.Append("</p>"); html.Append("</article></body>"); html.Append("</html>"); return html.ToString(); } } متن دلخواه رو باید به متد WrapHtml بدم و بعد در وب ویو به نمایش بذارم: string Content = WebContentHelper.WrapHtml(value); myView.NavigateToString(Content); نمیدونم مشکل چی هست!! اگر کسی عیبی در کدهای من می بینه بفرماید!!
  12. اورمان جان این مبحث رو مطالعه بفرما: https://www.win-nevis.com/topic/345-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%AF%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1-%D9%84%D9%88%DA%A9%D8%A7%D9%84-%D9%81%D9%88%D9%84%D8%AF%D8%B1/ با لوکال ستینگ می تونی ذخیره کنی!
  13. خب در روشی که من دارم، میام با استفاده از لوکال ستینگ یک متغیری رو در صورت تکمیل مرحله (مثلا لاگین شدن یا اینکه دیدن کامل راهنمای برنامه یا...) ذخیره می کنم، و هر بار در اجرای برنامه چک می کنم که آیا این متغیر وجود داره؟ اگر وجود داره یعنی این که برنامه قبلا اجرا شده و دیگه نیازی به این مراحل نیست. در گام اول یک متغیر لوکال ستینگ تعریف می کنیم: Windows.Storage.ApplicationDataContainer myData = Windows.Storage.ApplicationData.Current.LocalSettings; حالا در متد لود نخستین صفحه ای که اجرا میشه میایم بررسی می کنیم آیا این متغییر مقداری دارد یا خیر؟ مسلما وقتی فقط تعریف می کنیم و هنوز به اون مقداری نداده ایم، مقدار آن null هست، پس اگر مقدارش نال باشه، اولین اجرای ماست و اگر مقداری در آن باشه یعنی اجرا شده. برای این که مقداری رو از لوکال ستینگ بخونید، نیاز به یک کلمه کلیدی دارید که دلخواه و غیر تکراری باشه، مثلا من FirstRun رو نوشتم. حالا هر جایی در برنامه (حتی پروژه هایی دیگر در سولوشن) لازم داشتید اطلاعات مربوطه رو بخونید یا ویرایش کنید یا مقدار بدید کافیه یک متغیر لوکال ستینگ با هر نامی بسازید ولی باید از همون کلمه کلیدی (FirstRun مثلا) استفاده کنید. private void Page_Loaded(object sender, RoutedEventArgs e) { string firstrun; if (myData.Values["FirsRun?"] == null) { Firs run and navigate to Login Page } else { not First and navigate to other page } همونطور که از کد بالا مشخص هست، برای خوندن یا نوشتن مقدار اون کلمه کلیدی به صورت زیر عمل می کنیم: myData.Values["FirstRun?"] مثال: خواندن: string X = myData.Values["FirstRun?"].ToString(); نوشتن: myData.Values["FirstRun?"] = "not First :D"; پس وقتی فرایندی که خواستید تکمیل شد، می تونید یک مقدار داخل کلمه کلیدی بریزید تا در شرط بررسی بشه. این اطلاعات حتی با آپدیت هم پاک نمیشه، تنها راه پاک کردنش از طریق کد نویسی یا پاک کردن برنامه است. بنابراین می تونید به راحتی ورژن برنامه رو هم چک کنید. کافیه اون رو هم در یک کلید ذخیره کنید: myData.Values["Ver"] = "1.2.43.55";
  14. سلام؛ برای انتقال به صفحه واک ثرو، راه های زیادی هست، یکیش به قول شما گرفتن ورژن برنامه است. برای گرفتن ورژن برنامه می تونید از دستور زیر استفاده کنید: فضای نامی: using Windows.ApplicationModel; متدی که ورژن رو بر می گردونه: public static string GetAppVersion() { Package package = Package.Current; PackageId packageId = package.Id; PackageVersion version = packageId.Version; return string.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build, version.Revision); } یا : string appVersion = string.Format("Version: {0}.{1}.{2}.{3}", Package.Current.Id.Version.Major, Package.Current.Id.Version.Minor, Package.Current.Id.Version.Build, Package.Current.Id.Version.Revision); اما من از روش دیگری استفاده می کنم، که اگر بخواهید توضیح میدم خدمت شما.
  15. سلام؛ من می خوام همچین چیزی رو ایجاد کنم اما به مشکل برخوردم: از ScrollViewer که استفاده می کنم، وب ویو به نمایش در نمیاد و اگر هم از ListView استفاده کنم، وب ویو رو هم باید اسکرول کنم و همچنین ارتفاعش بسیار اندک هست. راهکارتون برای این کار چیست؟ با تشکر