Forum - MCS Electronics

 

FAQFAQ SearchSearch RegisterRegister Log inLog in

Recept nul char / Bascom
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    www.mcselec.com Forum Index -> BASCOM-AVR
View previous topic :: View next topic  
Author Message
albertsm

Administrator



Joined: 09 Apr 2004
Posts: 5921
Location: Holland

blank.gif
PostPosted: Thu Mar 07, 2019 10:19 am    Post subject: Reply with quote

hi Pikczu

great work on the 4D display.
I noticed the printbin code. it has been asked multiple time and is high on the to do list. so i thought it is a good idea to get it done in 2082.
if you contact support i can deliver a test version when i am done with it.
the ideas :
printbin somevar ; 2 ; othervar ,numbytes ; thirdvar
this way the optional comma can be used to specify number of bytes

other option would be to add printbinX which is incompatible with printbin. like : printbinX somevar ; numbytes
that is it, just one parameter with optional num of bytes

i think the first alternative is the best.

_________________
Mark
Back to top
View user's profile Visit poster's website
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 72
Location: Dublin, Ireland

ireland.gif
PostPosted: Thu Mar 07, 2019 12:58 pm    Post subject: Reply with quote

Hi Mark,
Thank you, it is all possible because of you and your team.
So thank you for all the hard work during the years.

Quote:
printbin somevar ; 2 ; othervar ,numbytes ; thirdvar
this way the optional comma can be used to specify number of bytes

This sounds good.
My personal choice would be the printbinx but whatever option you chose I will be happy with it.

I will contact the support as per your advice.
Best regards
Pawel aka Pikczu
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 31

switzerland.gif
PostPosted: Tue Mar 12, 2019 5:12 pm    Post subject: Recept nul char / Bascom Reply with quote

Hi Pikczu
After a lot of trouble with my PC (no USB port works) I had to change it and reinstall the new one!
I am testing and trying to understand your program and for that I have defined in workschop4 1 coolgauge, 1 angularmeter and 1 4dbutton and 1 leddigits.
Leddigits, coolgauge and angularmeter work. but I can not read the state of the 4dbutton. here is the call of functions that I have imagined ....
it's just ?
Back to top
View user's profile
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 72
Location: Dublin, Ireland

ireland.gif
PostPosted: Tue Mar 12, 2019 10:26 pm    Post subject: Reply with quote

