Ajuda com serial

Pedro inácio

New Member
Boas pessoal, estou a fazer um programa para trabalhar com o meu Arduino através do Android.
O programa é para ligar e desligar as portas do Arduino com checkbox, se a checkbox estiver Checked então a porta vais estar a "1" se não fica a "0"
o meu problema é que sou muito verde na programação e não sei como por o android a enviar o comando pela porta serial (bluetooth).
O codigo está assim
B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim admin As BluetoothAdmin
    Dim timer1 As Timer
    Dim serial1 As Serial
    Dim foundDevices As List
    Type NameAndMac (Name As String, Mac As String)
    Dim connectedDevice As NameAndMac
End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
Dim btnSearchForDevices As Button
    Dim btnAllowConnection As Button
    Dim Button1 As Button
    Dim Button2 As Button
    Dim CheckBox1 As CheckBox
    Dim CheckBox2 As CheckBox
    Dim CheckBox3 As CheckBox
    Dim HorizontalScrollView1 As HorizontalScrollView
    Dim CheckBox10 As CheckBox
    Dim CheckBox4 As CheckBox
    Dim CheckBox5 As CheckBox
    Dim CheckBox6 As CheckBox
    Dim CheckBox7 As CheckBox
    Dim CheckBox8 As CheckBox
    Dim CheckBox9 As CheckBox
    Dim EditText1 As EditText
    Dim CheckBox11 As CheckBox
    Dim CheckBox13 As CheckBox
    Dim CheckBox14 As CheckBox
    Dim CheckBox15 As CheckBox
    Dim CheckBox16 As CheckBox
    Dim CheckBox17 As CheckBox
    Dim CheckBox18 As CheckBox
    Dim CheckBox19 As CheckBox
    Dim CheckBox20 As CheckBox
    Dim CheckBox21 As CheckBox
    Dim CheckBox22 As CheckBox
    Dim CheckBox12 As CheckBox
    Dim avancarsbt As Button
    Dim CheckBox23 As CheckBox
    Dim ImageView1 As ImageView
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    'Activity.LoadLayout("Layout1")
    Msgbox("Obrigado por experimentar este programa.                      Com ele podemos comunicar com o Arduino Nano v3 atravez do Bluetooth", "Arduino NANO V3 BT")
    If FirstTime Then
        admin.Initialize("admin")
        serial1.Initialize("serial1")
    End If
    Activity.LoadLayout("1")
End Sub

Sub Activity_Resume
    btnSearchForDevices.Enabled = False
    btnAllowConnection.Enabled = False
    If admin.IsEnabled = False Then
        If admin.Enable = False Then
            ToastMessageShow("Error enabling Bluetooth adapter.", True)
        Else
            ToastMessageShow("Enabling Bluetooth adapter...", False)
            'the StateChanged event will be soon raised
        End If
    Else
        Admin_StateChanged(admin.STATE_ON, 0)
    End If
End Sub

Sub Admin_StateChanged (NewState As Int, OldState As Int)
    btnSearchForDevices.Enabled = (NewState = admin.STATE_ON)
    btnAllowConnection.Enabled = btnSearchForDevices.Enabled
End Sub

Sub Activity_Pause (UserClosed As Boolean)
    If UserClosed = True Then
        serial1.Disconnect
    End If
End Sub

Sub btnSearchForDevices_Click
    foundDevices.Initialize
    If admin.StartDiscovery    = False Then
        ToastMessageShow("Error starting discovery process.", True)
    Else
        ProgressDialogShow("Searching for devices...")
    End If
End Sub

Sub Admin_DiscoveryFinished
    ProgressDialogHide
    If foundDevices.Size = 0 Then
        ToastMessageShow("No device found.", True)
    Else
        Dim l As List
        l.Initialize
        For i = 0 To foundDevices.Size - 1
            Dim nm As NameAndMac
            nm = foundDevices.Get(i)
            l.Add(nm.Name)
        Next
        Dim res As Int
        res = InputList(l, "Choose device to connect", -1)
        If res <> DialogResponse.CANCEL Then
            connectedDevice = foundDevices.Get(res)
            ProgressDialogShow("Trying to connect to: " & connectedDevice.Name & " (" & connectedDevice.Mac & ")")
            serial1.Connect(connectedDevice.Mac)
        End If
    End If
End Sub

Sub Admin_DeviceFound (Name As String, MacAddress As String)
    Log(Name & ":" & MacAddress)
    Dim nm As NameAndMac
    nm.Name = Name
    nm.Mac = MacAddress
    foundDevices.Add(nm)
    ProgressDialogShow("Searching for devices (~ device found)...".Replace("~", foundDevices.Size))
End Sub

Sub btnAllowConnection_Click
    'this intent makes the device discoverable for 300 seconds.
    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

