امین مهدی نژاد 2,141 ارسال شده در 1 دی، ۱۳۹۶ اشتراک گذاری ارسال شده در 1 دی، ۱۳۹۶ ارسال فایل توسط AsyncStreams در مواردی همچون بلوتوث. وای فای و یا سوکت نویسی کاربرد دارد. در این آموزش شما نحوه ارسال فایل توسط بلوتوث را خواهد آموخت. گام اول: کار با بلوتوث و گرفتن لیست دستگاه های بلوتوث دار ابتدا دو متغیر یکی برای کار با بلوتوث و دیگری لیستی برای دستگاه های بلوتوث دار می سازیم Sub Globals Dim BlueAdmin As BluetoothAdmin Dim ListDevices As List End Sub Sub Activity_Create(FirstTime As Boolean) If FirstTime Then BlueAdmin.Initialize("BlueAdmin") ListDevices.Initialize End If End Sub سپس رویدادهای مربوط به بلوتوث را می سازیم رویداد تغیر در وضعیت بلوتوث Sub BlueAdmin_StateChanged (NewState As Int, OldState As Int) End Sub رویداد یافتن دستگاه Sub BlueAdmin_DeviceFound (Name As String, MacAddress As String) mapDevices.Put(Name,MacAddress) End Sub رویداد پایان جستجو Sub BlueAdmin_DiscoveryFinished If mapDevices.Size = 0 Then ToastMessageShow("No device found.", True) End If End Sub خب نحوه شروع جستجو دستگاه به این شکل خواهد بود. (مثلا با زدن دکمه) Sub btnSearch_Click If BlueAdmin.StartDiscovery = False Then ToastMessageShow("Error starting discovery process.", True) Else ProgressDialogShow("Searching for devices...") End If End Sub گام دوم: اتصال به دستگاه مورد نظر ابتدا پورت سریال مربوطه را می سازیم Dim serial1 As Serial serial1.Initialize("serial1") serial1.Connect(MapDevices.GetValueAt(0)) حال رویداد مربوط به اتصال را چنین بنویسید Sub Serial1_Connected (Success As Boolean) If Success = False Then ToastMessageShow("Error connecting ",True) Else 'ادامه در گام بعد' End If End Sub و حال دستور انتظار برای اتصال را می نویسیم. Sub btnConnect_Click Dim i As Intent i.Initialize("android.bluetooth.adapter.action.REQUEST_DISCOVERABLE", "") i.PutExtra("android.bluetooth.adapter.extra.DISCOVERABLE_DURATION", 300) StartActivity(i) serial1.Listen End Sub گام سوم: ساخت AsyncStreams برای ارسال فایل یا متن در رویداد مربوط به اتصال به دستگاه جدید.کد ساخت AsyncStreams را بنویسید Dim AStream As AsyncStreams AStream.InitializePrefix(serial1.InputStream, True, serial1.OutputStream, "AStream") رویدادهای خطای ارسال Sub AStream_Error ToastMessageShow("Connection is broken.", True) End Sub Sub AStream_Terminated AStream_Error End Sub و رویداد دریافت اطلاعات(مثلا نام فایل) Sub AStream_NewData (Buffer() As Byte) LogMessage("You", BytesToString(Buffer, 0, Buffer.Length, "UTF8")) End Sub رویداد مربوط به دریافت فایل Sub AStream_NewStream (Dir As String, FileName As String) File.Copy(Dir, FileName, Dir, currentFile) File.Delete(Dir, FileName) End Sub دستور ارسال فایل Public Sub SendFile(Dir As String, FileName As String) Dim totalSizeForSending As Long = File.Size(Dir, FileName) Dim In As InputStream = File.OpenInput(Dir, FileName) countingStream.Initialize(In) currentFile = FileName.SubString(FileName.LastIndexOf("/") + 1) astream.Write(currentFile.GetBytes("UTF8")) 'write the file name astream.WriteStream(countingStream, totalSizeForSending) lblFile = "Sending: " & currentFile timer1.Enabled = True SendingFile = True UpdateProgress End Sub «موفق باشید.» لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
امین مهدی نژاد 2,141 ارسال شده در 15 دی، ۱۳۹۶ سازنده اشتراک گذاری ارسال شده در 15 دی، ۱۳۹۶ توضیحات تکمیلی دوستان توضیحاتی درباره بعضی قسمت ها می خواستند که برایتان شرح می دهم currentFile همانگونه که کاملا واضح است متغیر بالا از نوع رشته بوده و نام خود فایل روا از مسیرش جدا می کند countingStream این متغیر نیز به صورت زیر ایجاد می شود Private countingStream As CountingInputStream و در نهایت تایمر هم که مشخص است برای بدست آوردن درصد ارسال شده از فایل می باشد. مثلا: Sub Timer1_Tick Dim count, total As Long If SendingFile Then count = countingStream.count total = totalSizeForSending If count = total Then lblFile = currentFile & " completed" 'stop the timer. 'when a file is received the NewStream event will be raised SendingFile = False timer1.Enabled = False End If Else If ReceivingFile Then count = astream.StreamReceived total = astream.StreamTotal End If progressValue = 100 * count / total progressText = NumberFormat2(count / 1000, 0, 0, 0, True) & _ "kb / " & NumberFormat2(total / 1000, 0, 0, 0, True) & "kb" UpdateProgress End Sub امیدوارم توضیحات کافی بوده باشد. «موفق باشید.» لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
امین مهدی نژاد 2,141 ارسال شده در 15 دی، ۱۳۹۶ سازنده اشتراک گذاری ارسال شده در 15 دی، ۱۳۹۶ توضیحات تکمیلی دوستان توضیحاتی درباره بعضی قسمت ها می خواستند که برایتان شرح می دهم currentFile همانگونه که کاملا واضح است متغیر بالا از نوع رشته بوده و نام خود فایل روا از مسیرش جدا می کند countingStream این متغیر نیز به صورت زیر ایجاد می شود Private countingStream As CountingInputStream و در نهایت تایمر هم که مشخص است برای بدست آوردن درصد ارسال شده از فایل می باشد. مثلا: Sub Timer1_Tick Dim count, total As Long If SendingFile Then count = countingStream.count total = totalSizeForSending If count = total Then lblFile = currentFile & " completed" 'stop the timer. 'when a file is received the NewStream event will be raised SendingFile = False timer1.Enabled = False End If Else If ReceivingFile Then count = astream.StreamReceived total = astream.StreamTotal End If progressValue = 100 * count / total progressText = NumberFormat2(count / 1000, 0, 0, 0, True) & _ "kb / " & NumberFormat2(total / 1000, 0, 0, 0, True) & "kb" UpdateProgress End Sub امیدوارم توضیحات کافی بوده باشد. «موفق باشید.» لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
[email protected] 0 ارسال شده در 22 فروردین، ۱۳۹۷ اشتراک گذاری ارسال شده در 22 فروردین، ۱۳۹۷ سلام من کار با سوکت رو بلدم اما برای ارسال و دریافت متن شما گفتین ارسال فایل در بلوتوث ، وای فای و سوکت مثل هم هست . میتونم ازتون درخواست کنم بخش ارسال و دریافت فایل برای سوکت رو برام توضیح بدین. لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.