Gambas - Problemas con la comunicación por el puerto serie

 
Vista:
sin imagen de perfil
Val: 21
Ha mantenido su posición en Gambas (en relación al último mes)
Gráfica de Gambas

Problemas con la comunicación por el puerto serie

Publicado por José Luis (16 intervenciones) el 10/06/2018 12:18:31
Buenos días,

He empezado a trabajar con el puerto serie en Gambas y tengo un pronelam. Quiero hacer un pequeño monitot del ouerto serie, que vaya escribiendo en un TextArea lo que va enviando un dispositivo por el puerto serie. Para testearlo estoy usando un Arduino Uno que cada segundo va enviando una linea que dice "El valor es: " y a continuación envía un valor que es la lectura de una entrada analógica del Arduino uno y hace un salto de linea. El programa no va fino del todo, me caza unas cuantas líneas y luego se para y no lee más.

A continuación os dejo el código, a ver si alguien me puede decir que es lo que hago mal, tengo un Form1 del que no dejo el código que se dedica a leer los parámetros del puerto serie, copio el código del Form2 que es el que abre el puerto serie y trata de leer los datos

Gracias por viestra ayuda. Saludos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
' Gambas class file

Private Sp As New SerialPort


Public Sub Form_Open()
  Form2.Text = Form1.Puerto
  ToggleButton1.Text = "Connect"
  ToggleButton1.Width = 100
  ToggleButton1.x = Form2.Width / 2 - 50
  ToggleButton1.y = 15
  TextArea1.Width = Form2.Width
  TextArea1.Height = Form2.Height - 50
  TextArea1.x = 0
  TextArea1.y = 50
End
Public Sub Form_Resize()
  ToggleButton1.x = Form2.Width / 2 - 50
  ToggleButton1.y = 15
  TextArea1.Width = Form2.Width
  TextArea1.Height = Form2.Height - 50
  TextArea1.x = 0
  TextArea1.y = 50
  
End

Public Sub SComm_Read()
Dim Rx As String
 Sleep 0.01
 Try Read #Sp, Rx, Lof(Sp)
  If Error Then
    Message.info("No received data!", "Ok")
  Endif
  If Len(Rx) > Sp.DataBits Then
    TextArea1.Text = CStr(Rx)
  End If
End

Public Sub ToggleButton1_Click()
  If ToggleButton1.Text = "Connect" Then  'Si te la etiqueta Connect
    ToggleButton1.Text = "Disconnect"
    Sp.PortName = Form1.Puerto            'Carreguem el nom del port
    Sp.Speed = Val(Form1.Baudios)         'Carreguem la velocitat del port
    Select Form1.Datos                    'Carreguem els bits de dades del port
      Case "6"
        Sp.DataBits = SerialPort.Bits6
      Case "7"
        Sp.DataBits = SerialPort.Bits7
      Case "8"
        Sp.DataBits = SerialPort.Bits8
    End Select
    Select Form1.Final                    'Carreguem els nits de stop del port
      Case "1"
        Sp.StopBits = SerialPort.Bits1
      Case "2"
        Sp.StopBits = SerialPort.Bits2
    End Select
    Select Form1.Paridad                    'Carreguem la paritat del port
      Case "None"
        Sp.Parity = SerialPort.None
      Case "Odd"
        Sp.Parity = SerialPort.Odd
      Case "Even"
        Sp.Parity = SerialPort.Even
    End Select
    '-----------------------------
        Sp.FlowControl = SerialPort.None
        If Sp.Status = Net.Active Then
        Close Sp
        Endif
    Try                                       'Intentem obrir el port
    Sp.Open
    
    If Error Then                             'Si dona error
      Message("No Serial Come Exiting...")    'Missatge d'error
      Quit                                    'Sortirm
    Endif
    SComm_Read
   
  Else
    ToggleButton1.Text = "Connect" 'Canviem la etiqueta del boto
    Sp.Close                       'Tanquem el port
  Endif

End
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder