امین مهدی نژاد 2,142 ارسال شده در 22 اسفند، 2017 اشتراک گذاری ارسال شده در 22 اسفند، 2017 ارسال فایل توسط 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,142 ارسال شده در 5 فروردین، 2018 سازنده اشتراک گذاری ارسال شده در 5 فروردین، 2018 توضیحات تکمیلی دوستان توضیحاتی درباره بعضی قسمت ها می خواستند که برایتان شرح می دهم 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,142 ارسال شده در 5 فروردین، 2018 سازنده اشتراک گذاری ارسال شده در 5 فروردین، 2018 توضیحات تکمیلی دوستان توضیحاتی درباره بعضی قسمت ها می خواستند که برایتان شرح می دهم 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 امیدوارم توضیحات کافی بوده باشد. «موفق باشید.» لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
h13garazhiyan69@gmail.com 0 ارسال شده در 11 تیر، 2018 اشتراک گذاری ارسال شده در 11 تیر، 2018 سلام من کار با سوکت رو بلدم اما برای ارسال و دریافت متن شما گفتین ارسال فایل در بلوتوث ، وای فای و سوکت مثل هم هست . میتونم ازتون درخواست کنم بخش ارسال و دریافت فایل برای سوکت رو برام توضیح بدین. لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.