<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=63&amp;t=24653&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2024-07-11T21:35:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=63&amp;t=24653&amp;mode</id>
<entry>
<author><name><![CDATA[tfosik]]></name></author>
<updated>2024-07-11T21:35:11+01:00</updated>
<published>2024-07-11T21:35:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24653&amp;p=238238#p238238</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24653&amp;p=238238#p238238"/>
<title type="html"><![CDATA[Re: Problem z aplkacja BT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24653&amp;p=238238#p238238"><![CDATA[
[syntax=basic4gl]#Region  Activity Attributes<br />    #FullScreen: False<br />    #IncludeTitle: True<br />#End Region<br /><br />Sub Process_Globals<br />    'Globalne zmienne deklarowane raz przy starcie aplikacji.<br />    'Te zmienne mogą być dostępne z wszystkich modułów.<br />    Dim admin As BluetoothAdmin<br />    Dim serial1 As Serial<br />    Dim foundDevices As List<br />    Type NameAndMac(Name As String, Mac As String)<br />    Dim connectedDevice As NameAndMac<br />   <br />    Dim connected As Boolean<br />    Dim ast As AsyncStreamsText<br />    Dim tts As TTS<br />    Dim rp As RuntimePermissions<br />    Dim xui As XUI<br />End Sub<br /><br />Sub Globals<br />    'Te zmienne globalne będą deklarowane za każdym razem, gdy aktywność jest tworzona.<br />    'Te zmienne mogą być dostępne tylko z tego modułu.<br /> <br />    Private btnSend As Button<br />    Private edtText As EditText<br />    Private edtLog As EditText<br />    Private btnConnect As Button<br />    Private btnSearch As Button<br />    Private btnDisconnect As Button<br />    Private vr As VoiceRecognition<br />    Private dialog As B4XDialog<br />    Private dialogPanel As B4XView<br />   <br />    'Deklaracje zdarzeń<br />    #Event: NewText (Text As String)<br />    #Event: Terminated<br />End Sub<br /><br />Sub Activity_Create(FirstTime As Boolean)<br />    'Nie zapomnij załadować pliku układu utworzonego za pomocą projektanta wizualnego.<br />    Activity.LoadLayout(&quot;1&quot;)<br />    Activity.Title = &quot;BT TERMINAL (brak połączenia)&quot;<br />   <br />    vr.Initialize(&quot;vr&quot;)<br />    tts.Initialize(&quot;tts&quot;)<br />    dialog.Initialize(Activity)<br />   <br />    If FirstTime Then<br />        connected = False<br />        admin.Initialize(&quot;admin&quot;)<br />        serial1.Initialize(&quot;Serial1&quot;)<br />        CheckPermissions<br />    End If<br />   <br />    enable_controls(connected)<br />End Sub<br /><br />Sub CheckPermissions<br />    If rp.Check(rp.PERMISSION_ACCESS_FINE_LOCATION) = False Then<br />        rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)<br />        Wait For Activity_PermissionResult (rp.PERMISSION_ACCESS_FINE_LOCATION, Result As Boolean)<br />        If Result = False Then<br />            ToastMessageShow(&quot;Permission denied: ACCESS_FINE_LOCATION&quot;, True)<br />            Return<br />        End If<br />    End If<br /><br />    If rp.Check(rp.PERMISSION_RECORD_AUDIO) = False Then<br />        rp.CheckAndRequest(rp.PERMISSION_RECORD_AUDIO)<br />        Wait For Activity_PermissionResult (rp.PERMISSION_RECORD_AUDIO, Result As Boolean)<br />        If Result = False Then<br />            ToastMessageShow(&quot;Permission denied: RECORD_AUDIO&quot;, True)<br />            Return<br />        End If<br />    End If<br /><br />    ' Dla nowszych wersji Androida wymagamy dodatkowych uprawnień Bluetooth<br />    If rp.Check(&quot;android.permission.BLUETOOTH_SCAN&quot;) = False Then<br />        rp.CheckAndRequest(&quot;android.permission.BLUETOOTH_SCAN&quot;)<br />        Wait For Activity_PermissionResult (&quot;android.permission.BLUETOOTH_SCAN&quot;, Result As Boolean)<br />        If Result = False Then<br />            ToastMessageShow(&quot;Permission denied: BLUETOOTH_SCAN&quot;, True)<br />            Return<br />        End If<br />    End If<br /><br />    If rp.Check(&quot;android.permission.BLUETOOTH_CONNECT&quot;) = False Then<br />        rp.CheckAndRequest(&quot;android.permission.BLUETOOTH_CONNECT&quot;)<br />        Wait For Activity_PermissionResult (&quot;android.permission.BLUETOOTH_CONNECT&quot;, Result As Boolean)<br />        If Result = False Then<br />            ToastMessageShow(&quot;Permission denied: BLUETOOTH_CONNECT&quot;, True)<br />            Return<br />        End If<br />    End If<br />End Sub<br /><br />Sub Activity_Resume<br />    If admin.IsEnabled = False Then<br />        If admin.Enable = False Then<br />            ShowMessageAsync(&quot;Nie udało się włączyć Bluetooth&quot;, &quot;Błąd&quot;)<br />        Else<br />            ShowMessageAsync(&quot;Włączam adapter Bluetooth...&quot;, &quot;Informacja&quot;)<br />        End If<br />    Else<br />        admin_StateChanged(admin.STATE_ON, 0)<br />    End If<br />End Sub<br /><br />Sub Activity_Pause (UserClosed As Boolean)<br />    If UserClosed Then<br />        If ast.IsInitialized Then ast.Close<br />        serial1.Disconnect<br />        Activity.Finish<br />        ExitApplication<br />    End If<br />End Sub<br /><br />Sub admin_StateChanged(NewState As Int, OldState As Int)<br />    If NewState = admin.STATE_ON Then<br />        ShowMessageAsync(&quot;Bluetooth włączony&quot;, &quot;Informacja&quot;)<br />    Else If NewState = admin.STATE_OFF Then<br />        ShowMessageAsync(&quot;Bluetooth wyłączony&quot;, &quot;Informacja&quot;)<br />    End If<br />End Sub<br /><br />Sub admin_DiscoveryFinished<br />    ProgressDialogHide<br />    If foundDevices.Size = 0 Then<br />        ShowMessageAsync(&quot;Nie znaleziono urządzenia BT.&quot; &amp; CRLF &amp; &quot;Spróbuj ponownie&quot;, &quot;Błąd&quot;)<br />    Else<br />        Dim IL As List<br />        IL.Initialize<br />        For i = 0 To foundDevices.Size - 1<br />            Dim nm As NameAndMac<br />            nm = foundDevices.Get(i)<br />            IL.Add(nm.Name)<br />        Next<br />        Dim res As Int<br />        res = InputList(IL, &quot;Wybierz urządzenie z listy&quot;, -1)<br />        If res &lt;&gt; DialogResponse.CANCEL Then<br />            connectedDevice = foundDevices.Get(res)<br />            ProgressDialogShow(&quot;Próba połączenia z: &quot; &amp; CRLF &amp; connectedDevice.Name &amp; CRLF &amp; &quot;MAC ADR (&quot; &amp; connectedDevice.Mac &amp; &quot;)&quot;)<br />            serial1.Connect(connectedDevice.Mac)<br />        End If<br />    End If<br />End Sub<br /><br />Sub admin_DeviceFound(Name As String, MacAddress As String)<br />    Dim nm As NameAndMac<br />    nm.Initialize<br />    nm.Name = Name<br />    nm.Mac = MacAddress<br />    foundDevices.Add(nm)<br />    ProgressDialogShow(&quot;Poszukiwanie urządzeń (znaleziono &quot; &amp; foundDevices.Size &amp; &quot;)...&quot;)<br />End Sub<br /><br />Sub serial1_Connected(Success As Boolean)<br />    ProgressDialogHide<br />   <br />    If Success Then<br />        ShowMessageAsync(&quot;Połączono pomyślnie BT&quot;, &quot;Informacja&quot;)<br />        connected = True<br />       <br />        If ast.IsInitialized Then ast.Close<br />        ast.Initialize(Me, &quot;ast&quot;, serial1.InputStream, serial1.OutputStream)<br />    Else<br />        connected = False<br />        ShowMessageAsync(&quot;Problem z połączeniem&quot;, &quot;Błąd&quot;)<br />    End If<br />   <br />    enable_controls(connected)<br />End Sub<br /><br />Sub serial1_Disconnected<br />    If ast.IsInitialized Then ast.Close<br />    connected = False<br />    enable_controls(False)<br />End Sub<br /><br />Sub vr_Result(Success As Boolean, Texts As List)<br />    If Success Then<br />        If connected Then<br />            Dim str As String<br />            str = Texts.Get(0)<br />            ast.Write(str &amp; Chr(13) &amp; Chr(10))<br />        End If<br />    End If<br />End Sub<br /><br />Sub ast_NewText(Text As String)<br />    edtLog.Text = Text<br />    tts.Speak(Text, False)<br />End Sub<br /><br />Sub ast_Terminated<br />    ShowMessageAsync(&quot;Połączenie zerwane!&quot;, &quot;Informacja&quot;)<br />End Sub<br /><br />Sub enable_controls(onoff As Boolean)<br />    btnSend.Enabled = onoff<br />    edtText.Enabled = onoff<br />    edtLog.Enabled = onoff<br />   <br />    btnConnect.Enabled = Not(onoff)<br />    btnSearch.Enabled = Not(onoff)<br />    btnDisconnect.Enabled = onoff<br />   <br />    If onoff Then<br />        Activity.Title = &quot;BT TERMINAL (połączono)&quot;<br />        btnSend.TextColor = Colors.Cyan<br />        btnDisconnect.TextColor = Colors.Red<br />        btnConnect.TextColor = Colors.Gray<br />        btnSearch.TextColor = Colors.Gray<br />    Else<br />        Activity.Title = &quot;BT TERMINAL (brak połączenia)&quot;<br />        btnSend.TextColor = Colors.Gray<br />        btnDisconnect.TextColor = Colors.Gray<br />        btnConnect.TextColor = 0xff00ff00<br />        btnSearch.TextColor = 0xffff00ff<br />    End If<br />End Sub<br /><br />Sub btnSend_Click<br />    If connected Then<br />        If edtText.Text = &quot;&quot; Then<br />            vr.Prompt = &quot;Powiedz coś&quot;<br />            vr.Listen<br />            Return<br />        End If<br />       <br />        ast.Write(edtText.Text &amp; Chr(13) &amp; Chr(10))<br />        edtText.Text = &quot;&quot;<br />        edtText.RequestFocus<br />    End If<br />End Sub<br /><br />Sub btnConnect_Click<br />    Dim pairedDevices As Map<br />    pairedDevices = serial1.GetPairedDevices<br />    Dim IL As List<br />    IL.Initialize<br />    For i = 0 To pairedDevices.Size - 1<br />        IL.Add(pairedDevices.GetKeyAt(i))<br />    Next<br />    Dim res As Int<br />    res = InputList(IL, &quot;Wybierz urządzenie&quot;, -1)<br />    If res &lt;&gt; DialogResponse.CANCEL Then<br />        serial1.Connect(pairedDevices.Get(IL.Get(res)))<br />    End If<br />End Sub<br /><br />Sub btnSearch_Click<br />    foundDevices.Initialize<br />    If admin.StartDiscovery = False Then<br />        ShowMessageAsync(&quot;Błąd wyszukiwania urządzeń BT!&quot;, &quot;Błąd&quot;)<br />    Else<br />        ShowMessageAsync(&quot;Poszukiwanie urządzeń BT...&quot;, &quot;Informacja&quot;)<br />    End If<br />End Sub<br /><br />Sub btnDisconnect_Click<br />    If ast.IsInitialized Then ast.Close<br />    serial1.Disconnect<br />    edtText.Text = &quot;&quot;<br />    edtLog.Text = &quot;&quot;<br />   <br />    connected = False<br />    enable_controls(False)<br />End Sub<br /><br />Sub Activity_PermissionResult (Permission As String, Result As Boolean)<br />    If Result = False Then<br />        ShowMessageAsync(&quot;Nie przyznano uprawnienia: &quot; &amp; Permission, &quot;Błąd&quot;)<br />    End If<br />End Sub<br /><br />Sub ShowMessageAsync (Message As<br /><br /> String, Title As String)<br />    dialog.Initialize(Activity)<br />    Wait For (dialog.Show(Message, Title, &quot;&quot;, &quot;OK&quot;)) Complete (Result As Int)<br />End Sub<br /><br />' Moduł klasy AsyncStreamsText<br />Sub Class_Globals<br />    Private mTarget As Object<br />    Private mEventName As String<br />    Private astreams As AsyncStreams<br />    Public charset As String = &quot;UTF8&quot;<br />    Private sb As StringBuilder<br />End Sub<br /><br />Public Sub Initialize(TargetModule As Object, EventName As String, In As InputStream, out As OutputStream)<br />    mTarget = TargetModule<br />    mEventName = EventName<br />    astreams.Initialize(In, out, &quot;astreams&quot;)<br />    sb.Initialize<br />End Sub<br /><br />'Sends the text. Note that this method does not add end of line characters.<br />Public Sub Write(Text As String)<br />    astreams.Write(Text.GetBytes(charset))<br />End Sub<br /><br />Private Sub astreams_NewData(Buffer() As Byte)<br />    Dim newDataStart As Int = sb.Length<br />    sb.Append(BytesToString(Buffer, 0, Buffer.Length, charset))<br />    Dim s As String = sb.ToString<br />    Dim start As Int = 0<br />    For i = newDataStart To s.Length - 1<br />        Dim c As Char = s.CharAt(i)<br />        If i = 0 And c = Chr(10) Then '\n...<br />            start = 1 'might be a broken end of line character<br />            Continue<br />        End If<br />        If c = Chr(10) Then '\n<br />            CallSubDelayed2(mTarget, mEventName &amp; &quot;_NewText&quot;, s.SubString2(start, i))<br />            start = i + 1<br />        Else If c = Chr(13) Then '\r<br />            CallSubDelayed2(mTarget, mEventName &amp; &quot;_NewText&quot;, s.SubString2(start, i))<br />            If i &lt; s.Length - 1 And s.CharAt(i + 1) = Chr(10) Then '\r\n<br />                i = i + 1<br />            End If<br />            start = i + 1<br />        End If<br />    Next<br />    If start &gt; 0 Then sb.Remove(0, start)<br />End Sub<br /><br />Private Sub astreams_Terminated<br />    CallSubDelayed(mTarget, mEventName &amp; &quot;_Terminated&quot;)<br />End Sub<br /><br />Private Sub astreams_Error<br />    Log(&quot;error: &quot; &amp; LastException)<br />    astreams.Close<br />    CallSubDelayed(mTarget, mEventName &amp; &quot;_Terminated&quot;)<br />End Sub<br /><br />Public Sub Close<br />    astreams.Close<br />End Sub[/syntax]7<br /><br /> to nie ja - to ChatGPT.... Jak widzisz brakuje odpowiednich uprawnień... Czy to zadziała? spróbuj...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18769">tfosik</a> — 11 lip 2024, o 21:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mario20]]></name></author>
<updated>2024-06-01T18:07:48+01:00</updated>
<published>2024-06-01T18:07:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24653&amp;p=238123#p238123</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24653&amp;p=238123#p238123"/>
<title type="html"><![CDATA[Problem z aplkacja BT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24653&amp;p=238123#p238123"><![CDATA[
Witam,<br />Chciałem przepisać aplikacje terminal tego twojego na nowego androida ale utknąłem i nie wiem co mam robić dalej .<br />W załączniku przesyłam cody poprawki napisz czy idę w dobra stronę .Proszę o pomoc .<br />Program jest czysto do celów prywatnych .<br />Oto poprawka <br />[syntax=c]#Region  Activity Attributes <br />    #FullScreen: False<br />    #IncludeTitle: True<br />#End Region<br /><br />Sub Process_Globals<br />    'Globalne zmienne deklarowane raz przy starcie aplikacji.<br />    'Te zmienne mogą być dostępne z wszystkich modułów.<br />    Dim admin As BluetoothAdmin<br />    Dim serial1 As Serial<br />    Dim foundDevices As List<br />    Type NameAndMac(Name As String, Mac As String)<br />    Dim connectedDevice As NameAndMac<br />    <br />    Dim connected As Boolean<br />    Dim ast As AsyncStreamsText<br />    Dim tts As TTS<br />    Dim rp As RuntimePermissions<br />    Dim xui As XUI<br />End Sub<br /><br />Sub Globals<br />    'Te zmienne globalne będą deklarowane za każdym razem, gdy aktywność jest tworzona.<br />    'Te zmienne mogą być dostępne tylko z tego modułu.<br /><br />    Private btnSend As Button<br />    Private edtText As EditText<br />    Private edtLog As EditText<br />    Private btnConnect As Button<br />    Private btnSearch As Button<br />    Private btnDisconnect As Button<br />    Private vr As VoiceRecognition<br />    Private dialog As B4XDialog<br />    Private dialogPanel As B4XView<br />    <br />    'Deklaracje zdarzeń<br />    #Event: NewText (Text As String)<br />    #Event: Terminated<br />End Sub<br /><br />Sub Activity_Create(FirstTime As Boolean)<br />    'Nie zapomnij załadować pliku układu utworzonego za pomocą projektanta wizualnego.<br />    Activity.LoadLayout(&quot;1&quot;)<br />    Activity.Title = &quot; BT TERMINAL (brak połączenia)&quot;<br />    <br />    vr.Initialize(&quot;vr&quot;)<br />    tts.Initialize(&quot;tts&quot;)<br />    dialog.Initialize(Activity)<br />    <br />    If FirstTime Then<br />        connected = False<br />        admin.Initialize(&quot;admin&quot;)<br />        serial1.Initialize(&quot;Serial1&quot;)<br />        CheckPermissions<br />    End If<br />    <br />    enable_controls(connected)<br />End Sub<br /><br />Sub CheckPermissions<br />    If rp.Check(rp.PERMISSION_ACCESS_FINE_LOCATION) = False Then<br />        rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)<br />    End If<br />    If rp.Check(rp.PERMISSION_RECORD_AUDIO) = False Then<br />        rp.CheckAndRequest(rp.PERMISSION_RECORD_AUDIO)<br />    End If<br /><br />    ' Dla nowszych wersji Androida wymagamy dodatkowych uprawnień Bluetooth<br />    If rp.Check(&quot;android.permission.BLUETOOTH_SCAN&quot;) = False Then<br />        rp.CheckAndRequest(&quot;android.permission.BLUETOOTH_SCAN&quot;)<br />    End If<br />    If rp.Check(&quot;android.permission.BLUETOOTH_CONNECT&quot;) = False Then<br />        rp.CheckAndRequest(&quot;android.permission.BLUETOOTH_CONNECT&quot;)<br />    End If<br />End Sub<br /><br />Sub Activity_Resume<br />    If admin.IsEnabled = False Then<br />        If admin.Enable = False Then<br />            ShowMessageAsync(&quot;Nie udało się włączyć Bluetooth&quot;, &quot;Błąd&quot;)<br />        Else<br />            ShowMessageAsync(&quot;Włączam adapter Bluetooth...&quot;, &quot;Informacja&quot;)<br />        End If<br />    Else<br />        admin_StateChanged(admin.STATE_ON, 0)<br />    End If<br />End Sub<br /><br />Sub Activity_Pause(UserClosed As Boolean)<br />    If UserClosed Then<br />        If ast.IsInitialized Then ast.Close<br />        serial1.Disconnect<br />        Activity.Finish<br />        ExitApplication<br />    End If<br />End Sub<br /><br />'------------------- Bluetooth ----------------------------<br />Sub admin_StateChanged(NewState As Int, OldState As Int)<br />    If NewState = admin.STATE_ON Then<br />        ShowMessageAsync(&quot;Bluetooth włączony&quot;, &quot;Informacja&quot;)<br />    Else If NewState = admin.STATE_OFF Then<br />        ShowMessageAsync(&quot;Bluetooth wyłączony&quot;, &quot;Informacja&quot;)<br />    End If<br />End Sub<br /><br />Sub admin_DiscoveryFinished<br />    ProgressDialogHide<br />    If foundDevices.Size = 0 Then<br />        ShowMessageAsync(&quot;Nie znaleziono urządzenia BT.&quot; &amp; CRLF &amp; &quot;Spróbuj ponownie&quot;, &quot;Błąd&quot;)<br />    Else<br />        Dim IL As List<br />        IL.Initialize<br />        For i = 0 To foundDevices.Size - 1<br />            Dim nm As NameAndMac<br />            nm = foundDevices.Get(i)<br />            IL.Add(nm.Name)<br />        Next<br />        Dim res As Int<br />        res = InputList(IL, &quot;Wybierz urządzenie z listy&quot;, -1)<br />        If res &lt;&gt; DialogResponse.CANCEL Then<br />            connectedDevice = foundDevices.Get(res)<br />            ProgressDialogShow(&quot;Próba połączenia z: &quot; &amp; CRLF &amp; connectedDevice.Name &amp; CRLF &amp; &quot;MAC ADR (&quot; &amp; connectedDevice.Mac &amp; &quot;)&quot;)<br />            serial1.Connect(connectedDevice.Mac)<br />        End If<br />    End If<br />End Sub<br /><br />Sub admin_DeviceFound(Name As String, MacAddress As String)<br />    Dim nm As NameAndMac<br />    nm.Initialize<br />    nm.Name = Name<br />    nm.Mac = MacAddress<br />    foundDevices.Add(nm)<br />    ProgressDialogShow(&quot;Poszukiwanie urządzeń (znaleziono &quot; &amp; foundDevices.Size &amp; &quot;)...&quot;)<br />End Sub<br /><br />'---------------------- Obsługa serial1 -----------------------<br />Sub serial1_Connected(Success As Boolean)<br />    ProgressDialogHide<br />    <br />    If Success Then<br />        ShowMessageAsync(&quot;Połączono pomyślnie BT&quot;, &quot;Informacja&quot;)<br />        connected = True<br />        <br />        If ast.IsInitialized Then ast.Close<br />        ast.Initialize(Me, &quot;ast&quot;, serial1.InputStream, serial1.OutputStream)<br />    Else<br />        connected = False<br />        ShowMessageAsync(&quot;Problem z połączeniem&quot;, &quot;Błąd&quot;)<br />    End If<br />    <br />    enable_controls(connected)<br />End Sub<br /><br />'------------------ Obsługa Voice Recognition - rozpoznawania głosu -----<br />Sub vr_Result(Success As Boolean, Texts As List)<br />    If Success Then<br />        If connected Then<br />            Dim str As String<br />            str = Texts.Get(0)<br />            ast.Write(str &amp; Chr(13) &amp; Chr(10))<br />        End If<br />    End If<br />End Sub<br /><br />'-------------------- Obsługa zdarzeń strumieniowania ---------------<br />Sub ast_NewText(Text As String)<br />    edtLog.Text = Text<br />    tts.Speak(Text, False)<br />End Sub<br /><br />Sub ast_Terminated<br />    ShowMessageAsync(&quot;Połączenie zerwane!&quot;, &quot;Informacja&quot;)<br />End Sub<br /><br />'-------------------- Funkcje użytkowe ogólne ------------<br />Sub enable_controls(onoff As Boolean)<br />    btnSend.Enabled = onoff<br />    edtText.Enabled = onoff<br />    edtLog.Enabled = onoff<br />    <br />    btnConnect.Enabled = Not(onoff)<br />    btnSearch.Enabled = Not(onoff)<br />    btnDisconnect.Enabled = onoff<br />    <br />    If onoff Then<br />        Activity.Title = &quot;ATNEL BT (połączono)&quot;<br />        btnSend.TextColor = Colors.Cyan<br />        btnDisconnect.TextColor = Colors.Red<br />        btnConnect.TextColor = Colors.Gray<br />        btnSearch.TextColor = Colors.Gray<br />    Else<br />        Activity.Title = &quot;ATNEL BT (brak połączenia)&quot;<br />        btnSend.TextColor = Colors.Gray<br />        btnDisconnect.TextColor = Colors.Gray<br />        btnConnect.TextColor = 0xff00ff00<br />        btnSearch.TextColor = 0xffff00ff<br />    End If<br />End Sub<br /><br />'----------------- Procedury obsługi klawiszy ----------------<br />Sub btnSend_Click<br />    If connected Then<br />        If edtText.Text = &quot;&quot; Then<br />            vr.Prompt = &quot;Powiedz coś&quot;<br />            vr.Listen<br />            Return<br />        End If<br />        <br />        ast.Write(edtText.Text &amp; Chr(13) &amp; Chr(10))<br />        edtText.Text = &quot;&quot;<br />        edtText.RequestFocus<br />    End If<br />End Sub<br /><br />Sub btnConnect_Click<br />    Dim pairedDevices As Map<br />    pairedDevices = serial1.GetPairedDevices<br />    Dim IL As List<br />    IL.Initialize<br />    For i = 0 To pairedDevices.Size - 1<br />        IL.Add(pairedDevices.GetKeyAt(i))<br />    Next<br />    Dim res As Int<br />    res = InputList(IL, &quot;Wybierz urządzenie&quot;, -1)<br />    If res &lt;&gt; DialogResponse.CANCEL Then<br />        serial1.Connect(pairedDevices.Get(IL.Get(res)))<br />    End If<br />End Sub<br /><br />Sub btnSearch_Click<br />    foundDevices.Initialize<br />    If admin.StartDiscovery = False Then<br />        ShowMessageAsync(&quot;Błąd wyszukiwania urządzeń BT!&quot;, &quot;Błąd&quot;)<br />    Else<br />        ShowMessageAsync(&quot;Poszukiwanie urządzeń BT...&quot;, &quot;Informacja&quot;)<br />    End If<br />End Sub<br /><br />Sub btnDisconnect_Click<br />    If ast.IsInitialized Then ast.Close<br />    serial1.Disconnect<br />    edtText.Text = &quot;&quot;<br />    edtLog.Text = &quot;&quot;<br />    <br />    connected = False<br />    enable_controls(False)<br />End Sub<br /><br />Sub Activity_PermissionResult (Permission As String, Result As Boolean)<br />    If Result = False Then<br />        ShowMessageAsync(&quot;Nie przyznano uprawnienia: &quot; &amp; Permission, &quot;Błąd&quot;)<br />    End If<br />End Sub<br /><br />'-------------------- Metody asynchroniczne dla wiadomości ----------------<br />Sub ShowMessageAsync (Message As String, Title As String)<br />    dialog.Initialize(Activity)<br />    Wait For (dialog.Show(Message, Title, &quot;&quot;, &quot;OK&quot;)) Complete (Result As Int)<br />End Sub<br /><br />' wersja: 1.00<br />' Moduł klasy<br />Sub Class_Globals<br />    Private mTarget As Object<br />    Private mEventName As String<br />    Private astreams As AsyncStreams<br />    Public charset As String = &quot;UTF8&quot;<br />    Private sb As StringBuilder<br />End Sub<br /><br />Public Sub Initialize(TargetModule As Object, EventName As String, In As InputStream, out As OutputStream)<br />    mTarget = TargetModule<br />    mEventName = EventName<br />    astreams.Initialize(In, out, &quot;astreams&quot;)<br />    sb.Initialize<br />End Sub<br /><br />'Sends the text. Note that this method does not add end of line characters.<br />Public Sub Write(Text As String)<br />    astreams.Write(Text.GetBytes(charset))<br />End Sub<br /><br />Private Sub astreams_NewData(Buffer() As Byte)<br />    Dim newDataStart As Int = sb.Length<br />    sb.Append(BytesToString(Buffer, 0, Buffer.Length, charset))<br />    Dim s As String = sb.ToString<br />    Dim start As Int = 0<br />    For i = newDataStart To s.Length - 1<br />        Dim c As Char = s.CharAt(i)<br />        If i = 0 And c = Chr(10) Then '\n...<br />            start = 1 'might be a broken end of line character<br />            Continue<br />        End If<br />        If c = Chr(10) Then '\n<br />            CallSubDelayed2(mTarget, mEventName &amp; &quot;_NewText&quot;, s.SubString2(start, i))<br />            start = i + 1<br />        Else If c = Chr(13) Then '\r<br />            CallSubDelayed2(mTarget, mEventName &amp; &quot;_NewText&quot;, s.SubString2(start, i))<br />            If i &lt; s.Length - 1 And s.CharAt(i + 1) = Chr(10) Then '\r\n<br />                i = i + 1<br />            End If<br />            start = i + 1<br />        End If<br />    Next<br />    If start &gt; 0 Then sb.Remove(0, start)<br />End Sub<br /><br />Private Sub astreams_Terminated<br />    CallSubDelayed(mTarget, mEventName &amp; &quot;_Terminated&quot;)<br />End Sub<br /><br />Private Sub astreams_Error<br />    Log(&quot;error: &quot; &amp; LastException)<br />    astreams.Close<br />    CallSubDelayed(mTarget, mEventName &amp; &quot;_Terminated&quot;)<br />End Sub<br /><br />Public Sub Close<br />    astreams.Close<br />End Sub[/syntax]<br />AsyncStrimsText[syntax=c]' wersja: 1.00<br />' Moduł klasy<br /><br />Sub Process_Globals<br />End Sub<br /><br />Sub Class_Globals<br />Private mTarget As Object<br />Private mEventName As String<br />Private astreams As AsyncStreams<br />Public charset As String = &quot;UTF8&quot;<br />Private sb As StringBuilder<br />End Sub<br /><br />Public Sub Initialize(TargetModule As Object, EventName As String, In As InputStream, out As OutputStream)<br />mTarget = TargetModule<br />mEventName = EventName<br />astreams.Initialize(In, out, &quot;astreams&quot;)<br />sb.Initialize<br />End Sub<br /><br />'Sends the text. Note that this method does not add end of line characters.<br />Public Sub Write(Text As String)<br />astreams.Write(Text.GetBytes(charset))<br />End Sub<br /><br />Private Sub astreams_NewData(Buffer() As Byte)<br />Dim newDataStart As Int = sb.Length<br />sb.Append(BytesToString(Buffer, 0, Buffer.Length, charset))<br />Dim s As String = sb.ToString<br />Dim start As Int = 0<br />For i = newDataStart To s.Length - 1<br />Dim c As Char = s.CharAt(i)<br />If i = 0 And c = Chr(10) Then '\n...<br />start = 1 'might be a broken end of line character<br />Continue<br />End If<br />If c = Chr(10) Then '\n<br />CallSubDelayed2(mTarget, mEventName &amp; &quot;_NewText&quot;, s.SubString2(start, i))<br />start = i + 1<br />Else If c = Chr(13) Then '\r<br />CallSubDelayed2(mTarget, mEventName &amp; &quot;_NewText&quot;, s.SubString2(start, i))<br />If i &lt; s.Length - 1 And s.CharAt(i + 1) = Chr(10) Then '\r\n<br />i = i + 1<br />End If<br />start = i + 1<br />End If<br />Next<br />If start &gt; 0 Then sb.Remove(0, start)<br />End Sub<br /><br />Private Sub astreams_Terminated<br />CallSubDelayed(mTarget, mEventName &amp; &quot;_Terminated&quot;)<br />End Sub<br /><br />Private Sub astreams_Error<br />Log(&quot;error: &quot; &amp; LastException)<br />astreams.Close<br />CallSubDelayed(mTarget, mEventName &amp; &quot;_Terminated&quot;)<br />End Sub<br /><br />Public Sub Close<br />astreams.Close<br />End Sub[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13822">Mario20</a> — 1 cze 2024, o 18:07</p><hr />
]]></content>
</entry>
</feed>