Sub Serial1_Connected (Success As Boolean)
    ProgressDialogHide
    Log("connected: " & Success)
    If Success = False Then
        Log(LastException.Message)
        ToastMessageShow("Error connecting: " & LastException.Message, True)
    Else
        'StartActivity(ChatActivity)
        'StartActivity(nanocomand)
    End If
End Sub

Sub avancarsbt_Click
    Activity.LoadLayout("2")
    'StartActivity(nanocomand)
End Sub

Sub CheckBox23_CheckedChange(Checked As Boolean)
    Activity.LoadLayout("1")
End Sub

Sub ImageView1_Click
  
End Sub

Sub ImageView1_LongClick
  
End Sub

Sub CheckBox0_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox1_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox2_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox3_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox4_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox5_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox6_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox7_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox8_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox9_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox10_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox11_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox12_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox13_CheckedChange(Checked As Boolean)
If Checked = True Then
    'codigo
Else
    'codigo
End If
End Sub

Sub CheckBox14_CheckedChange(Checked As Boolean)
  
End Sub
Sub CheckBox15_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox16_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox17_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox18_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox19_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox20_CheckedChange(Checked As Boolean)
  
End Sub

Sub CheckBox21_CheckedChange(Checked As Boolean)
  
End Sub

neste caso eu julgo que o que falta tem de ser posto aqui (se quiser ligar a porta 13):
B4X:
Sub CheckBox13_CheckedChange(Checked As Boolean)
If Checked = True Then
    'codigo
Else
    'codigo
End If
End Sub

mas tenho a sensação que tenho de fazer mais alguma configuração, tenho tentado ver os tutorials mas não percebo nada do que eles explicam.

Vai em anexo a pasta do projecto para que quiser experimentar o que está feito.
Agradecia uma ajuda da vossa parte.

Cumprimentos,
Pedro Inácio
 

Attachments

  • Serial Teste.zip
    454.8 KB · Views: 309

Pedro inácio

New Member
XXXXIIIIIII já vi que aqui isto anda morto por aqui.
mesmo assim vou tentar mais uma vez.
será que alguem me pode dizer os passos que tenho que dar para enviat um bite pela porta serial, tipo:
1º - declarar a porta em glogais xxxx
2º - xxxxxxxxxxxx
3º - xxxxxx

cumprimentos,
Pedro Inácio
 

Cableguy

Expert
Licensed User
Longtime User
Desculpa a demora na resposta.
Tens alguma razao quando dizes que "isto por aqui anda morto", uma vez que podem passar-se meses sem um post no forum português.

Quanto á tua questão, existe uma libraria que trabalha com a board IOIO, e que tambem funciona com bluetooth.
Quanto ao arduino, uma vez que existem modulos arduino compativeis com IOIO, será uma questao de explorares.
Se ainda assim nao conseguires que funcione com a tua placa, coloca as tuas duvidas no Post da libraria IOIO e o Graham concerteza te ajudará.
 

Cableguy

Expert
Licensed User
Longtime User
Vendo o teu código, e uma vez que nunca tentei comunicação por bluetooth, a tua tentativa de ligação ao modulo é bem sucedida?
que tipo de comando espera o teu modulo?
que linguagem ele usa?

Formei-me em electronica mas nunca tive oportunidade de exercer, e já vao uns anos que nao mexo em nada, talvez seja um bom desafio tentar te ajudar

Dá me mais pormenores sobre a placa e sobre o que pretendes executar
 

Pedro inácio

New Member
Ora bem!
Eu consigo procurar dispositivos e fazer a ligação, o problema é que essa parte de codigo foi copiada de um exemplo e não percebi a parte de código.
o que eu agora preciso de fazer é enviar um comando qualquer por exemplo "1" faço check numa das checkbox.
não é preciso saber trabalhar com o arduino para isto, basta saber como por o basic4android enviar bites pela porta serial.
Eu tb não sou pro nem lá perto em electrónica, apenas sou um curioso e vou gastando algum dinheiro com isto para brincar e passar o tempo.

a parte do programa é só defenir um comando para ser enviado para cada porta (na checkbox1 envia "1" ficar chekada e e "a" se for desligada),
a parte de programação do arduino já é diferente, tem de ser feita em c++ ou flowcode ou com o ide do arduino, mas é fácil tambem.
resumindo, só quero saber como configurar a porta serial no programa (Basic4androi).
 

Cableguy

Expert
Licensed User
Longtime User
Ola de novo ...

Dentro do IDE, no menu FILE, tens uma opcão Export as Zip.
Isso vai criar um ficheiro zip com o código, e os ficheiros necessários a tua aplicação. As livrarias não são incluídas no zip
 
Top