Bonjour,
Mon cahier des charges est de recevoir des données d'une trame provenant d'un arduino qu'on doit récupérer sur une application android avec B4A. On doit faire ça par liaison série RS232, donc pas de Bluetooth ou de WiFi (cahier des charges oblige...)
Durant mes recherches, je suis arrivé à plusieurs solutions que j'ai ensuite testé.De ce fait, il peut y avoir des choses totalement inutile étant donné que j'ai pris beaucoup de choses sans vraiment savoir à quoi ca correspond.
Pour commencer, j'envoie un simple caractère donc a,b,c, etc... L'application gère très bien une lettre. Lorsque j'envoie 3 caractères, 1 fois sur 5 on a qu'un seul ou deux caractères qui est réceptionné et non 3. Bizarrement et sans comprendre pourquoi, on a trouvé que, lorsqu'on augmente les bauds, passant de 9600 à 115200bauds, les trois caractères s'affichent correctement. Or, quand on passe sur une trame de 12 caractères, le problème est de nouveau là. C'est à dire qu'on reçoit par moment qu'un ou deux caractères au lieu de toute la trame.
Voici le code Arduino ainsi que le code B4A ci dessous :
Code Arduino :
Code B4A :
Mon cahier des charges est de recevoir des données d'une trame provenant d'un arduino qu'on doit récupérer sur une application android avec B4A. On doit faire ça par liaison série RS232, donc pas de Bluetooth ou de WiFi (cahier des charges oblige...)
Durant mes recherches, je suis arrivé à plusieurs solutions que j'ai ensuite testé.De ce fait, il peut y avoir des choses totalement inutile étant donné que j'ai pris beaucoup de choses sans vraiment savoir à quoi ca correspond.
Pour commencer, j'envoie un simple caractère donc a,b,c, etc... L'application gère très bien une lettre. Lorsque j'envoie 3 caractères, 1 fois sur 5 on a qu'un seul ou deux caractères qui est réceptionné et non 3. Bizarrement et sans comprendre pourquoi, on a trouvé que, lorsqu'on augmente les bauds, passant de 9600 à 115200bauds, les trois caractères s'affichent correctement. Or, quand on passe sur une trame de 12 caractères, le problème est de nouveau là. C'est à dire qu'on reçoit par moment qu'un ou deux caractères au lieu de toute la trame.
Voici le code Arduino ainsi que le code B4A ci dessous :
Code Arduino :
B4X:
int i, j;
char a = 'a';
void setup() {
Serial.begin(9600);
}
void loop() {
for (i = 0; i<26; i++){
for (j = 0; j<11; j++){
Serial.print(a);
}
Serial.println();
delay(1000);
a++;
}
a = 'a';
}
Code B4A :
B4X:
#Region Project Attributes
#ApplicationLabel: B4A Example
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#BridgeLogger: True
#End Region
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
Private usbserial As felUsbSerial
Private manager As UsbManager
Private bc As ByteConverter
Dim datachar As String
Dim NewFont As Typeface
Dim etat As Int = 0
NewFont = Typeface.LoadFromAssets("7 Segment.ttf")
End Sub
Sub Globals
Private Label1 As Label
Private Label2 As Label
Private Label3 As Label
Private Label4 As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout3")
Label1.Typeface = NewFont
If FirstTime Then
manager.Initialize
End If
Dim btnConnect As Button
btnConnect.Initialize("btnConnect")
btnConnect.Text = "Connect"
Activity.AddView(btnConnect, 10dip, 10dip, 100dip, 100dip)
End Sub
Sub btnConnect_Click
'Label1.Text="Vous avez clicke sur le boutton"
If manager.GetDevices.Length = 0 Then
Log("No connected usb devices.")
Else
Dim device As UsbDevice = manager.GetDevices(0) 'assuming that there is exactly one device
If manager.HasPermission(device) = False Then
ToastMessageShow("Please allow connection and click again.", True)
manager.RequestPermission(device)
Else
usbserial.Initialize("serial", device, -1)
usbserial.BaudRate = 9600
usbserial.DataBits = usbserial.DATA_BITS_8
usbserial.StartReading
End If
End If
End Sub
Private Sub serial_DataAvailable (Buffer() As Byte)
datachar = (bc.StringFromBytes(Buffer,"UTF8"))
If datachar = "" Then
Else
Label1.Text= Null
Label1.Text= datachar
End If
End Sub
Sub Label1_Click
End Sub