Hi Bernard
The buttons can be read by read_obj
(Which in my opinion doesn't have sense, maybe for toggle type of the button)
By calling this sub:
Code:
Sub 4d_read_obj(byval 4d_object_id As Byte , Byval 4d_object_index As Byte )
   'this should be a fuction

   4d_arr_tx(1) = Write_obj                                 '&h00 constant
   4d_arr_tx(2) = 4d_object_id                              'object ID as per constants
   4d_arr_tx(3) = 4d_object_index                           'object index
   Xor_crc = 4d_arr_tx(1) Xor 4d_arr_tx(2)                  'calculate the xor check sum
   Xor_crc = Xor_crc Xor 4d_arr_tx(3)

   4d_arr_tx(4) = Xor_crc
   Printbin #1 , 4d_arr_tx(1) ; 4                           'print binary  the final result
   Ack_flag.1 = 1                                           'for feature use
  'The response from the display should be Report_obj: &h05

End Sub

Results of the read object will be assigned to array in select case for Case Report_obj: '&H05
(I probably gonna make this a function so the value and index will be reported back.)


Other way is to simply check the events.
Events are checked in the do- loop by Ischarwaiting.
So if you simply set the flag in the select case: report_event: '&h07

Code:
Case 4dbutton:                            '30
                     4dbutton_idx = 4d_arr_rx(3)
                     4dbutton_val(1) = 4d_arr_rx(4)
                     4dbutton_val(2) = 4d_arr_rx(5)
                    Lcd "Event: 4dbutton "
'set your flag here
'then clear he values of 4dbutton_idx  and 4dbutton_val(2) after you finish
'the value will be only 0 or 1
 


Don't forget there is different type of the buttons 4dbuttons, user buttons, animated buttons and also windows button.
Make sure you are checking the correct ones.
Also they can send event just when you release them, or one event for touch and new event for the release.
Code:
 If Ischarwaiting(#1) = 1 Then
      Inputbin #1 , 4d_arr_rx(1) , 1
     ' Cls
      'Lcd "received= " ; 4d_arr_rx(1)

      Select Case 4d_arr_rx(1)                              'command
'*******************************************************************************
'****************************Object reports ***************************************
'*******************************************************************************
         Case Report_obj:                                   '&H05
            'If Ack_flag.1 = 1 Then                          'for feature use
               'Ack_flag.1 = 0
            'Else
               'lcd , " Error there was no &H05 request !"

            'End If
            Inputbin #1 , 4d_arr_rx(2) , 5                  'get next 5
            Xor_crc = Xor_this(4d_arr_rx(1))                ' check the crc
          '  Upperline
            If 4d_arr_rx(6) = Xor_crc Then                  'if crc ok then check what came
               Select Case 4d_arr_rx(2)                     'object ID
                  Case Dipswitch:                           '0
                     Dipswitch_idx = 4d_arr_rx(3)
                     Dipswitch_val(1) = 4d_arr_rx(4)
                     Dipswitch_val(2) = 4d_arr_rx(5)
                   '  Lcd "Dipswitch "
                  Case Knob:                                '1
                     Knob_idx = 4d_arr_rx(3)
                     Knob_val(1) = 4d_arr_rx(4)
                     Knob_val(2) = 4d_arr_rx(5)
                   '  Lcd "Knob "
                  Case Rockerswitch:                        '2
                     Rockerswitch_idx = 4d_arr_rx(3)
                     Rockerswitch_val(1) = 4d_arr_rx(4)
                     Rockerswitch_val(2) = 4d_arr_rx(5)
                   '  Lcd "Rockerswitch "
                  Case Rotaryswitch:                        '3
                     Rotaryswitch_idx = 4d_arr_rx(3)
                     Rotaryswitch_val(1) = 4d_arr_rx(4)
                     Rotaryswitch_val(2) = 4d_arr_rx(5)
                   '  Lcd "Rotaryswitch "
                  Case Slider:                              '4
                     Slider_idx = 4d_arr_rx(3)
                     Slider_val(1) = 4d_arr_rx(4)
                     Slider_val(2) = 4d_arr_rx(5)
                   '  Lcd "Slider "
                  Case Trackbar:                            '5
                     Trackbar_idx = 4d_arr_rx(3)
                     Trackbar_val(1) = 4d_arr_rx(4)
                     Trackbar_val(2) = 4d_arr_rx(5)
                    ' Lcd "Trackbar "
                  Case Winbutton:                           '6
                     Winbutton_idx = 4d_arr_rx(3)
                     Winbutton_val(1) = 4d_arr_rx(4)
                     Winbutton_val(2) = 4d_arr_rx(5)
                   '  Lcd "Winbutton "
                  Case Angularmeter:                        '7
                     Angularmeter_idx = 4d_arr_rx(3)
                     Angularmeter_val(1) = 4d_arr_rx(4)
                     Angularmeter_val(2) = 4d_arr_rx(5)
                    ' Lcd "Angularmeter "
                  Case Coolgauge:                           '8
                     Coolgauge_idx = 4d_arr_rx(3)
                     Coolgauge_val(1) = 4d_arr_rx(4)
                     Coolgauge_val(2) = 4d_arr_rx(5)
                   '  Lcd "Coolgauge "
                  Case Customdigits:                        '9
                     Customdigits_idx = 4d_arr_rx(3)
                     Customdigits_val(1) = 4d_arr_rx(4)
                     Customdigits_val(2) = 4d_arr_rx(5)
                   '  Lcd "Customdigits "
                  Case Form:                                '10
                     Form_idx = 4d_arr_rx(3)
                     Form_val(1) = 4d_arr_rx(4)
                     Form_val(2) = 4d_arr_rx(5)
                   '  Lcd "Form "
                  Case Gauge:                               '11
                     Gauge_idx = 4d_arr_rx(3)
                     Gauge_val(1) = 4d_arr_rx(4)
                     Gauge_val(2) = 4d_arr_rx(5)
                   '  Lcd "Gauge "
                  Case Image:                               '12
                  'Image_idx = 4d_arr_rx(3)
                  'Image_val(1) = 4d_arr_rx(4)
                  'Image_val(2) = 4d_arr_rx(5)
                   ' lcd , "Image "
                  Case Keyboard:                            '13
                     Keyboard_idx = 4d_arr_rx(3)
                     Keyboard_val(1) = 4d_arr_rx(4)
                     Keyboard_val(2) = 4d_arr_rx(5)
                   '  Lcd "Keyboard "
                  Case Led:                                 '14
                     Led_idx = 4d_arr_rx(3)
                     Led_val(1) = 4d_arr_rx(4)
                     Led_val(2) = 4d_arr_rx(5)
                   '  Lcd "Led "
                  Case Leddigits:                           '15
                     Leddigits_idx = 4d_arr_rx(3)
                     Leddigits_val(1) = 4d_arr_rx(4)
                     Leddigits_val(2) = 4d_arr_rx(5)
                   '  Lcd "Leddigits "
                  Case Meter:                               '16
                     Meter_idx = 4d_arr_rx(3)
                     Meter_val(1) = 4d_arr_rx(4)
                     Meter_val(2) = 4d_arr_rx(5)
                   '  Lcd "Meter "
                  Case Strings:                             '17
                     Strings_idx = 4d_arr_rx(3)
                     Strings_val(1) = 4d_arr_rx(4)
                     Strings_val(2) = 4d_arr_rx(5)
                   '  Lcd "Strings "
                  Case Thermometer:                         '18
                     Thermometer_idx = 4d_arr_rx(3)
                     Thermometer_val(1) = 4d_arr_rx(4)
                     Thermometer_val(2) = 4d_arr_rx(5)
                   '  Lcd "Thermometer "
                  Case Userled:                             '19
                     Userled_idx = 4d_arr_rx(3)
                     Userled_val(1) = 4d_arr_rx(4)
                     Userled_val(2) = 4d_arr_rx(5)
                    ' Lcd "Userled "
                  Case Video:                               '20
                     Video_idx = 4d_arr_rx(3)
                     Video_val(1) = 4d_arr_rx(4)
                    Video_val(2) = 4d_arr_rx(5)
                  '   Debug "Video "
                  Case Statictext:                          '21
                  'Statictext_idx = 4d_arr_rx(3)
                  'Statictext_val(1) = 4d_arr_rx(4)
                  'Statictext_val(2) = 4d_arr_rx(5)
                  '   lcd  "Statictext "
                  Case S_ound:                              '22
                     S_ound_idx = 4d_arr_rx(3)
                     S_ound_val(1) = 4d_arr_rx(4)
                     S_ound_val(2) = 4d_arr_rx(5)
                   '  Lcd "S_ound "
                  Case T_imer:                              '23
                     T_imer_idx = 4d_arr_rx(3)
                     T_imer_val(1) = 4d_arr_rx(4)
                     T_imer_val(2) = 4d_arr_rx(5)
                   '  Lcd "T_imer "
                  Case Spectrum:                            '24
                     Spectrum_idx = 4d_arr_rx(3)
                     Spectrum_val(1) = 4d_arr_rx(4)
                     Spectrum_val(2) = 4d_arr_rx(5)
                   '  Lcd "Spectrum "
                  Case Scope:                               '25
                     Scope_idx = 4d_arr_rx(3)
                     Scope_val(1) = 4d_arr_rx(4)
                     Scope_val(2) = 4d_arr_rx(5)
                   '  Lcd "Scope "
                  Case Tank:                                '26
                     Tank_idx = 4d_arr_rx(3)
                     Tank_val(1) = 4d_arr_rx(4)
                     Tank_val(2) = 4d_arr_rx(5)
                   '  Lcd "Tank "
                  Case Userimages:                          '27
                     Userimages_idx = 4d_arr_rx(3)
                     Userimages_val(1) = 4d_arr_rx(4)
                     Userimages_val(2) = 4d_arr_rx(5)
                   '  Lcd "Userimages "
                  Case Pinoutput:                           '28
                     Pinoutput_idx = 4d_arr_rx(3)
                  'Pinoutput_val(1) = 4d_arr_rx(4)
                     Pinoutput_val = 4d_arr_rx(5)
                   '  Lcd "Pinoutput "
                  Case Pininput:                            '29
                     Pininput_idx = 4d_arr_rx(3)
                  'Pininput_val(1) = 4d_arr_rx(4)
                     Pininput_val = 4d_arr_rx(5)
                   '  Lcd "Pininput "
                  Case 4dbutton:                            '30
                     4dbutton_idx = 4d_arr_rx(3)
                     4dbutton_val(1) = 4d_arr_rx(4)
                     4dbutton_val(2) = 4d_arr_rx(5)
                  Lcd "object read: 4dbutton " ;

                  Case Anibutton:                           '31
                     Anibutton_idx = 4d_arr_rx(3)
                     Anibutton_val(1) = 4d_arr_rx(4)
                     Anibutton_val(2) = 4d_arr_rx(5)
                   '  Lcd "Anibutton "
                  Case Colorpicker:                         '32
                     Colorpicker_idx = 4d_arr_rx(3)
                     Colorpicker_val(1) = 4d_arr_rx(4)
                     Colorpicker_val(2) = 4d_arr_rx(5)
                   '  Lcd "Colorpicker "
                  Case Userbutton:                          '33
                     Userbutton_idx = 4d_arr_rx(3)
                     Userbutton_val(1) = 4d_arr_rx(4)
                     Userbutton_val(2) = 4d_arr_rx(5)
                   '  Lcd "Userbutton "
                  Case Magicobject:                         '34
                     Magicobject_idx = 4d_arr_rx(3)
                     Magicobject_val(1) = 4d_arr_rx(4)
                     Magicobject_val(2) = 4d_arr_rx(5)
                   '  Lcd "Magicobject "
                  Case Smartgauge:                          '35
                     Smartgauge_idx = 4d_arr_rx(3)
                     Smartgauge_val(1) = 4d_arr_rx(4)
                     Smartgauge_val(2) = 4d_arr_rx(5)
                   '  Lcd "Smartgauge "
                  Case Smartslider:                         '36
                     Smartslider_idx = 4d_arr_rx(3)
                     Smartslider_val(1) = 4d_arr_rx(4)
                     Smartslider_val(2) = 4d_arr_rx(5)
                   '  Lcd "Smartslider "
                  Case Smartknob:                           '37
                     Smartknob_idx = 4d_arr_rx(3)
                     Smartknob_val(1) = 4d_arr_rx(4)
                     Smartknob_val(2) = 4d_arr_rx(5)
                   '  Lcd "Smartknob "
                  Case Else:
                   '  Lcd "Event report wrong ID: " ; 4d_arr_rx(3)
                     Clear Serialin1
                   '  Lcd "S_pace" ; S_pace
                   '  Lcd , "frame error"
               End Select
            End If
         Case A_ck:                                         '&H06    ACK
         '  Lcd "ACK"
            Ack_flag.0 = 0                                  'reset ack flag not really in use yet
'*******************************************************************************
'*****************************Events report ************************************
'*******************************************************************************
         Case Report_event:                                 '&H07

            Inputbin #1 , 4d_arr_rx(2) , 5                  'get next 5
            Xor_crc = Xor_this(4d_arr_rx(1))                ' check the crc
            If 4d_arr_rx(6) = Xor_crc Then                  'if crc ok, then check what came
             '  Lowerline
               Select Case 4d_arr_rx(2)                     'object ID
                  Case Dipswitch:                           '0
                     Dipswitch_idx = 4d_arr_rx(3)
                     Dipswitch_val(1) = 4d_arr_rx(4)
                     Dipswitch_val(2) = 4d_arr_rx(5)
                  '   Lcd "Dipswitch "
                  Case Knob:                                '1
                     Knob_idx = 4d_arr_rx(3)
                     Knob_val(1) = 4d_arr_rx(4)
                     Knob_val(2) = 4d_arr_rx(5)
                  '   Lcd "Knob "
                  Case Rockerswitch:                        '2
                     Rockerswitch_idx = 4d_arr_rx(3)
                     Rockerswitch_val(1) = 4d_arr_rx(4)
                     Rockerswitch_val(2) = 4d_arr_rx(5)
                  '   Lcd "Rockerswitch "
                  Case Rotaryswitch:                        '3
                     Rotaryswitch_idx = 4d_arr_rx(3)
                     Rotaryswitch_val(1) = 4d_arr_rx(4)
                     Rotaryswitch_val(2) = 4d_arr_rx(5)
                  '   Lcd "Rotaryswitch "
                  Case Slider:                              '4
                     Slider_idx = 4d_arr_rx(3)
                     Slider_val(1) = 4d_arr_rx(4)
                     Slider_val(2) = 4d_arr_rx(5)
                  '   Lcd "Slider "
                  Case Trackbar:                            '5
                     Trackbar_idx = 4d_arr_rx(3)
                     Trackbar_val(1) = 4d_arr_rx(4)
                     Trackbar_val(2) = 4d_arr_rx(5)
                  '   Lcd "Trackbar "
                  Case Winbutton:                           '6
                     Winbutton_idx = 4d_arr_rx(3)
                     Winbutton_val(1) = 4d_arr_rx(4)
                     Winbutton_val(2) = 4d_arr_rx(5)
                  '   Lcd "Winbutton "
                  Case Angularmeter:                        '7
                     Angularmeter_idx = 4d_arr_rx(3)
                     Angularmeter_val(1) = 4d_arr_rx(4)
                     Angularmeter_val(2) = 4d_arr_rx(5)
                  '   Lcd "Angularmeter "
                  Case Coolgauge:                           '8
                     Coolgauge_idx = 4d_arr_rx(3)
                     Coolgauge_val(1) = 4d_arr_rx(4)
                     Coolgauge_val(2) = 4d_arr_rx(5)
                  '   Lcd "Coolgauge "
                  Case Customdigits:                        '9
                     Customdigits_idx = 4d_arr_rx(3)
                     Customdigits_val(1) = 4d_arr_rx(4)
                     Customdigits_val(2) = 4d_arr_rx(5)
                  '   Lcd "Customdigits "
                  Case Form:                                '10
                     Form_idx = 4d_arr_rx(3)
                     Form_val(1) = 4d_arr_rx(4)
                     Form_val(2) = 4d_arr_rx(5)
                  '   Lcd "Form "
                  Case Gauge:                               '11
                     Gauge_idx = 4d_arr_rx(3)
                     Gauge_val(1) = 4d_arr_rx(4)
                     Gauge_val(2) = 4d_arr_rx(5)
                  '   Lcd "Gauge "
                  Case Image:                               '12
                  'Image_idx = 4d_arr_rx(3)
                  'Image_val(1) = 4d_arr_rx(4)
                  'Image_val(2) = 4d_arr_rx(5)
                  '   Lcd "Image "
                  Case Keyboard:                            '13
                     Keyboard_idx = 4d_arr_rx(3)
                     Keyboard_val(1) = 4d_arr_rx(4)
                     Keyboard_val(2) = 4d_arr_rx(5)
                  '   Lcd "Keyboard "
                  Case Led:                                 '14
                     Led_idx = 4d_arr_rx(3)
                     Led_val(1) = 4d_arr_rx(4)
                     Led_val(2) = 4d_arr_rx(5)
                  '   Lcd "Led "
                  Case Leddigits:                           '15
                     Leddigits_idx = 4d_arr_rx(3)
                     Leddigits_val(1) = 4d_arr_rx(4)
                     Leddigits_val(2) = 4d_arr_rx(5)
                  '   Lcd "Leddigits "
                  Case Meter:                               '16
                     Meter_idx = 4d_arr_rx(3)
                     Meter_val(1) = 4d_arr_rx(4)
                     Meter_val(2) = 4d_arr_rx(5)
                  '   Lcd "Meter "
                  Case Strings:                             '17
                     Strings_idx = 4d_arr_rx(3)
                     Strings_val(1) = 4d_arr_rx(4)
                     Strings_val(2) = 4d_arr_rx(5)
                  '   Lcd "Strings "
                  Case Thermometer:                         '18
                     Thermometer_idx = 4d_arr_rx(3)
                     Thermometer_val(1) = 4d_arr_rx(4)
                     Thermometer_val(2) = 4d_arr_rx(5)
                  '   Lcd "Thermometer "
                  Case Userled:                             '19
                     Userled_idx = 4d_arr_rx(3)
                     Userled_val(1) = 4d_arr_rx(4)
                     Userled_val(2) = 4d_arr_rx(5)
                  '   Lcd "Userled "
                  Case Video:                               '20
                     Video_idx = 4d_arr_rx(3)
                     Video_val(1) = 4d_arr_rx(4)
                     Video_val(2) = 4d_arr_rx(5)
                  '   Debug "Video "
                  Case Statictext:                          '21
                  'Statictext_idx = 4d_arr_rx(3)
                  'Statictext_val(1) = 4d_arr_rx(4)
                  'Statictext_val(2) = 4d_arr_rx(5)
                  '   Lcd "Statictext "
                  Case S_ound:                              '22
                     S_ound_idx = 4d_arr_rx(3)
                     S_ound_val(1) = 4d_arr_rx(4)
                     S_ound_val(2) = 4d_arr_rx(5)
                  '   Lcd "S_ound "
                  Case T_imer:                              '23
                     T_imer_idx = 4d_arr_rx(3)
                     T_imer_val(1) = 4d_arr_rx(4)
                     T_imer_val(2) = 4d_arr_rx(5)
                  '   Lcd "T_imer "
                  Case Spectrum:                            '24
                     Spectrum_idx = 4d_arr_rx(3)
                     Spectrum_val(1) = 4d_arr_rx(4)
                     Spectrum_val(2) = 4d_arr_rx(5)
                  '   Lcd "Spectrum "
                  Case Scope:                               '25
                     Scope_idx = 4d_arr_rx(3)
                     Scope_val(1) = 4d_arr_rx(4)
                     Scope_val(2) = 4d_arr_rx(5)
                  '   Lcd "Scope "
                  Case Tank:                                '26
                     Tank_idx = 4d_arr_rx(3)
                     Tank_val(1) = 4d_arr_rx(4)
                     Tank_val(2) = 4d_arr_rx(5)
                  '   Lcd "Tank "
                  Case Userimages:                          '27
                     Userimages_idx = 4d_arr_rx(3)
                     Userimages_val(1) = 4d_arr_rx(4)
                     Userimages_val(2) = 4d_arr_rx(5)
                  '   Lcd "Userimages "
                  Case Pinoutput:                           '28
                     Pinoutput_idx = 4d_arr_rx(3)
                  'Pinoutput_val(1) = 4d_arr_rx(4)
                     Pinoutput_val = 4d_arr_rx(5)
                  '   Lcd "Pinoutput "
                  Case Pininput:                            '29
                     Pininput_idx = 4d_arr_rx(3)
                  'Pininput_val(1) = 4d_arr_rx(4)
                     Pininput_val = 4d_arr_rx(5)
                   '  Lcd "Pininput "
                  Case 4dbutton:                            '30
                     4dbutton_idx = 4d_arr_rx(3)
                     4dbutton_val(1) = 4d_arr_rx(4)
                     4dbutton_val(2) = 4d_arr_rx(5)
                    Lcd "Event: 4dbutton "
                   Flag_dosomthing.0 = 1


                  Case Anibutton:                           '31
                     Anibutton_idx = 4d_arr_rx(3)
                     Anibutton_val(1) = 4d_arr_rx(4)
                     Anibutton_val(2) = 4d_arr_rx(5)
                  '   Lcd "Anibutton "
                  Case Colorpicker:                         '32
                     Colorpicker_idx = 4d_arr_rx(3)
                     Colorpicker_val(1) = 4d_arr_rx(4)
                     Colorpicker_val(2) = 4d_arr_rx(5)
                  '   Lcd "Colorpicker "
                  Case Userbutton:                          '33
                     Userbutton_idx = 4d_arr_rx(3)
                     Userbutton_val(1) = 4d_arr_rx(4)
                     Userbutton_val(2) = 4d_arr_rx(5)
                  '   Lcd "Userbutton "
                  Case Magicobject:                         '34
                     Magicobject_idx = 4d_arr_rx(3)
                     Magicobject_val(1) = 4d_arr_rx(4)
                     Magicobject_val(2) = 4d_arr_rx(5)
                  '   Lcd "Magicobject "
                  Case Smartgauge:                          '35
                     Smartgauge_idx = 4d_arr_rx(3)
                     Smartgauge_val(1) = 4d_arr_rx(4)
                     Smartgauge_val(2) = 4d_arr_rx(5)
                  '   Lcd "Smartgauge "
                  Case Smartslider:                         '36
                     Smartslider_idx = 4d_arr_rx(3)
                     Smartslider_val(1) = 4d_arr_rx(4)
                     Smartslider_val(2) = 4d_arr_rx(5)
                  '   Lcd "Smartslider "
                  Case Smartknob:                           '37
                     Smartknob_idx = 4d_arr_rx(3)
                     Smartknob_val(1) = 4d_arr_rx(4)
                     Smartknob_val(2) = 4d_arr_rx(5)
                   '  Lcd "Smartknob "

                  Case Else:
                   '  Lowerline
                   '  Lcd "Event report wrong ID: " ; 4d_arr_rx(3)

                     Clear Serialin1

                   '  Lcd "S_pace" ; S_pace
                   '  Lcd "frame error"

               End Select

            End If

         Case Nak:
          '  Lcd "NACK"                                                          '&h15  NAK

         Case Else:
          '  Lcd "Error in Code =: " ; 4d_arr_rx(1)
            Clear Serialin1
          '  Lcd "S_pace= " ; S_pace
          '  Lcd "frame error"


      End Select
   End If


I Will try to create small demo for you.
Regards
Pikczu
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 31

switzerland.gif
PostPosted: Wed Mar 13, 2019 1:41 pm    Post subject: Recept nul char / Bascom Reply with quote

Hi Pikczu
well, I use an arduino card with a processor atmega 2560. if I did not receive the command of the lcd it is because I kept your configuration "Config Serialin1" while it is "Config Serialin" !!
But something strange is happening:
If I update only the 4 digits of the LCD, the LCD switch is working very well, but if I want to update the other two gauges then the switch lcd walk randomly!
there is some function that I did not understand well:
Incr Tablica (5)
Tablica (6) = Xor_this (tablica (1))
Is Enable Interrupts absolutely necessary?
Thank you !!
Back to top
View user's profile
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 72
Location: Dublin, Ireland

ireland.gif
PostPosted: Wed Mar 13, 2019 7:38 pm    Post subject: Reply with quote

Hi Bernard,
That part is actually a leftover from the test.
So you can delete it.
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 31

switzerland.gif
PostPosted: Wed Mar 13, 2019 8:08 pm    Post subject: Recept nul char / Bascom Reply with quote

You mean ?
Incr Tablica (5)
Tablica (6) = Xor_this (tablica (1))

and

Tablica(1) = Write_obj
Tablica(2) = Leddigits
Tablica(3) = Obj_index
Tablica(4) = Tablica(4)
Tablica(5) = 0
Back to top
View user's profile
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 72
Location: Dublin, Ireland

ireland.gif
PostPosted: Wed Mar 13, 2019 8:17 pm    Post subject: Reply with quote

Yes, also there is still some config for Xmega i have removed them.
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 31

switzerland.gif
PostPosted: Fri Mar 15, 2019 9:39 pm    Post subject: Recept nul char / Bascom Reply with quote

Hello Pikczu
Something strange happens to me ...
When I press the switch on the LCD to activate or deactivate
the update of the Leddigit (4) I see that the program can take up to 10 seconds to take into account the change of state of the switch while the rs232 command arrives immediately on my board. (as if something slowed down has function if ischarwaiting (# 1) ......
An idea ?
Sincerely Bernard

'************************* Main loop *******************************************

'Wait 5
Ack_flag = 1
State_button = 0
Digit_cnt = 0

Enable Interrupts

'lcd , "MCU Rev. = " ' ; Mcu_revid 'version of the MCU
'Call 4d_write_contrast(&H07)
'Call 4d_write_str(0 , "Hi there" , 0 )

Do

'***************************************** Mesuere la distance Ultrason ********
Mesure_us:
Set Trig
Waitus 20 '
Reset Trig

Pulsein Mesure_ultrason , Pind , 0 , 1
M = Mesure_ultrason
M = M * 12.9 'a ajuster en fonction du quartz
M = M / 100
Neige = M
Locate 1 , 8 : Lcd " "
Locate 1 , 8 : Lcd Neige 'M 'M

' Call 4d_write_obj(coolgauge , &H00 , Neige) ' mettre à jour la coolgauge


' Call 4d_write_obj(angularmeter , &H00 , Neige) 'mettre a jour l'angularmetter

Wait 1

Incr Digit_cnt

Locate 1 , 1 : Lcd State_button ; 4d_arr_rx(5) <<<<<Here, my display of control tells me the change of the switch that 10 seconds after having actuated
Locate 2 , 1 : Lcd Ack_flag ; 4d_arr_rx(1)

Waitms 500


If State_button <> 0 Then 'And Ack_flag = 1
4dbutton_idx = &H00
4d_arr_rx(5) = &H00
Call 4d_write_obj(leddigits , &H00 , Digit_cnt) 'mettre a jour les digits
' Ack_flag = 1
End If

'************************************pour test uniquement *********************
' For I = 1 To 10
' Call 4d_write_contrast(i)
' Waitms 100
' Next I


' 4d_string_tx = "12345"
' Call 4d_write_str(&H00 , 4d_string_tx , &H00)


'*******************************************************************************

'********************************* Lescture des rapports "OBJETS (07)" ***************

If Ischarwaiting(#1) = 1 Then
Back to top
View user's profile
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 72
Location: Dublin, Ireland

ireland.gif
PostPosted: Fri Mar 15, 2019 11:14 pm    Post subject: Reply with quote

Hi Bernard,
Can you attach whole code for Bascom and 4d project ?
Remove all the wait form the code, and setup debug port then print everything what happens in to the debug this help a lot.

PS.I will be away for week I may have access to forum only from mobile.
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 31

switzerland.gif
PostPosted: Sun Mar 17, 2019 12:19 am    Post subject: Recept nul char / Bascom Reply with quote

Hello Pikczu
The board used to test the application is an Arduino 2560 board (Atmega2560). Here is the problem:
the 4 digits of the 4D display are written as long as the switch is ON.
This works very well!
The problem is that if at the same time I write in the angularmeter a value, even fixed, then I see that the program takes a long time to take into account the change of state of the switch 4D!

In attachments, the bascom source, 4d system files, 1 prototype photo. The 2-line lcd display on the prototype is used for debugging ..... (rs232)
I have no idea .............
Thank you.
Bernard
Back to top
View user's profile
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 72
Location: Dublin, Ireland

ireland.gif
PostPosted: Sun Mar 17, 2019 11:43 am    Post subject: Reply with quote

Hi Bernard,
This sound strange, i will take a look in to the code.
But as mentioned im away for week, I have no access to the equipment.
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 31

switzerland.gif
PostPosted: Sun Mar 17, 2019 1:08 pm    Post subject: Recept nul char / Bascom Reply with quote

Hi
I found my mistake stupid: instead of writing * clear serialin1 "I wrote" clear serialin * of course the serial input buffer is filled ..... and it's a disaster !!
thank you for everything

Bernard
Back to top
View user's profile
bellon

Bascom Member



Joined: 01 Mar 2019
Posts: 31

switzerland.gif
PostPosted: Sun Mar 17, 2019 1:36 pm    Post subject: Reply with quote

........ false good idea, if I validate "Call 4d_write_obj (angularmeter, & H00, & H32)" the problem remains the same!
have a nice week end !
Back to top
View user's profile
Pikczu

Bascom Member



Joined: 22 Jan 2006
Posts: 72
Location: Dublin, Ireland

ireland.gif
PostPosted: Sun Mar 17, 2019 6:17 pm    Post subject: Reply with quote

Hi Bernard,
I Could not test the code.
Google blocked my license key can't download it.

Any way issue may be with the crc so i have added
printbin #1, &h06 after the crc is calculated and is ok.
Similar i have added printbin #1, &h15 where the crc is not ok

Please check this as I could not even test this demo version wont let me do it, and i can not download my license file to test on full version.
Code:
'$sim

$regfile = "m2560def.dat"                                                       '$regfile = "m328pdef.dat"
$crystal = 16000000                                                             '32MHz
$hwstack = 128
$swstack = 128
$framesize = 128
$baud = 9600

'*******************************************************************************
'*******************************************************************************

Config Submode = New

'*******************************************************************************
'*******************************************************************************
'************ CONFIGURATION FOR COM1 UART ************************************
'
Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Serialin = Buffered , Size = 100 , Bytematch = None                      'for COM1
Config Serialout = Buffered , Size = 100
Open "COM1:" For Binary As #1

'*********************LCD de controle de reception UART ***********************

Config Lcdpin = Pin , Db4 = Portg.5 , Db5 = Porte.3 , Db6 = Porth.3 , Db7 = Porth.4 , E = Porth.6 , Rs = Porth.5
Config Lcd = 16 * 2                                                             '2 lignes LCD
Cursor Off
Cursor Noblink
Cls

' ======= communication avec capteur ultrason, Utilisé uniquement pour ultrason====
Config Pind.1 = Output
Config Pind.0 = Input
Trig Alias Portd.1
Echo_son Alias Portd.0
Trig = 0

'Config Ping.5 = Output

'Config Pinb.7 = Output                                                          'led seconde
'Led_cont Alias Portb.7                                                          ' reset du lcd

'*******************************************************************************

'************************* Variables *******************************************
'*******************************************************************************
Dim S_pace As Byte
Dim A As Byte
Dim Enkoder_tmp As Word                                                         'for the enkoder
Dim Enkoder_tmp_1 As Word                                                       'for the enkoder
Dim Enkoder_tmp_2 As Word                                                       'for the enkoder
Dim C As Byte
Dim R As Byte
Dim Tablica(6)as Byte
'*******************************************************************************
'********************************used in TX subs********************************
Dim Ack_flag As Byte                                                            ' ack byte flag setup each time we expect the ack to come form teh dispaly
Dim 4d_arr_tx(6)as Byte                                                         '
Dim 4d_helpa As Word At 4d_arr_tx(4) Overlay
Dim 4d_string_tx_arr(39) As Byte
Dim 4d_string_tx As String * 34 At 4d_string_tx_arr(1) + 3 Overlay
'*******************************************************************************
Dim 4d_arr_rx(6) As Byte
Dim 4d_var_rx As Word At 4d_arr_rx(4) Overlay                                   'overlay for rx
Dim 4d_var_rx_tmp As Word
Dim Obj_index As Byte                                                           '4d object index
'Macro
'###############################################################################
Dim Xor_crc As Byte                                                             'xor crc for 4d
Xor_crc = 0
'*******************************************************************************
Dim Dipswitch_idx As Byte                                                       '0
Dim Knob_idx As Byte
Dim Rockerswitch_idx As Byte
Dim Rotaryswitch_idx As Byte
Dim Slider_idx As Byte
Dim Trackbar_idx As Byte
Dim Winbutton_idx As Byte
Dim Angularmeter_idx As Byte
Dim Coolgauge_idx As Byte
Dim Customdigits_idx As Byte
Dim Form_idx As Byte                                                            'Used To Set The Current Form
Dim Gauge_idx As Byte                                                           '
'Dim Image_idx As Byte                                       ' Displayed As Part Of Form , No Method To Alter
Dim Keyboard_idx As Byte                                                        ' KEYBOARD Inputs Are Always Single Bytes And Are Unsolicited
Dim Led_idx As Byte
Dim Leddigits_idx As Byte
Dim Meter_idx As Byte
Dim Strings_idx As Byte
Dim Thermometer_idx As Byte
Dim Userled_idx As Byte
Dim Video_idx As Byte
'Dim Statictext_idx As Byte                                  ' Displayed As Part Of Form , No Method To Alter
Dim S_ound_idx As Byte
Dim T_imer_idx As Byte
Dim Spectrum_idx As Byte
Dim Scope_idx As Byte
Dim Tank_idx As Byte
Dim Userimages_idx As Byte
Dim Pinoutput_idx As Byte
Dim Pininput_idx As Byte
Dim 4dbutton_idx As Byte
Dim Anibutton_idx As Byte
Dim Colorpicker_idx As Byte
Dim Userbutton_idx As Byte
Dim Magicobject_idx As Byte                                                     'ONLY Available When Using Genie Pro
Dim Smartgauge_idx As Byte                                                      'ONLY Available When Using Genie Pro
Dim Smartslider_idx As Byte                                                     'ONLY Available When Using Genie Pro
Dim Smartknob_idx As Byte                                                       'Only Available When Using Genie Pro
'*******************************************************************************
Dim Dipswitch_val(2) As Byte                                                    '0
Dim Knob_val(2) As Byte
Dim Rockerswitch_val(2) As Byte
Dim Rotaryswitch_val(2) As Byte
Dim Slider_val(2) As Byte
Dim Trackbar_val(2) As Byte
Dim Winbutton_val(2) As Byte
Dim Angularmeter_val(2) As Byte
Dim Coolgauge_val(2) As Byte
Dim Customdigits_val(2) As Byte
Dim Form_val(2) As Byte                                                         'Used To Set The Current Form
Dim Gauge_val(2) As Byte                                                        '
'Dim Image_val(2) As Byte                                    ' Displayed As Part Of Form , No Method To Alter
Dim Keyboard_val(2) As Byte                                                     ' KEYBOARD Inputs Are Always Single Bytes And Are Unsolicited
Dim Led_val(2) As Byte
Dim Leddigits_val(2) As Byte
Dim Meter_val(2) As Byte
Dim Strings_val(2) As Byte
Dim Thermometer_val(2) As Byte
Dim Userled_val(2) As Byte
Dim Video_val(2) As Byte
'Dim Statictext_val(2) As Byte                               ' Displayed As Part Of Form , No Method To Alter
Dim S_ound_val(2) As Byte
Dim T_imer_val(2) As Byte
Dim Spectrum_val(2) As Byte
Dim Scope_val(2) As Byte
Dim Tank_val(2) As Byte
Dim Userimages_val(2) As Byte
Dim Pinoutput_val As Byte
Dim Pininput_val As Byte
Dim 4dbutton_val(2) As Byte
Dim Anibutton_val(2) As Byte
Dim Colorpicker_val(2) As Byte
Dim Userbutton_val(2) As Byte
Dim Magicobject_val(2) As Byte                                                  'ONLY Available When Using Genie Pro
Dim Smartgauge_val(2) As Byte                                                   'ONLY Available When Using Genie Pro
Dim Smartslider_val(2) As Byte                                                  'ONLY Available When Using Genie Pro
Dim Smartknob_val(2) As Byte                                                    'Only Available When Using Genie Pro
Dim Mesure_ultrason As Word
Dim M As Single
Dim Neige As Word
Dim I As Word
Dim Digit_cnt As Word
Dim Switch_ultra As Byte
Dim State_button_4d As Byte
'*******************************************************************************
Const A_ck = &H06
Const Nak = &H15
Const 4d_max_len = 32                                                           'maxium 4D strig lengt

'*******************************************************************************
Const Dipswitch = &H00                                                          '0
Const Knob = &H01
Const Rockerswitch = &H02
Const Rotaryswitch = &H03
Const Slider = &H04
Const Trackbar = &H05
Const Winbutton = &H06
Const Angularmeter = &H07
Const Coolgauge = &H08
Const Customdigits = &H09
Const Form = &H0A                                                               'Used To Set The Current Form
Const Gauge = &H0B                                                              '
Const Image = &H0C                                                              ' Displayed As Part Of Form , No Method To Alter
Const Keyboard = &H0D                                                           ' KEYBOARD Inputs Are Always Single Bytes And Are Unsolicited
Const Led = &H0E
Const Leddigits = &H0F
Const Meter = &H10
Const Strings = &H11
Const Thermometer = &H12
Const Userled = &H13
Const Video = &H14
Const Statictext = &H15                                                         ' Displayed As Part Of Form , No Method To Alter
Const S_ound = &H16
Const T_imer = &H17
Const Spectrum = &H18
Const Scope = &H19
Const Tank = &H1A
Const Userimages = &H1B
Const Pinoutput = &H1C
Const Pininput = &H1D
Const 4dbutton = &H1E
Const Anibutton = &H1F
Const Colorpicker = &H20
Const Userbutton = &H21
Const Magicobject = &H22                                                        'ONLY Available When Using Genie Pro
Const Smartgauge = &H23                                                         'ONLY Available When Using Genie Pro
Const Smartslider = &H24                                                        'ONLY Available When Using Genie Pro
Const Smartknob = &H25                                                          'Only Available When Using Genie Pro
'*******************************************************************************
Const Read_obj = &H00
Const Write_obj = &H01
Const Write_str = &H02
Const Write_stru = &H03
Const Write_contrast = &H04
'*******************************************************************************

'*******************************************************************************
Const Report_obj = &H05                                                         'response to read obj command
Const Report_event = &H07                                                       'response to evnt no no request needed
Const Write_magic_bytes = &H08
Const Write_magic_dbytes = &H09
Const Report_magic_event_bytes = &H0A
'*******************************************************************************

'******************************************************************************
Function Xor_this(ar() As Byte ) As Byte                                        '  Function XOR
   Local Xor_ing As Byte                                                        'temporary variable for xor value so could be a local
   Xor_ing = Ar(1) Xor Ar(2)                                                    'xoring
   Xor_ing = Xor_ing Xor Ar(3)
   Xor_ing = Xor_ing Xor Ar(4)
   Xor_ing = Xor_ing Xor Ar(5)
   'Xor_ing = Xor_ing Xor Ar(6)
   Xor_this = Xor_ing                                                           'final result asigment
End Function
'******************************************************************************

'this shoul be a function not a sub
Sub 4d_read_obj(byval 4d_object_id As Byte , Byval 4d_object_index As Byte )
   'this should be a fuction

   4d_arr_tx(1) = Write_obj                                                     '&h00 constant
   4d_arr_tx(2) = 4d_object_id                                                  'object ID as per constants
   4d_arr_tx(3) = 4d_object_index                                               'object index
   Xor_crc = 4d_arr_tx(1) Xor 4d_arr_tx(2)                                      'calculate the xor check sum
   Xor_crc = Xor_crc Xor 4d_arr_tx(3)

   4d_arr_tx(4) = Xor_crc
   Printbin #1 , 4d_arr_tx(1) ; 4                                               'print binary  the final result
  ' Ack_flag.1 = 1                                                               'for feature use
  'The response from the display should be Report_obj: &h05


End Sub
'******************************************************************************

Sub 4d_write_obj(byval 4d_object_id As Byte , Byval 4d_object_index As Byte , Byval 4d_obj_value As Word )
'  Dim 4d_helpa As Word At 4d_arr_tx(4) Overlay                                    'copy for clarity
   Swap 4d_obj_value                                                            'litle endian to big endian
   4d_helpa = 4d_obj_value                                                      'asign to overlayd variable
   4d_arr_tx(1) = Write_obj                                                     '&h01 constant
   4d_arr_tx(2) = 4d_object_id                                                  'object ID as per constants
   4d_arr_tx(3) = 4d_object_index                                               'object index
   '4d_arr_tx(4) as this is overlay teh values are all ready there in global array
   '4d_arr_tx(5) as this is overlay teh values are all ready there in global array
   Xor_crc = 4d_arr_tx(1) Xor 4d_arr_tx(2)                                      'calculate the xor check sum
   Xor_crc = Xor_crc Xor 4d_arr_tx(3)
   Xor_crc = Xor_crc Xor 4d_arr_tx(4)
   4d_arr_tx(6) = Xor_crc Xor 4d_arr_tx(5)
   Printbin #1 , 4d_arr_tx(1) ; 6                                               'print binary  the final result
  ' Ack_flag.0 = 1                                                               'for feature use
  'The response from the display should be ACK message &h06

End Sub

'******************************************************************************

Sub 4d_write_str(byval 4d_str_indx As Byte , Byval 4d_string_1 As String , Byval Cr_lf As Byte )
'the body of the command is:
'code + string_index+ string_lenght + string + xorcrc
   Local Index_help_a As Byte                                                   'used to calculate the lengt of the string
   Local Index_help_b As Byte                                                   'used to calculate position of the XOR CRC in array, string lenght+3
   Dim Tot_command_len As Byte                                                  'total comand lenght
'******************************************************************************

   'If Cr >= 1 Then Cr = 1
   'If Lf >= 1 Then Lf = 1

'******************************************************************************
'******************************************************************************

   Select Case Cr_lf
      Case 0:
         'Tot_command_len = Len(4d_string_1) + 4             'string lenght(+) commad (+) string index (+) string
         Tot_command_len = Len(4d_string_1)                                     'string lenght(+) commad (+) string index (+) string
      Case 1:
         Tot_command_len = Len(4d_string_1) + 5                                 'string lenght(+) commad (+) string index (+) string
        ' Insertchar 4d_string_tx , Tot_command_len
      Case 2:
         Tot_command_len = Len(4d_string_1)                                     '+ 6                'string lenght(+) commad (+) string index (+) string
   End Select
   4d_string_tx = 4d_string_1                                                   'copy the string in to variable overlayd at array
   4d_string_tx_arr(1) = Write_str                                              '&h02 write string command
   4d_string_tx_arr(2) = 4d_str_indx                                            'index of the string
   4d_string_tx_arr(3) = Len(4d_string_1)                                       'lenght of the string


   For Index_help_a = 1 To Tot_command_len -1                                   'we need to xor this and asign at the end
   'the minus (-)1 skip xor of the null termination
      4d_string_tx_arr(tot_command_len) = 4d_string_tx_arr(tot_command_len) Xor 4d_string_tx_arr(index_help_a)
   Next Index_help_a
   Select Case Tot_command_len                                                  ' total comand lenght
      Case 5:
         Printbin #1 , 4d_string_tx_arr(1) ; 5                                  'code +string index+ string lenght +  1 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 5                                  'code +string index+ string lenght +  1 char + crc
      Case 6:
         Printbin #1 , 4d_string_tx_arr(1) ; 6                                  'code +string index+ string lenght +  2 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 6                                  'code +string index+ string lenght +  2 char + crc
      Case 7:
         Printbin #1 , 4d_string_tx_arr(1) ; 7                                  'code +string index+ string lenght +  3 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 7                                  'code +string index+ string lenght +  3 char + crc
      Case 8:
         Printbin #1 , 4d_string_tx_arr(1) ; 8                                  'code +string index+ string lenght +  4 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 8                                  'code +string index+ string lenght +  4 char + crc
      Case 9:
         Printbin #1 , 4d_string_tx_arr(1) ; 9                                  'code +string index+ string lenght +  5 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) , 9                                  'code +string index+ string lenght +  5 char + crc
      Case 10:
         Printbin #1 , 4d_string_tx_arr(1) ; 10                                 'code +string index+ string lenght +  6 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 10                                 'code +string index+ string lenght +  6 char + crc
      Case 11:
         Printbin #1 , 4d_string_tx_arr(1) ; 11                                 'code +string index+ string lenght +  7 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 11                                 'code +string index+ string lenght +  7 char + crc
      Case 12:
         Printbin #1 , 4d_string_tx_arr(1) ; 12                                 'code +string index+ string lenght +  8 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 12                                 'code +string index+ string lenght +  8 char + crc
      Case 13:
         Printbin #1 , 4d_string_tx_arr(1) ; 13                                 'code +string index+ string lenght +  9 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 13                                 'code +string index+ string lenght +  9 char + crc
      Case 14:
         Printbin #1 , 4d_string_tx_arr(1) ; 14                                 'code +string index+ string lenght +  10 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 14                                 'code +string index+ string lenght +  10 char + crc
      Case 15:
         Printbin #1 , 4d_string_tx_arr(1) ; 15                                 'code +string index+ string lenght +  11 char + crc
        ' Printbin #4 , 4d_string_tx_arr(1) ; 15                                 'code +string index+ string lenght +  11 char + crc
      Case 16:
         Printbin #1 , 4d_string_tx_arr(1) ; 16                                 'code +string index+ string lenght +  12 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 16                                 'code +string index+ string lenght +  12 char + crc
      Case 17:
         Printbin #1 , 4d_string_tx_arr(1) ; 17                                 'code +string index+ string lenght +  13 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 17                                 'code +string index+ string lenght +  13 char + crc
      Case 18:
         Printbin #1 , 4d_string_tx_arr(1) ; 18                                 'code +string index+ string lenght +  14 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 18                                 'code +string index+ string lenght +  14 char + crc
      Case 19:
         Printbin #1 , 4d_string_tx_arr(1) ; 19                                 'code +string index+ string lenght +  15 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 19                                 'code +string index+ string lenght +  15 char + crc
      Case 20:
         Printbin #1 , 4d_string_tx_arr(1) ; 20                                 'code +string index+ string lenght +  16 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 20                                 'code +string index+ string lenght +  16 char + crc
      Case 21:
         Printbin #1 , 4d_string_tx_arr(1) ; 21                                 'code +string index+ string lenght +  17 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 21                                 'code +string index+ string lenght +  17 char + crc
      Case 22:
         Printbin #1 , 4d_string_tx_arr(1) ; 22                                 'code +string index+ string lenght +  18 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 22                                 'code +string index+ string lenght +  18 char + crc
      Case 23:
         Printbin #1 , 4d_string_tx_arr(1) ; 23                                 'code +string index+ string lenght +  19 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 23                                 'code +string index+ string lenght +  19 char + crc
      Case 24:
         Printbin #1 , 4d_string_tx_arr(1) ; 24                                 'code +string index+ string lenght +  20 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 24                                 'code +string index+ string lenght +  20 char + crc
      Case 25:
         Printbin #1 , 4d_string_tx_arr(1) ; 25                                 'code +string index+ string lenght +  21 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 25                                 'code +string index+ string lenght +  21 char + crc
      Case 26:
         Printbin #1 , 4d_string_tx_arr(1) ; 26                                 'code +string index+ string lenght +  22 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 26                                 'code +string index+ string lenght +  22 char + crc
      Case 27:
         Printbin #1 , 4d_string_tx_arr(1) ; 27                                 'code +string index+ string lenght +  23 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 27                                 'code +string index+ string lenght +  23 char + crc
      Case 28:
         Printbin #1 , 4d_string_tx_arr(1) ; 28                                 'code +string index+ string lenght +  24 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 28                                 'code +string index+ string lenght +  24 char + crc
      Case 29:
         Printbin #1 , 4d_string_tx_arr(1) ; 29                                 'code +string index+ string lenght +  25 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 29                                 'code +string index+ string lenght +  25 char + crc
      Case 30:
         Printbin #1 , 4d_string_tx_arr(1) ; 30                                 'code +string index+ string lenght +  26 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 30                                 'code +string index+ string lenght +  26 char + crc
      Case 31:
         Printbin #1 , 4d_string_tx_arr(1) ; 31                                 'code +string index+ string lenght +  27 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 31                                 'code +string index+ string lenght +  27 char + crc
      Case 32:
         Printbin #1 , 4d_string_tx_arr(1) ; 32                                 'code +string index+ string lenght +  28 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 32                                 'code +string index+ string lenght +  28 char + crc
      Case 33:
         Printbin #1 , 4d_string_tx_arr(1) ; 33                                 'code +string index+ string lenght +  29 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 33                                 'code +string index+ string lenght +  29 char + crc
      Case 34:
         Printbin #1 , 4d_string_tx_arr(1) ; 34                                 'code +string index+ string lenght +  30 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 34                                 'code +string index+ string lenght +  30 char + crc
      Case 35:
         Printbin #1 , 4d_string_tx_arr(1) ; 35                                 'code +string index+ string lenght +  31 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 35                                 'code +string index+ string lenght +  31 char + crc
      Case 36:
         Printbin #1 , 4d_string_tx_arr(1) ; 36                                 'code +string index+ string lenght +  32 char + crc
         'Printbin #4 , 4d_string_tx_arr(1) ; 36                                 'code +string index+ string lenght +  32 char + crc
   End Select


End Sub

'******************************************************************************

Sub 4d_write_contrast(byval 4d_contrast_val As Byte)
   If 4d_contrast_val => 10 Then
      4d_contrast_val = 10
   End If
   Dim 4d_contrast_tx(3) As Byte
   4d_contrast_tx(1) = Write_contrast
   4d_contrast_tx(2) = 4d_contrast_val
   4d_contrast_tx(3) = Write_contrast Xor 4d_contrast_val
   Printbin #1 , 4d_contrast_tx(1) ; 3
End Sub

'*******************************************************************************
'###############################################################################
'************************* Main loop *******************************************

Wait 5
Ack_flag = 0
State_button_4d = 0
Digit_cnt = 0

Enable Interrupts

Do

'************************** Mesure the Ultrason distance ***********************

   Mesure_us:
      Set Trig
      Waitus 20                                                                   '
      Reset Trig

  '  Pulsein Mesure_ultrason , Pind , 0 , 1                                     ' not in use
      M = Mesure_ultrason
      M = M * 12.9                                                                'a ajuster en fonction du quartz
      M = M / 100
      Neige = M

'********************************************************************************

    'Call 4d_write_obj(angularmeter , &H00 , &H32)                               'if y unmarque this, the switch on 4D dosent run wel !!

      Waitms 100

      Locate 1 , 1 : Lcd 4d_arr_rx(1) ; 4d_arr_rx(2) ; 4d_arr_rx(3) ; 4d_arr_rx(4) ; 4d_arr_rx(5)       'just to see the rx char
      Locate 2 , 1 : Lcd 4d_arr_tx(1) ; 4d_arr_tx(2) ; 4d_arr_tx(3) ; 4d_arr_tx(4) ; 4d_arr_tx(5)       'just to see the tx char


      Waitms 300
                                                                                '<
      Incr Digit_cnt                                                              '***** this fonction run wel alone ************
      If State_button_4d <> 0 Then                                                '<<
     '  4dbutton_idx = &H00                                                      '<<
     '  4d_arr_rx(5) = &H00                                                      '<<
         Call 4d_write_obj(leddigits , &H00 , Digit_cnt)                          '<<
         Ack_flag = 0                                                             '<<
      End If                                                                      '<<********************************************

      Waitms 200

'************************************ for test only ***************************
 '   For I = 1 To 10
  '  Call 4d_write_contrast(i)
  '  Waitms 100
 '   Next I


   ' 4d_string_tx = "12345"
  '  Call 4d_write_str(&H00 , 4d_string_tx , &H00)


'*******************************************************************************

'********************************* Lescture des rapports "OBJETS (05)" *********
'******************************* Lecture de l'etat d'un objet ******************

      If Ischarwaiting(#1) = 1 Then
         Inputbin #1 , 4d_arr_rx(1) , 1

         Select Case 4d_arr_rx(1)                                                  '
            Case A_ck:
               Ack_flag = 1
            Case Nak:
               Ack_flag = 0

            Case Report_obj:                                                       '&H05

               Inputbin #1 , 4d_arr_rx(2) , 5                                      'get next 5
               Xor_crc = Xor_this(4d_arr_rx(1))                                    ' check the crc
                printbin #1, &h06'********************************************added
               If 4d_arr_rx(6) = Xor_crc Then                                      'if crc ok then check what came

                  Select Case 4d_arr_rx(2)                                         'object ID
                     Case Dipswitch:                                               '0
                        Dipswitch_idx = 4d_arr_rx(3)
                        Dipswitch_val(1) = 4d_arr_rx(4)
                        Dipswitch_val(2) = 4d_arr_rx(5)

                   '  Lcd "Dipswitch "
                     Case Knob:                                                    '1
                        Knob_idx = 4d_arr_rx(3)
                        Knob_val(1) = 4d_arr_rx(4)
                        Knob_val(2) = 4d_arr_rx(5)
                   '  Lcd "Knob "
                     Case Rockerswitch:                                            '2
                        Rockerswitch_idx = 4d_arr_rx(3)
                        Rockerswitch_val(1) = 4d_arr_rx(4)
                        Rockerswitch_val(2) = 4d_arr_rx(5)
                   '  Lcd "Rockerswitch "
                     Case Rotaryswitch:                                            '3
                        Rotaryswitch_idx = 4d_arr_rx(3)
                        Rotaryswitch_val(1) = 4d_arr_rx(4)
                        Rotaryswitch_val(2) = 4d_arr_rx(5)
                   '  Lcd "Rotaryswitch "
                     Case Slider:                                                  '4
                        Slider_idx = 4d_arr_rx(3)
                        Slider_val(1) = 4d_arr_rx(4)
                        Slider_val(2) = 4d_arr_rx(5)
                   '  Lcd "Slider "
                     Case Trackbar:                                                '5
                        Trackbar_idx = 4d_arr_rx(3)
                        Trackbar_val(1) = 4d_arr_rx(4)
                        Trackbar_val(2) = 4d_arr_rx(5)
                    ' Lcd "Trackbar "
                     Case Winbutton:                                               '6
                        Winbutton_idx = 4d_arr_rx(3)
                        Winbutton_val(1) = 4d_arr_rx(4)
                        Winbutton_val(2) = 4d_arr_rx(5)
                   '  Lcd "Winbutton "
                     Case Angularmeter:                                            '7
                        Angularmeter_idx = 4d_arr_rx(3)
                        Angularmeter_val(1) = 4d_arr_rx(4)
                        Angularmeter_val(2) = 4d_arr_rx(5)
                    ' Lcd "Angularmeter "
                     Case Coolgauge:                                               '8
                        Coolgauge_idx = 4d_arr_rx(3)
                        Coolgauge_val(1) = 4d_arr_rx(4)
                        Coolgauge_val(2) = 4d_arr_rx(5)
                   '  Lcd "Coolgauge "
                     Case Customdigits:                                            '9
                        Customdigits_idx = 4d_arr_rx(3)
                        Customdigits_val(1) = 4d_arr_rx(4)
                        Customdigits_val(2) = 4d_arr_rx(5)
                   '  Lcd "Customdigits "
                     Case Form:                                                    '10
                        Form_idx = 4d_arr_rx(3)
                        Form_val(1) = 4d_arr_rx(4)
                        Form_val(2) = 4d_arr_rx(5)
                   '  Lcd "Form "
                     Case Gauge:                                                   '11
                        Gauge_idx = 4d_arr_rx(3)
                        Gauge_val(1) = 4d_arr_rx(4)
                        Gauge_val(2) = 4d_arr_rx(5)
                   '  Lcd "Gauge "
                     Case Image:                                                   '12
                  'Image_idx = 4d_arr_rx(3)
                  'Image_val(1) = 4d_arr_rx(4)
                  'Image_val(2) = 4d_arr_rx(5)
                   ' lcd , "Image "
                     Case Keyboard:                                                '13
                        Keyboard_idx = 4d_arr_rx(3)
                        Keyboard_val(1) = 4d_arr_rx(4)
                        Keyboard_val(2) = 4d_arr_rx(5)
                   '  Lcd "Keyboard "
                     Case Led:                                                     '14
                        Led_idx = 4d_arr_rx(3)
                        Led_val(1) = 4d_arr_rx(4)
                        Led_val(2) = 4d_arr_rx(5)
                   '  Lcd "Led "
                     Case Leddigits:                                               '15
                        Leddigits_idx = 4d_arr_rx(3)
                        Leddigits_val(1) = 4d_arr_rx(4)
                        Leddigits_val(2) = 4d_arr_rx(5)
                   '  Lcd "Leddigits "
                     Case Meter:                                                   '16
                        Meter_idx = 4d_arr_rx(3)
                        Meter_val(1) = 4d_arr_rx(4)
                        Meter_val(2) = 4d_arr_rx(5)
                   '  Lcd "Meter "
                     Case Strings:                                                 '17
                        Strings_idx = 4d_arr_rx(3)
                        Strings_val(1) = 4d_arr_rx(4)
                        Strings_val(2) = 4d_arr_rx(5)
                   '  Lcd "Strings "
                     Case Thermometer:                                             '18
                        Thermometer_idx = 4d_arr_rx(3)
                        Thermometer_val(1) = 4d_arr_rx(4)
                        Thermometer_val(2) = 4d_arr_rx(5)
                   '  Lcd "Thermometer "
                     Case Userled:                                                 '19
                        Userled_idx = 4d_arr_rx(3)
                        Userled_val(1) = 4d_arr_rx(4)
                        Userled_val(2) = 4d_arr_rx(5)
                    ' Lcd "Userled "
                     Case Video:                                                   '20
                        Video_idx = 4d_arr_rx(3)
                        Video_val(1) = 4d_arr_rx(4)
                        Video_val(2) = 4d_arr_rx(5)
                  '   Debug "Video "
                     Case Statictext:                                              '21
                  'Statictext_idx = 4d_arr_rx(3)
                  'Statictext_val(1) = 4d_arr_rx(4)
                  'Statictext_val(2) = 4d_arr_rx(5)
                  '   lcd  "Statictext "
                     Case S_ound:                                                  '22
                        S_ound_idx = 4d_arr_rx(3)
                        S_ound_val(1) = 4d_arr_rx(4)
                        S_ound_val(2) = 4d_arr_rx(5)
                   '  Lcd "S_ound "
                     Case T_imer:                                                  '23
                        T_imer_idx = 4d_arr_rx(3)
                        T_imer_val(1) = 4d_arr_rx(4)
                        T_imer_val(2) = 4d_arr_rx(5)
                   '  Lcd "T_imer "
                     Case Spectrum:                                                '24
                        Spectrum_idx = 4d_arr_rx(3)
                        Spectrum_val(1) = 4d_arr_rx(4)
                        Spectrum_val(2) = 4d_arr_rx(5)
                   '  Lcd "Spectrum "
                     Case Scope:                                                   '25
                        Scope_idx = 4d_arr_rx(3)
                        Scope_val(1) = 4d_arr_rx(4)
                        Scope_val(2) = 4d_arr_rx(5)
                   '  Lcd "Scope "
                     Case Tank:                                                    '26
                        Tank_idx = 4d_arr_rx(3)
                        Tank_val(1) = 4d_arr_rx(4)
                        Tank_val(2) = 4d_arr_rx(5)
                   '  Lcd "Tank "
                     Case Userimages:                                              '27
                        Userimages_idx = 4d_arr_rx(3)
                        Userimages_val(1) = 4d_arr_rx(4)
                        Userimages_val(2) = 4d_arr_rx(5)
                   '  Lcd "Userimages "
                     Case Pinoutput:                                               '28
                        Pinoutput_idx = 4d_arr_rx(3)
                  'Pinoutput_val(1) = 4d_arr_rx(4)
                        Pinoutput_val = 4d_arr_rx(5)
                   '  Lcd "Pinoutput "
                     Case Pininput:                                                '29
                        Pininput_idx = 4d_arr_rx(3)
                  'Pininput_val(1) = 4d_arr_rx(4)
                        Pininput_val = 4d_arr_rx(5)
                   '  Lcd "Pininput "
                     Case 4dbutton:                                                '30
                        4dbutton_idx = 4d_arr_rx(3)
                        4dbutton_val(1) = 4d_arr_rx(4)
                        4dbutton_val(2) = 4d_arr_rx(5)
                  '   State_button = 4d_arr_rx(5)
                  '   Printbin#1 , &H06
                     Case Anibutton:                                               '31
                        Anibutton_idx = 4d_arr_rx(3)
                        Anibutton_val(1) = 4d_arr_rx(4)
                        Anibutton_val(2) = 4d_arr_rx(5)
                   '  Lcd "Anibutton "
                     Case Colorpicker:                                             '32
                        Colorpicker_idx = 4d_arr_rx(3)
                        Colorpicker_val(1) = 4d_arr_rx(4)
                        Colorpicker_val(2) = 4d_arr_rx(5)
                   '  Lcd "Colorpicker "
                     Case Userbutton:                                              '33
                        Userbutton_idx = 4d_arr_rx(3)
                        Userbutton_val(1) = 4d_arr_rx(4)
                        Userbutton_val(2) = 4d_arr_rx(5)
                   '  Lcd "Userbutton "
                     Case Magicobject:                                             '34
                        Magicobject_idx = 4d_arr_rx(3)
                        Magicobject_val(1) = 4d_arr_rx(4)
                        Magicobject_val(2) = 4d_arr_rx(5)
                   '  Lcd "Magicobject "
                     Case Smartgauge:                                              '35
                        Smartgauge_idx = 4d_arr_rx(3)
                        Smartgauge_val(1) = 4d_arr_rx(4)
                        Smartgauge_val(2) = 4d_arr_rx(5)
                   '  Lcd "Smartgauge "
                     Case Smartslider:                                             '36
                        Smartslider_idx = 4d_arr_rx(3)
                        Smartslider_val(1) = 4d_arr_rx(4)
                        Smartslider_val(2) = 4d_arr_rx(5)
                   '  Lcd "Smartslider "
                     Case Smartknob:                                               '37
                        Smartknob_idx = 4d_arr_rx(3)
                        Smartknob_val(1) = 4d_arr_rx(4)
                        Smartknob_val(2) = 4d_arr_rx(5)
                   '  Lcd "Smartknob "
                     Case Else:
                   '  Lcd "Event report wrong ID: " ; 4d_arr_rx(3)
                        Clear Serialin
                   '  Lcd "S_pace" ; S_pace
                   '  Lcd , "frame error"
                  End Select
                  else
                    Clear Serialin
                   Printbin #1 , &H15                       '***********************************************added
                lcd "object CRC error"
               End If
            Case A_ck:                                                             '&H06    ACK
            'Print #1 , "ACK"
            'Ack_flag.0 = 0

'*****************************  rapports "EVENEMENTS (07)" ***************
'***************************** quand un objet est activé ******************

            Case Report_event:                                                     '&H07

               Inputbin #1 , 4d_arr_rx(2) , 5                                      'get next 5
               Xor_crc = Xor_this(4d_arr_rx(1))                                    ' check the crc
               If 4d_arr_rx(6) = Xor_crc Then                                      'if crc ok then check what came
                printbin #1, &h06 '**************************************added
                  Select Case 4d_arr_rx(2)                                         'object ID
                     Case Dipswitch:                                               '0
                        Dipswitch_idx = 4d_arr_rx(3)
                        Dipswitch_val(1) = 4d_arr_rx(4)
                        Dipswitch_val(2) = 4d_arr_rx(5)
                  '   Lcd "Dipswitch "
                     Case Knob:                                                    '1
                        Knob_idx = 4d_arr_rx(3)
                        Knob_val(1) = 4d_arr_rx(4)
                        Knob_val(2) = 4d_arr_rx(5)
                  '   Lcd "Knob "
                     Case Rockerswitch:                                            '2
                        Rockerswitch_idx = 4d_arr_rx(3)
                        Rockerswitch_val(1) = 4d_arr_rx(4)
                        Rockerswitch_val(2) = 4d_arr_rx(5)
                  '   Lcd "Rockerswitch "
                     Case Rotaryswitch:                                            '3
                        Rotaryswitch_idx = 4d_arr_rx(3)
                        Rotaryswitch_val(1) = 4d_arr_rx(4)
                        Rotaryswitch_val(2) = 4d_arr_rx(5)
                  '   Lcd "Rotaryswitch "
                     Case Slider:                                                  '4
                        Slider_idx = 4d_arr_rx(3)
                        Slider_val(1) = 4d_arr_rx(4)
                        Slider_val(2) = 4d_arr_rx(5)
                  '   Lcd "Slider "
                     Case Trackbar:                                                '5
                        Trackbar_idx = 4d_arr_rx(3)
                        Trackbar_val(1) = 4d_arr_rx(4)
                        Trackbar_val(2) = 4d_arr_rx(5)
                  '   Lcd "Trackbar "
                     Case Winbutton:                                               '6
                        Winbutton_idx = 4d_arr_rx(3)
                        Winbutton_val(1) = 4d_arr_rx(4)
                        Winbutton_val(2) = 4d_arr_rx(5)
                  '   Lcd "Winbutton "
                     Case Angularmeter:                                            '7
                        Angularmeter_idx = 4d_arr_rx(3)
                        Angularmeter_val(1) = 4d_arr_rx(4)
                        Angularmeter_val(2) = 4d_arr_rx(5)
                  '   Lcd "Angularmeter "
                     Case Coolgauge:                                               '8
                        Coolgauge_idx = 4d_arr_rx(3)
                        Coolgauge_val(1) = 4d_arr_rx(4)
                        Coolgauge_val(2) = 4d_arr_rx(5)
                  '   Lcd "Coolgauge "
                     Case Customdigits:                                            '9
                        Customdigits_idx = 4d_arr_rx(3)
                        Customdigits_val(1) = 4d_arr_rx(4)
                        Customdigits_val(2) = 4d_arr_rx(5)
                  '   Lcd "Customdigits "
                     Case Form:                                                    '10
                        Form_idx = 4d_arr_rx(3)
                        Form_val(1) = 4d_arr_rx(4)
                        Form_val(2) = 4d_arr_rx(5)
                  '   Lcd "Form "
                     Case Gauge:                                                   '11
                        Gauge_idx = 4d_arr_rx(3)
                        Gauge_val(1) = 4d_arr_rx(4)
                        Gauge_val(2) = 4d_arr_rx(5)
                  '   Lcd "Gauge "
                     Case Image:                                                   '12
                  'Image_idx = 4d_arr_rx(3)
                  'Image_val(1) = 4d_arr_rx(4)
                  'Image_val(2) = 4d_arr_rx(5)
                  '   Lcd "Image "
                     Case Keyboard:                                                '13
                        Keyboard_idx = 4d_arr_rx(3)
                        Keyboard_val(1) = 4d_arr_rx(4)
                        Keyboard_val(2) = 4d_arr_rx(5)
                  '   Lcd "Keyboard "
                     Case Led:                                                     '14
                        Led_idx = 4d_arr_rx(3)
                        Led_val(1) = 4d_arr_rx(4)
                        Led_val(2) = 4d_arr_rx(5)
                  '   Lcd "Led "
                     Case Leddigits:                                               '15
                        Leddigits_idx = 4d_arr_rx(3)
                        Leddigits_val(1) = 4d_arr_rx(4)
                        Leddigits_val(2) = 4d_arr_rx(5)
                  '   Lcd "Leddigits "
                     Case Meter:                                                   '16
                        Meter_idx = 4d_arr_rx(3)
                        Meter_val(1) = 4d_arr_rx(4)
                        Meter_val(2) = 4d_arr_rx(5)
                  '   Lcd "Meter "
                     Case Strings:                                                 '17
                        Strings_idx = 4d_arr_rx(3)
                        Strings_val(1) = 4d_arr_rx(4)
                        Strings_val(2) = 4d_arr_rx(5)
                  '   Lcd "Strings "
                     Case Thermometer:                                             '18
                        Thermometer_idx = 4d_arr_rx(3)
                        Thermometer_val(1) = 4d_arr_rx(4)
                        Thermometer_val(2) = 4d_arr_rx(5)
                  '   Lcd "Thermometer "
                     Case Userled:                                                 '19
                        Userled_idx = 4d_arr_rx(3)
                        Userled_val(1) = 4d_arr_rx(4)
                        Userled_val(2) = 4d_arr_rx(5)
                  '   Lcd "Userled "
                     Case Video:                                                   '20
                        Video_idx = 4d_arr_rx(3)
                        Video_val(1) = 4d_arr_rx(4)
                        Video_val(2) = 4d_arr_rx(5)
                  '   Debug "Video "
                     Case Statictext:                                              '21
                  'Statictext_idx = 4d_arr_rx(3)
                  'Statictext_val(1) = 4d_arr_rx(4)
                  'Statictext_val(2) = 4d_arr_rx(5)
                  '   Lcd "Statictext "
                     Case S_ound:                                                  '22
                        S_ound_idx = 4d_arr_rx(3)
                        S_ound_val(1) = 4d_arr_rx(4)
                        S_ound_val(2) = 4d_arr_rx(5)
                  '   Lcd "S_ound "
                     Case T_imer:                                                  '23
                        T_imer_idx = 4d_arr_rx(3)
                        T_imer_val(1) = 4d_arr_rx(4)
                        T_imer_val(2) = 4d_arr_rx(5)
                  '   Lcd "T_imer "
                     Case Spectrum:                                                '24
                        Spectrum_idx = 4d_arr_rx(3)
                        Spectrum_val(1) = 4d_arr_rx(4)
                        Spectrum_val(2) = 4d_arr_rx(5)
                  '   Lcd "Spectrum "
                     Case Scope:                                                   '25
                        Scope_idx = 4d_arr_rx(3)
                        Scope_val(1) = 4d_arr_rx(4)
                        Scope_val(2) = 4d_arr_rx(5)
                  '   Lcd "Scope "
                     Case Tank:                                                    '26
                        Tank_idx = 4d_arr_rx(3)
                        Tank_val(1) = 4d_arr_rx(4)
                        Tank_val(2) = 4d_arr_rx(5)
                  '   Lcd "Tank "
                     Case Userimages:                                              '27
                        Userimages_idx = 4d_arr_rx(3)
                        Userimages_val(1) = 4d_arr_rx(4)
                        Userimages_val(2) = 4d_arr_rx(5)
                  '   Lcd "Userimages "
                     Case Pinoutput:                                               '28
                        Pinoutput_idx = 4d_arr_rx(3)
                  '  Pinoutput_val(1) = 4d_arr_rx(4)
                        Pinoutput_val = 4d_arr_rx(5)
                  '   Lcd "Pinoutput "
                     Case Pininput:                                                '29
                        Pininput_idx = 4d_arr_rx(3)
                  '  Pininput_val(1) = 4d_arr_rx(4)
                        Pininput_val = 4d_arr_rx(5)
                   '  Lcd "Pininput "
                     Case 4dbutton:                                                '30
                        4dbutton_idx = 4d_arr_rx(3)
                        4dbutton_val(1) = 4d_arr_rx(4)
                        4dbutton_val(2) = 4d_arr_rx(5)
                        State_button_4d = 4d_arr_rx(5)                             '<<<<<<< ad State button
                  '  Printbin#1 , &H06
                     Case Anibutton:                                               '31
                        Anibutton_idx = 4d_arr_rx(3)
                        Anibutton_val(1) = 4d_arr_rx(4)
                        Anibutton_val(2) = 4d_arr_rx(5)
                  '   Lcd "Anibutton "
                     Case Colorpicker:                                             '32
                        Colorpicker_idx = 4d_arr_rx(3)
                        Colorpicker_val(1) = 4d_arr_rx(4)
                        Colorpicker_val(2) = 4d_arr_rx(5)
                  '   Lcd "Colorpicker "
                     Case Userbutton:                                              '33
                        Userbutton_idx = 4d_arr_rx(3)
                        Userbutton_val(1) = 4d_arr_rx(4)
                        Userbutton_val(2) = 4d_arr_rx(5)
                  '   Lcd "Userbutton "
                     Case Magicobject:                                             '34
                        Magicobject_idx = 4d_arr_rx(3)
                        Magicobject_val(1) = 4d_arr_rx(4)
                        Magicobject_val(2) = 4d_arr_rx(5)
                  '   Lcd "Magicobject "
                     Case Smartgauge:                                              '35
                        Smartgauge_idx = 4d_arr_rx(3)
                        Smartgauge_val(1) = 4d_arr_rx(4)
                        Smartgauge_val(2) = 4d_arr_rx(5)
                  '   Lcd "Smartgauge "
                     Case Smartslider:                                             '36
                        Smartslider_idx = 4d_arr_rx(3)
                        Smartslider_val(1) = 4d_arr_rx(4)
                        Smartslider_val(2) = 4d_arr_rx(5)
                  '   Lcd "Smartslider "
                     Case Smartknob:                                               '37
                        Smartknob_idx = 4d_arr_rx(3)
                        Smartknob_val(1) = 4d_arr_rx(4)
                        Smartknob_val(2) = 4d_arr_rx(5)
                   '  Lcd "Smartknob "
                     Case Else:

                        Clear Serialin

                  End Select
               Else
                 Clear Serialin
               Printbin #1 , &H15                           '**********************************************added

                lcd "event CRC error"
               End If

            Case A_ck:
           ' Ack_flag = 1                                                        '&h15  NAK

               Clear Serialin

            Case Else:
        '  Ack_flag = 0
               Clear Serialin

         End Select

      End If


Loop
End

Close #1



Regards
Pikczu
Back to top
View user's profile
Display posts from previous:   
Post new topic   Reply to topic    www.mcselec.com Forum Index -> BASCOM-AVR All times are GMT + 1 Hour
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum